在音频分析滤波器组中使用什么滤波器而不是 FFT?

信息处理 过滤器 过滤器设计
2022-02-23 06:26:12

标准带通滤波器可以在 reaktor4 上制作具有 1024 到 4096 个滤波器的超精确分析滤波器组。我尝试在代码中使用食谱 BandPass,结果非常棒。

有人知道一个精确的带通滤波器,它可以传输预期频率的窄带而没有噪声和不规则性吗?共振是一个优势,因为它采用检测到的频率值并将该频率的大量纯正弦波添加为正弦波,这很酷,因为理想情况下我会让给定频率的单个正弦波通过。我想要那种东西。过滤器组应该使用什么样的过滤器?你有代码中的例子吗?

1个回答

这已经在这里得到了深入的解决: https ://stackoverflow.com/questions/5901483/simple-audio-filter-bank

我在这里找到了一些关于这个主题的 c# 代码:
https ://waveletstudio.codeplex.com/


从这里复制的答案

使用 FFT 将音频信号分成几个频段是多余的。

您需要的是一两个 Linkwitz-Riley 过滤器。这些滤波器将信号分成高频和低频部分。

这个滤波器的一个很好的特性是,如果你添加低频和高频部分,你几乎可以得到原始信号。会有一点点相移,但耳朵听不到。

如果您需要两个以上的频段,您可以链接过滤器。例如,如果你想将 100 和 2000Hz 的信号分开,它会在伪代码中有点像这样:

low  = linkwitz-riley-low (100, input-samples)
temp = linkwitz-riley-high (100, input-samples)

mids = linkwitz-riley-low (2000, temp)
highs = linkwitz-riley-high (2000, temp);

等等..

拆分信号后,您可以例如放大三个输出频段:低、中和高,然后将它们加在一起以获得处理后的信号。

滤波器部分本身可以使用 IIR 滤波器实现。谷歌搜索“Linkwitz-Riley digital IIR”应该会得到很多不错的结果。

http://en.wikipedia.org/wiki/Linkwitz-Riley_filter