2

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

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

谢谢。

4

2 回答 2

20

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

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

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

db = 10 * log10 (level);

其中 db 是分贝,level 是范围从 0.0 到 1.0 的标量值。所以当级别为 0.0(静音)时,结果是负无穷大。

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

于 2009-12-31T00:09:59.113 回答
3

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

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

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

于 2009-08-06T19:31:57.650 回答