我正在尝试使用网络音频 API 对从麦克风获取的数据进行频率分析。我需要实时数据(您可以通过 1024 个样本的窗口大小获得实时数据)。
我使用
createMediaStreamSource
作为源节点。我通过 getByteFrequencyData
方法 (sample size = 1024
) 使用了来自分析器节点的 FFT 数据。
FFT 数组的数据在 Chrome 和 Firefox 中完全不同(在 Firefox 中,频谱总是尺寸较小(矢量维度较小)且值较小(值较低),而 Chrome 与其他 FFT 相比似乎还不错例如 Audacity 中的算法)。即使我使用来自 https://webaudiodemos.appspot.com/AudioRecorder/index.html 的音频录音机并将录音放入其中一个音频分析器应用程序(Windows 上的audacity)中,我也会得到 这个(图像)。
我想知道为什么 Firefox 中的频谱与 Chrome 中的频谱不同。
感谢您的帮助。
这是因为我们 (Firefox) 自动对输入应用处理(回声消除、噪声抑制)并在输入音频流上使用 16kHz 采样率。
情况将会改变,但现在就是这样,对此感到抱歉。
将来可以请求输入采样率并停用任何处理。
我对 Web Audio API 也有类似的相关问题,Android 中的 Chrome、Opera、Edge 浏览器似乎将音频采样率限制为 16kHz,但对于 Firefox,它似乎在 48kHz 下工作得很好。我的帖子在以下链接:
JavaScript Web Audio API - Android 上的音频采样率问题 JavaScript Web Audio API - Android 上的音频采样率问题