我使用了来自Analyzer节点的FFT数据,使用Web Audio API中的getByteFrequencyData
方法创建了一个频谱可视化工具,如下所示:
在这个例子中,我有256个数据库。这个数字到底对应的是什么?它是每个频率成分的分贝水平。如果是这样,我怎么知道每个bin的频率值对应于什么?
我想知道,所以我可以尝试构建图形方程,因此想知道在哪些点指示滤波器频段。理想情况下,我想表示20Hz到20kHz的频率,并相应地绘制它们之间的间隔。
感谢您的帮助。
答案 0 :(得分:32)
是的,getByteFrequencyData
会产生0到255之间的标准化数组。
(它将数据复制到传入的数组中。)
频段被平分,因此数组的每个元素N对应于:
N * samplerate/fftSize
所以,第一个bin是0
并且,假设采样率为44100且<analyzerNode>.fftSize
为512,则第二个采样率为:86.13 Hz,依此类推......
请注意,您的采样数据的长度是<analyzerNode>.fftSize
的一半,有效地将频率范围限制为采样率的一半。
答案 1 :(得分:5)
使用256个箱,每个箱将相隔约86 Hz(44100 kHz采样率/ fftSize,其中fftSize是箱数的两倍)。所以你从0开始,从那里以86 Hz的增量上升。
箱中的实际值只是表示信号中每个频率的存在量(即频率的“响亮程度”)。
答案 2 :(得分:0)
TL;DR 我想它会产生 dBu
如果有人,就像我不是音频工程师一样,努力为 getByteFrequencyData
/getFloatFrequencyData
的结果找出适当的比例(它的实际含义),这是我的发现:< /p>
frequency data
到 dB value
本身Y[k]=20log10X^[k]