Closed. This question needs to be more focused。它当前不接受答案。












想改善这个问题吗?更新问题,使其仅关注editing this post的一个问题。

3年前关闭。



Improve this question




我想生成一个mp3音频文件的音频频谱(如this video所示)。基本上,此问题需要计算音频信号的fft。如何在C/C++中对此进行编程?

我看过几个开源库,例如FFTW,但我真的不知道如何使用它们解决我的问题。任何帮助将不胜感激。提前致谢!

最佳答案

关于SO的问题已经有很多类似/相关的问题,非常值得一读,因为答案中包含许多有用的信息和建议,但从本质上讲,您需要这样做:

  • 将音频数据转换为FFT所需的格式(例如int-> float,独立的L/R channel )
  • 应用适当的window function(例如Hann aka Hanning window)
  • 应用FFT(注意:如果使用典型的复数到复数FFT,则将输入数组的虚部设置为零)
  • 计算前N/2个FFT输出仓的大小(sqrt(re*re + im*im))
  • (可选)将幅度转换为dB(对数)标度(20 * log10(magnitude))
  • 图N/2(对数)幅度值

  • 请注意,虽然FFTW是一种非常好且非常快速的FFT,但对于初学者来说可能有点不知所措-如果要将其包含在商业产品中,这也非常昂贵-我建议改用KissFFT开始。

    关于c++ - 如何在C++中使用fft生成音频频谱? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4675457/

    10-13 08:58