FFTW用于指数频率轴

时间:2011-03-14 18:14:28

标签: linux audio fft antialiasing

我在Linux上有一组关于FFTW和音频分析的相关问题。

  • Linux / Ubuntu中最容易使用,最全面的音频库是什么,它允许我解码任何各种音频格式(MP3等)并获取原始16位PCM值的缓冲区? gstreamer
  • 我打算拿起原始缓冲区并将其馈送到FFTW以获取频域数据(没有复杂的信息或相位信息)。我想我应该使用他们的“r2r”方法之一,可能是DHT。这是对的吗?
  • 似乎FFTW的输出频率轴以基于缓冲区长度的线性增量离散化。我似乎无法在FFTW中改变这种离散化,所以我必须在DHT之后进行。我需要一个跟随2^(i/12)的指数轴,而不是线性频率轴。我想我必须接受DHT输出并通过一些自定义抗锯齿功能运行它。有没有Linux库来做这样的抗锯齿?如果没有,基本的基于余弦的抗锯齿功能会起作用吗?

感谢。

2 个答案:

答案 0 :(得分:3)

这是FFT的一个老问题并且使用音频 - 理想情况下我们需要音频的对数频率刻度,但DFT / FFT具有线性刻度。您需要选择一个FFT大小,在频率范围的低端提供足够的分辨率,然后在感兴趣的频率范围内累积分档,为自己提供伪对数表示。有更复杂的方案,但基本上它都归结为同样的事情。

答案 1 :(得分:1)

我见过libsndfile遍布各地:

http://www.mega-nerd.com/libsndfile/

这也是LGPL。它几乎可以读取您关心的所有开源和无损音频格式。然而,由于许可成本,它没有MP3。