gpt4 book ai didi

audio - 简单的音频滤波器组

转载 作者:行者123 更新时间:2023-12-04 16:49:05 25 4
gpt4 key购买 nike

我是音频滤波器的新手,所以如果我说错了,请原谅。

我喜欢编写一个代码,该代码可以将存储在PCM样本中的音频分成两个或三个频带,并对它们进行一些处理(例如修改其音频电平)或进行分析,然后从输出中重建音频样本。

据我在互联网上阅读的这份任务,我可以使用FFT-IFFT并以复杂形式进行操作,或者使用基于时域的滤波器组,例如MP2音频编码格式所使用的滤波器组。也许滤波器组是一个更好的选择,至少我读过某个地方,它在实时流环境中对CPU使用更加友好。但是,我很难理解滤波器组背后的数学知识。我正在尝试找到有关此主题的一些源代码(最好是Java或C/C++),到目前为止没有成功。

有人可以给我提示或链接,使我更接近示例过滤器库吗?

最佳答案

使用FFT将音频信号分成几个频段实在是太过分了。

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

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

如果您需要两个以上的频带,则可以将滤波器链接起来。例如,如果要分离100Hz和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数字IIR”应该会带来很多不错的结果。

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

关于audio - 简单的音频滤波器组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5901483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com