AVA录音机!我需要从 0 到 120 ios swift 范围内的振幅分贝值?

AVAudioRecorder! I need to have decibel values from amplitude on a scale of 0 to 120 ios swift?

我从 AVAudioRecorder.peakPowerForChannel(0) 得到从 -70 到大约 10 的振幅值。我需要 0 到 120 范围内的值,我是怎么做到的。我需要从整个音频中获得最高的振幅值。 在网上看到这段代码

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

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

函数 peakPowerForChannel() 通常 return 是一个从 -160 dB 到 0 dB 的对数标度分贝值。

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

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

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

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