WebAudio API 允许我创建一个 AnalyserNode,它可以让我访问 FFT 计算的一组音频样本的频谱(在无符号字节数组或浮点数组-1
中1
)。我希望我可以使用这些值来计算同一组样本的总功率 (RMS)。
我认为这并不像取 32 个窗口值那样简单,将它们相加并除以 32。(0dB 的正弦波只会填满一个窗口,而一些相邻的窗口会略微亮起,而白噪声在0dB 会填满所有窗口。)是否可以从 FFT/DFT 输出中计算出 RMS 值?
我想这样做的原因是我需要构建一个高效的 RMS 仪表。虽然我可以访问原始样本,但处理它们甚至找到每个缓冲区的峰值都是太多的开销。浏览器在本机代码中运行其 FFT,并且比尝试在 JavaScript 中进行所有这些计算要高效得多。如果我可以从 32 个 FFT 窗口计算 RMS,那效率会更高。