AVAudioRecorder:峰值和平均功率
Posted
技术标签:
【中文标题】AVAudioRecorder:峰值和平均功率【英文标题】:AVAudioRecorder: peak and average power 【发布时间】:2009-08-06 19:23:56 【问题描述】:AVAudioRecorder 的 peakPowerForChannel 和 averagePowerForChannel 方法有什么区别?
为什么返回的值是负数?不应该是0表示没有声音,当声音的幅度上升时上升?如何转换为更“可读”的格式?
谢谢。
【问题讨论】:
【参考方案1】:峰值功率意味着取所有样本的所有绝对值的最大值。这对于防止音频剪辑很有用。
平均功率是样本的 RMS(均方根)。这对于确定音频对人耳的声音有多大很有用。
该值为负数,因为它以分贝表示,其中 0 dB 等于音频系统的最大值。是一个log10的尺度,换算公式是:
db = 10 * log10 (level);
其中 db 是分贝,level 是范围从 0.0 到 1.0 的标量值。所以当level为0.0(静音)时,结果为负无穷。
如果您想要“可读”格式,您可以使用电平表(UIProgressView 或您自己的),最大值为 0.0,最小值为 -60.0(您可以根据本底噪声进行调整)。一旦你习惯了分贝,它们就会比线性水平更有意义。
【讨论】:
【参考方案2】:虽然我没有查看这些值,但由于它与音量有关,我猜它是以分贝的变化来衡量的。
0 表示最大响度,任何比这更安静的都可以表示为分贝的下降。
正面和负面无关紧要。请记住,它是一个对数刻度,用于测量响度(或感知响度)的差异。
【讨论】:
以上是关于AVAudioRecorder:峰值和平均功率的主要内容,如果未能解决你的问题,请参考以下文章