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

Aru*_*n K 3 amplitude avaudiorecorder ios swift

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

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

但这给出了一个值 nan(不是数字)。我怎样才能获得正范围内的振幅值。

Dan*_*ang 5

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

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

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

let db = audioRecorder.peakPowerForChannel(0)
let result = pow(10.0, db / 20.0) * 120.0
Run Code Online (Sandbox Code Playgroud)

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