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


9

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

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

我发现解决方案很少。

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

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

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

第三,对数傅立叶变换(LFT)。
这需要对数间隔的样本,并以令人难以置信的快速速度为我提供了我想要的结果。/programming/1120422/is-there-an-fft-that-uses-a-logarithmic-division-of-frequency

但是我不知道该算法。我试图理解并实施该论文,但由于缺乏英语和数学技能,因此无法实现。

因此,我需要实施LFT的帮助。

Answers:


8

最简单,最实用的解决方案是使用大小足够大的常规FFT,以使您在感兴趣的最低频率下获得所需的分辨率。例如,如果您想要在最低的感兴趣频率上获得1 Hz的分辨率,则需要一个1秒的FFT窗口,即FFT大小需要等于采样率,例如44100。

请注意,即使您可以实现对数FFT,它仍然会受到物理定律(信息论)的约束,并且您仍然需要一个类似的长度采样窗口-您将获得的所有好处就是方便(不必汇总输出仓位)以牺牲性能为代价。


有点奇怪。我知道理论上没有更多数据。如果我使用大尺寸FFT,则确实无法分析非常快速的乐器发作。同样,我无法在低频下获得更高的分辨率。但是人类的听力系统呢?该系统如何在时间和频率上获得更高的分辨率?

3
也许您应该考虑采用分层方法,将每个连续的八度音程减少2倍,以便可以在较高频率下使用较短的时间窗口,而在较低频率下使用较长的时间窗口?这在某种程度上类似于听觉滤波器组,其中带宽随频率增加。
Paul R

很棒的方法。低频时长的鹅蛋,高频时短的鹅蛋?说得通。但是将需要很大的计算成本。

即使比较复杂,它也可能比进行一次大型FFT 有效。例如,对于4个八度音阶层次结构,您可能需要4个2048点FFT和3个低通滤波器来进行x2下采样。在全采样率下,最低FFT的分辨率将与单个16384点FFT一样好,但是由于FFT为O(n log n),因此总的计算成本将大大降低。
Paul R

啊哈,FFT 2048,向下采样x2,FFT 2048,向下采样x2 ....比我同时具有时间和频率分辨率,其成本要比16384 FFT小得多。大。而现在,我有了另一种解决方案:在16384个样本上,goertzel每次加32。因此,通过累加,我可以以较低的成本提取低频和高频。非常感谢。:)

0

如果要执行的分析需要每个仓中信号的频率,则可以使用短时傅立叶变换来实现。

FFT的每个bin产生一个复数,表示实数和虚数分量-或在一些操作相位和幅度之后。

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

DSP Dimension对此过程有很好的文章。


看来我正在考虑一个更复杂的问题。我可以使用FFT,但是在音频信号分析上却不适合。

3
看一下短时傅立叶变换的“恒定Q”版本。STFT的这种安排可提供对数调整的频率分辨率,以适应不同频率范围的要求。
user2718 2013年

我会看看。我认为这只是应用于fft结果的简单滤波器组变换操作。
Laie
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.