2

我想我可能对使用 AnalyserNode 有点困惑。我目前将我的 userAudio 流“line-in”连接到 AnalyserNode。然后我使用getByteFrequencyData().

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

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

JSFiddle: http: //jsfiddle.net/puYw3/(我不确定这是否真的有效,因为我当前的计算机上没有麦克风)。

4

1 回答 1

1

有点晚了,但也许有人会发现它有用。

您可以使用 AnalyserNode 的fftSize属性来增加 fft 的“分辨率” 。

由于 fftSize 最大值是有限的(我相信在撰写本文时大约为 2^15),您最终仍会得到相当不精确的值。可以使用抛物线峰值插值来提高精度

于 2016-05-14T12:27:28.123 回答