我正在尝试在 Qt 中为声音数据绘制正确的频谱图。现在我可以绘制一个漂亮的频谱图,其 fft 窗口长度为 1024,重叠数据长度为 976。但通常使用小窗口长度来绘制频谱图,例如 256,这会给我一个更好的时间分辨率。但是当我将窗口长度减少到 256 时,我在频谱图中得到了空行。我知道减少窗口长度会导致 FFT 的频率分辨率较低,但为什么其他程序的频谱图中没有任何空行。我做错了什么还是这个结果正常?
以下是我用来获取频谱图的主要步骤: - 从声音文件中获取数据。-FFT 在第一个窗口(汉宁)。- 将复数 fft 输出转换为幅度数组(幅度 = sqrt(re^2 + im^2)) - 将幅度转换为对数刻度(dB)幅度_dB = 20*log10(幅度) - 通过缩放绘制频谱图的第一列将光谱数据固定到列中 - 将窗口移动 48 个样本,以进行下一步操作..
您可以在这些屏幕截图上看到问题: 窗口长度 1024 窗口长度 256
(顺便说一句,我的目标是制作一个可以从语音数据中识别音素的程序。使用 FFTW 库)
我非常感谢您能提供的任何帮助。