Javascript 使用AnalyzerNode提高FFT分辨率

Javascript 使用AnalyzerNode提高FFT分辨率,javascript,signal-processing,web-audio-api,audiocontext,Javascript,Signal Processing,Web Audio Api,Audiocontext,我想使用AnalyzerNode可能有点困惑。我目前已将我的userAudio流“line in”连接到AnalyzerNode。然后,我使用getByteFrequencyData()填充UINT8数组 当我播放单个440Hz音调时,阵列中强度最高的频率将为468Hz或421Hz(取决于我的变化程度)。有没有办法提高这些频率附近的分辨率,使其在468和421Hz之间有更多的频率 当我用440Hz的音调绘制fft数据时,你可以看到468Hz和421Hz的两个强频率。是否有办法将FFT数据平均化到

我想使用AnalyzerNode可能有点困惑。我目前已将我的userAudio流“line in”连接到AnalyzerNode。然后,我使用
getByteFrequencyData()
填充UINT8数组

当我播放单个440Hz音调时,阵列中强度最高的频率将为468Hz或421Hz(取决于我的变化程度)。有没有办法提高这些频率附近的分辨率,使其在468和421Hz之间有更多的频率

当我用440Hz的音调绘制fft数据时,你可以看到468Hz和421Hz的两个强频率。是否有办法将FFT数据平均化到一个单独的数组中,以便平均468Hz和421Hz(以及其他点)数据点的强度?我想这就像在频率之间插入数据


JSFiddle:(我不确定这是否真的有效,因为我现在的电脑上没有麦克风)。

这项技术来得有点晚,但也许有人会发现它很有用

您可以使用AnalyzerNode的特性提高fft的“分辨率”


由于fftSize最大值是有限的(我相信在写这篇文章的时候大约是2^15),因此最终仍然会得到相当不精确的值。可以使用

提高精度。您可以将信号频率(使用回放速率或失谐)移到较低的频率,然后分析该信号。(可能一些过滤会有所帮助)。您使用的FFT大小是多少(如果不是默认值2048)?你能展示一些代码/创建一个小提琴吗?我只是使用默认的2048。稍后我将附加一个JSFIDLE。这可能会有帮助: