Nag*_*gyI 5 audio signal-processing
我是音频滤镜的新手所以请原谅我,如果我说错了.
我喜欢编写一个代码,可以将存储在PCM样本中的音频分成两个或三个频段,并进行一些操作(如修改音频电平)或对它们进行分析,然后从输出中重建音频样本.
就我在互联网上阅读此任务而言,我可以使用FFT-IFFT并对复杂形式进行操作或使用基于时域的滤波器组,例如MP2音频编码格式使用的滤波器组.也许过滤器库是一个更好的选择,至少我读到某个地方它可以在实时流媒体环境中更多的CPU使用友好.然而,我很难理解滤波器组背后的数学东西.我试图找到关于这个主题的一些源代码(最好是Java或C/C++),到目前为止还没有成功.
有人可以向我提供提示或链接,可以让我更接近示例过滤器库吗?
使用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);
Run Code Online (Sandbox Code Playgroud)
等等..
在分割信号之后,您可以放大三个输出频段:低频,中频和高频,然后将它们加在一起以获得处理后的信号.
滤波器部分本身可以使用IIR滤波器实现.谷歌搜索"Linkwitz-Riley数字IIR"应该会有很多好的点击.
http://en.wikipedia.org/wiki/Linkwitz-Riley_filter
您应该查找小波,尤其是 Daubechies 小波。他们会让你做的伎俩,他们是FIR滤波器,他们真的很短。
不加解释地更新Downvoting 并不酷。另外,我是对的。小波是滤波器组,它们的工作是精确地完成问题中描述的内容。恕我直言,就是这样。我自己已经做过很多次了。
| 归档时间: |
|
| 查看次数: |
3442 次 |
| 最近记录: |