AVAudioRecorder的peakPowerForChannel和averagePowerForChannel方法有什么区别?
为什么返回的值是负数?不是没有声音它应该是0,当声音的幅度上升时它会上升吗?如何转换为更“可读”的格式?
感谢。
答案 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将是最大响度,任何比这更安静的可以表示为分贝的下降。
正面和负面无所谓。请记住,这是一个对数刻度,您可以测量响度(或感知响度)的差异。