AVAudioRecorder:峰值和平均功率

时间:2009-08-06 19:23:57

标签: iphone cocoa-touch avaudiorecorder

AVAudioRecorder的peakPowerForChannel和averagePowerForChannel方法有什么区别?

为什么返回的值是负数?不是没有声音它应该是0,当声音的幅度上升时它会上升吗?如何转换为更“可读”的格式?

感谢。

2 个答案:

答案 0 :(得分:14)

峰值功率意味着获取所有样本的所有绝对值的最大值。它对于防止音频剪辑非常有用。

平均功率是样本的RMS(均方根)。这对于确定音频对人耳的声音有多大是有用的。

该值为负,因为它以分贝表示,其中0 dB等于音频系统的最大值。它是log10比例,转换公式为:

db = 10 * log10 (level);

其中db是分贝,level是标量值,范围从0.0到1.0。所以当水平为0.0(无声)时,结果为负无穷大。

如果你想要一个“可读”的格式,你可以使用一个电平表(UIProgressView或你自己的),其中最大值为0.0,最小值为-60.0(你可以根据本底噪声进行调整)。一旦习惯了分贝,它们就比线性水平更有意义。

答案 1 :(得分:2)

虽然我没有查看这些值,但由于它与音量有关,我猜它是以分贝的变化来衡量的。

0将是最大响度,任何比这更安静的可以表示为分贝的下降。

正面和负面无所谓。请记住,这是一个对数刻度,您可以测量响度(或感知响度)的差异。