从级联滤波器制作均衡器

信息处理 过滤器设计 均衡
2022-02-24 16:59:34

我希望这不是重复的。我检查了,但可能没有看到所有内容。

开始 :

我一直在为一些与 EQ 相关的问题而摸不着头脑。我读了很多论文,但我有限的数学和 DSP 知识使我无法完全理解它们,所以我想我会问专家。

我有一个很好的独立过滤器库( http://www.kvraudio.com/forum/viewtopic.php?t=249926 ,如果你想知道的话)。有双二阶滤波器和高阶滤波器。由此,我想创建一个均衡器。这是 C++,但我认为它不相关;。我的问题是关于信号处理方面的。

1)我可以级联过滤器吗:

输入信号 -> 通过 f1 处理 -> ... -> 通过 fn 处理 -> 输出信号?

2)鉴于过滤器并不完美,顺序重要吗?

3) 你知道我如何从每个滤波器的传递曲线计算 EQ 的传递曲线吗?

4)最后,哪种过滤器最好?根据我的阅读,我认为使用高阶滤波器而不是二次滤波器更好,所以我认为我应该使用 Butterworth 或 Chebyshev 滤波器。我对吗 ?

我目前有点迷茫,所以感谢您的任何见解!我想要的是最大化音质 9i.e :制作一个透明的 eq,不要太花哨),即使 CPU 成本很高,甚至更好,也提供诸如优化速度/优化质量之类的选项

PS:如果你有能力创造这个,并且你对合同工作感兴趣,请随时与我联系。

2个回答

1)我可以级联过滤器吗:

输入信号 -> 通过 f1 处理 -> ... -> 通过 fn 处理 -> 输出信号?

是的,你就是这样做的。

2)鉴于过滤器并不完美,顺序重要吗?

可能不是。您可能在计算机处理器上使用≥32 位浮点数?所以你真的不需要担心削波或本底噪声问题。

硬件 DSP 通常采用定点格式,因此它们可以进行削波,这很重要,因为您不想将频率提升到削波点,然后使用后续滤波器对其进行衰减,或者将频率降低到噪声中地板,然后将其提升回来,将噪音拖上来。

3) 你知道我如何从每个滤波器的传递曲线计算 EQ 的传递曲线吗?

如果您的意思是“频率响应”,只需将它们相乘即可。或者将它们转换为 dB,然后将它们加在一起。dB 是对数的,因此它将乘法转换为加法。

4)最后,哪种过滤器最好?根据我的阅读,我认为使用高阶滤波器而不是二次滤波器更好,所以我认为我应该使用 Butterworth 或 Chebyshev 滤波器。我对吗 ?

不,您应该始终使用双二阶滤波器并将它们级联组合以制作高阶滤波器。如果您搜索“二阶部分”,您可以找到以这种方式制作高阶 Butterworth 和 Chebyshev 过滤器的说明。这最大限度地减少了一些中间数字非常大而其他非常小的数字误差。

答案在某种程度上取决于您想要获得的花哨。假设您想做一个快速而肮脏的八度频带图形均衡器:最简单的方法是级联单个滤波器。使用https://www.w3.org/TR/audio-eq-cookbook/中描述的“peakingEQ”类型,您实际上可以获得一个相当不错的八度频带滤波器,Q 约为 2.8 (2*sqrt(2)) . 如果要支持 10 个频段,则需要级联 10 个双二阶。每个乐队一个。每当增益更新时,您就可以按照说明书中的描述重新计算该特定双二阶的滤波器系数。该结构的好处在于,对于每个“中性”频段,幅度都是完全平坦的,并且没有相位失真。就CPU而言,它也非常便宜。