其他分享
首页 > 其他分享> > 如何在C中使用fft生成音频频谱?

如何在C中使用fft生成音频频谱?

作者:互联网

我想生成一个mp3音频文件的音频频谱(如this video所示).基本上这个问题需要计算音频信号的fft.我如何用C/C++编程?

我看了几个开源库,如FFTW,我真的不知道如何使用这些来解决我的问题.任何帮助将不胜感激.提前致谢!

解决方法:

SO上已经有相当多的相似/相关问题值得一读,因为答案中包含了大量有用的信息和建议,但实质上你需要这样做:

>将音频数据转换为FFT所需的格式(例如int – > float,单独的L / R通道)
>申请合适的window function(例如Hann aka Hanning window)
>应用FFT(注意:如果使用典型的复数到复数FFT,则将输入数组的虚部设置为零)
>计算前N / 2个FFT输出箱的大小(sqrt(re * re im * im))
>可选择将幅度转换为dB(log)标度(20 * log10(幅度))
>绘制N / 2(对数)幅度值

请注意,虽然FFTW是一个非常好且非常快的FFT,但对于初学者来说可能有点压倒性 – 如果你想将它作为商业产品的一部分包含它也是非常昂贵的 – 我建议从KissFFT开始.

标签:c,audio,fft,spectrum
来源: https://codeday.me/bug/20190918/1810568.html