如何在C ++中使用wav文件显示频谱图?

时间:2018-01-29 22:21:55

标签: audio signal-processing fft wav spectrogram

我正在做一个项目,我希望将图像嵌入到.wav文件中,以便当使用某些参数看到频谱图时,他们会看到隐藏的图像。我的问题是,在C ++中,如何在不使用任何信号处理库的情况下使用wav文件中的数据显示频谱图?

对数学的解释(特别是Hanning窗口)也会有很大帮助,我对信号处理还是个新手。此外,由于这是一个非常广泛的问题,因此详细步骤优于实际代码。

实施例

以上:输出谱图; 下面:输入音频波形(.wav文件)

above: output spectrogram; below: input audio waveform

1 个答案:

答案 0 :(得分:1)

一些步骤(为每个步骤编写C代码):

将数据转换为数字样本数组。

将样本数组切成一定大小的块,(通常)重叠。

(通常)具有一些窗口功能的窗口。

FFT每个块。

拿大小。

(通常)记录日志。

将所有1D FFT结果向量汇总到2D矩阵中。

缩放。

为矩阵着色。

渲染2D位图。

(可选)(通过将上述部分内容滚动到循环中进行优化。)

添加绘图装饰(比例,网格标记等)