WebAudio API允许我使用create an AnalyserNode,它可以让我访问一组音频采样的FFT计算频谱(无论是无符号字节数组还是浮点数阵列-1
至1
)。我希望我可以使用这些值来计算同一组样本的总体功率(RMS)。从频谱功率水平恢复RMS和/或峰值(FFT输出)
我不认为这是像32个窗口值一样简单,将它们相加并除以32.(0dB的正弦波只会填满一个窗口,其中一些相邻窗口稍微点亮,而0dB处的白噪声会填满所有窗口。)是否可以从FFT/DFT输出中计算出RMS值?
我想这样做的原因是我需要建立一个有效的RMS计。虽然我可以访问原始样本,但是处理它们甚至可以在每个缓冲区中找到一个峰值,这是过多的开销。浏览器以本机代码运行FFT,比用JavaScript做所有这些计算要有效得多。如果我可以从32个FFT窗口计算RMS,那将更有效率。
谢谢你的回答。不幸的是,根据http://lists.w3.org/Archives/Public/public-audio/2012OctDec/0684.html上的信息,似乎在FFT之前使用了Blackman窗口。看起来我无法从结果中计算出正确的RMS值,但您的答案无论如何都是有帮助的! – Brad