为什么缩小窗口长度会导致频谱图中的空行?

时间:2013-05-20 12:23:05

标签: c++ fft speech-recognition fftw spectrogram

我正试图在Qt中为声音数据绘制合适的频谱图。现在我可以绘制一个漂亮的频谱图,其fft窗口长度为1024,重叠数据长度为976.但通常使用较小的窗口长度绘制频谱图,如256,这将给我一个更好的时间分辨率。但是当我将窗口长度减少到256时,我会在频谱图中得到空行。我知道缩小窗口长度会导致FFT的频率分辨率低,但为什么其他程序的频谱图中没有空行。我做错了什么还是这个结果正常?

以下是我用于获取光谱图的主要步骤: - 从声音文件中获取数据。 -FFT在第一个窗口(hanning)。 - 将复数fft输出转换为幅度数组(幅度= sqrt(re ^ 2 + im ^ 2)) - 转换幅度到对数刻度(dB)magnitude_dB = 20 * log10(幅度) - 通过缩放光谱数据将其固定到色谱柱中,绘制光谱图的第一列 - 移动窗口48个样本,进行下一步操作..

您可以在这些屏幕截图中看到问题: window length 1024 window length 256

(顺便说一下,我的目标是制作一个可以从语​​音数据识别手机的程序。使用FFTW库)

我非常感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

较短FFT长度的较低分辨率也意味着每个FFT结果仓的带宽更宽。因此,光谱图需要较粗的行线来覆盖每行的较宽带宽,以填充图中线条之间的间隙。