音频信号的对数傅里叶变换 (LFT)

信息处理 声音的 fft
2021-12-28 16:13:59

我试图尽可能准确地分析音乐。当然,我尝试了 FFT,但遇到了一些问题。

我发现低频的分辨率比人类的听力要低。我尝试了很长时间的 FFT 来解决这个问题,但即使以 44100Hz 的采样率(意味着缺乏时间分辨率)分析 8192 个样本/秒,我在低频上也没有足够的分辨率。

我发现解决方案很少。

首先,对 FFT 箱进行二次插值。
但这似乎不是一个完美的方法。这种方法的问题是:

1. '如果我想确定频率箱之间的频率,我应该选择哪三个箱来进行插值?
2. '即使我这样做,也没有关于结果的实际附加信息。我知道插值是一种棘手的方法。

其次,以所需频率提取每个频率箱,因此我可以以对数方式提取箱。
但是有一个关键的计算成本问题:(可能超过)N^2。

第三,LFT(对数傅里叶变换)。
这需要对数间隔的样本,并以令人难以置信的速度为我提供我正在寻找的结果;https://stackoverflow.com/questions/1120422/is-there-an-fft-that-uses-a-logarithmic-division-of-frequency

但我不知道那个算法。我试图理解这篇论文并实施它,但由于我缺乏英语和数学技能,这是不可能的。

所以,我需要 LFT 实施的帮助。

2个回答

最简单和最实用的解决方案是使用尺寸足够大的普通 FFT,以便在感兴趣的最低频率下获得所需的分辨率。例如,如果您希望在感兴趣的最低频率下获得 1 Hz 分辨率,那么您将需要一个 1 秒的 FFT 窗口,即 FFT 大小需要等于采样率,例如 44100。

请注意,即使您可以实现对数 FFT,它仍然会受到物理定律(信息论)的约束,并且您仍然需要类似长度的样本窗口 - 您将获得的只是方便(不必聚合输出箱) 以牺牲性能为代价。

如果您打算执行的分析需要每个 bin 中信号的频率,您可以使用短时傅里叶变换来实现这一点。

FFT 的每个 bin 产生一个复数,表示实部和虚部——或经过一点操作相位和幅度之后。

由于频率 = dPhi/dt,(Phi == 相位),通过从成对的连续 STFT 光谱中获取相应的 bin,您可以计算频率。

DSP Dimension有一篇关于该过程的好文章。