linux - 指数频率轴的 FFTW

标签 linux audio fft antialiasing

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

  • 什么是 Linux/Ubuntu 中最易于使用、最全面的音频库,它可以让我解码各种音频格式(MP3 等)中的任何一种,并获取原始 16 位 PCM 值的缓冲区? gstreamer?
  • 我打算获取原始缓冲区并将其提供给 FFTW 以获取频域数据(没有复杂信息或相位信息)。我想我应该使用他们的一种“r2r”方法,可能是 DHT。这是正确的吗?
  • FFTW 的输出频率轴似乎以基于缓冲区长度的线性增量离散化。进一步看来,我无法在 FFTW 中更改这种离散化,因此我必须在 DHT 之后进行。我需要一个遵循 2^(i/12) 的指数轴,而不是线性频率轴。我想我必须获取 DHT 输出并通过一些自定义抗锯齿功能运行它。是否有 Linux 库可以进行这种抗锯齿处理?如果不是,基于余弦的基本抗锯齿功能是否有效?

谢谢。

最佳答案

这是 FFT 和处理音频的一个古老问题 - 理想情况下,我们想要音频的对数频率标度,但 DFT/FFT 具有线性标度。您将需要选择一个 FFT 大小,以在您的频率范围的低端提供足够的分辨率,然后在感兴趣的频率范围内累积 bin 以获得伪对数表示。还有更复杂的方案,但本质上都归结为同一件事。

关于linux - 指数频率轴的 FFTW,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5302603/

相关文章:

linux - 了解linux joydev驱动

javascript - 使用 JavaScript 进行 FFT 分析 : How to find a specific frequency?

matlab - 如何获得定义频段中的所有fft箱数量?

ios - 在 iOS 中播放一段短促的声音

java - 如何去除wav文件中的噪音?

c# - VST插件: using FFT on audio input buffer with arbitrary size,怎么办?

c - 什么是网络套接字的文件描述符?以及如何得到它?

c - 关于从内核访问用户空间内存

linux - 使用 minicom 下载的二进制文件被截断

visual-c++ - 捕获麦克风的缓冲区