将数据从较小的 AudioBuffers 复制到较大的 Float32Array

Copy data from smaller AudioBuffers into a bigger Float32Array

我想在浏览器中分析来自分辨率 <1Hz 的麦克风输入的频率。

普通网络音频分析器节点的最大值 FFT_SIZE 为 32768。这导致 分辨率约为 1.4Hz对于正常采样率 (48kHz)。

现在我想使用 jsfft 或类似的东西来做频率变换。我想收集 65536 个音频样本,因为这个 fft 大小应该达到 ~0.7Hz 的分辨率。 (时间分辨率不是那么重要)

不幸的是,ScriptProcessorNode 的最大 bufferSize 也只有 16384 我想将它的 4 个缓冲区组合成一个 Float32Array。 我还以为会有

copyChannelData(array, offset, length) 

但是只有

getChannelData(array)

因此,如果我理解正确,我必须先复制更大数组中的所有数据,然后才能执行 fft。

只是为了确保我没有遗漏任何东西...有没有办法将数据直接检索到我更大的数组中?

不,您需要复制数据。这种方法无论如何都非常低效(我的意思是 ScriptProcessor)- 副本并不是您最担心的事情,因为您基本上需要复制该数据。