我想生成一个音频频谱(如这个视频)的 mp3 音频文件。基本上这个问题需要计算音频信号的 fft。我如何用 C/C++ 编程?
我查看了几个开源库,例如FFTW我真的不知道如何使用这些来解决我的问题。任何帮助将不胜感激。提前致谢!
SO 上已经有很多类似/相关的问题,这些问题非常值得一读,因为答案包含很多有用的信息和建议,但本质上你需要这样做:
- 将音频数据转换为FFT所需的格式(例如int -> float,具有独立的L/R通道);
- 适用合适窗函数 (e.g. Hann 又名汉宁窗)
- 应用 FFT(注意:如果使用典型的复数到复数 FFT,则将输入数组中的所有虚部设置为零);
- 计算前 N/2 个 FFT 输出 bin 的幅度 (
sqrt(re*re + im*im)
);
- 可选择将幅度转换为 dB(对数)刻度(
20 * log10(magnitude)
or 10 * log10(re*re + im*im)
);
- 绘制 N/2(对数)幅度值。
请注意,虽然 FFTW 是一种非常好且非常快的 FFT,但对于初学者来说可能有点不知所措 - 如果您想将其作为商业产品的一部分,它也非常昂贵。我建议从KissFFT反而。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)