3

我从 AVAudioRecorder.peakPowerForChannel(0) 获得从 -70 到大约 10 的幅度值。我需要 0 到 120 范围内的值我是如何做到的。我需要从整个音频中获得最高的振幅值。在互联网上看到此代码

var numver = 20 * log10(audioRecorder.peakPowerForChannel(0))

但这给出了一个值 nan(不是数字)。如何获得正范围内的幅度值。

4

1 回答 1

3

函数 peakPowerForChannel() 通常返回从 -160 dB 到 0 dB 的对数刻度分贝值。

当功率超过 0 dB 的电平时,它可以返回一个大于零的值。

要将 0 到 120 的值转换为线性刻度,请使用以下公式。

let db = audioRecorder.peakPowerForChannel(0)
let result = pow(10.0, db / 20.0) * 120.0

您可以使用 max() 或 min() 函数选择是保留还是丢弃超过 120 的值。

于 2016-08-12T13:37:07.133 回答