Audio Web音频API中的FFT数据对应于什么?

Audio Web音频API中的FFT数据对应于什么?,audio,fft,html5-audio,web-audio-api,Audio,Fft,Html5 Audio,Web Audio Api,我已经使用Analyzer节点的FFT数据,使用Web Audio API中的getByteFrequencyData方法创建了频谱可视化工具,如下所示: 在本例中,我有256个数据箱。这个数字到底对应什么?它是每个频率分量的分贝级。如果是这样,我如何知道每个箱子的频率值对应于什么 我想知道,所以我可以在建立一个图形均衡器的实验,所以想知道在哪些点,以表明滤波器带。理想情况下,我希望表示从20Hz到20kHz的频率,并相应地绘制这些频率之间的间隔 感谢您的帮助。对于256个存储箱,每个存储箱的

我已经使用Analyzer节点的FFT数据,使用Web Audio API中的
getByteFrequencyData
方法创建了频谱可视化工具,如下所示:

在本例中,我有256个数据箱。这个数字到底对应什么?它是每个频率分量的分贝级。如果是这样,我如何知道每个箱子的频率值对应于什么

我想知道,所以我可以在建立一个图形均衡器的实验,所以想知道在哪些点,以表明滤波器带。理想情况下,我希望表示从20Hz到20kHz的频率,并相应地绘制这些频率之间的间隔


感谢您的帮助。

对于256个存储箱,每个存储箱的间隔约为86 Hz(44100 kHz采样率/fftSize,其中fftSize是存储箱数量的两倍)。所以你从零开始,然后以86赫兹的增量上升


存储箱中的实际值只是表示信号中每个频率的多少(即频率的“响亮程度”)

是,
getByteFrequencyData
会产生0到255之间的标准化值数组。 (它将数据复制到传入的数组中)

频带被平均分割,因此阵列中的每个元素N对应于:

N * samplerate/fftSize
因此,第一个bin是0。
并且,假设取样器为44100且<代码>为on:


请注意,sampledata的长度是
.fftSize
的一半,有效地将频率范围限制为samplerate的一半。

web audio api返回的存储箱数量是fftSize的一半。因此,我想你应该直接使用
fftSize
除以bins.length*2,或者更好,请参见我的答案;相反,它将频率数据值(0-255)复制到无符号数组(javascript中的Uint8Array())中,该数组作为参数传递到方法中。万一有人试图使用此方法调用的某种形式的返回值时被抓住……加油!不要吹毛求疵:]顺便说一句,默认采样率可能不同。对我来说是48000。人们应该检查
audioContext.sampleRate
是否有特定的值。对于任何想要了解更多信息的人来说,采样率的一半称为奈奎斯特频率。0Hz实际上是直流偏移量——因此,如果从原始信号中减去它,这个数字将使信号为零。这不是通常意义上的音频振幅。