从iPhone中的WAV文件中删除背景噪音

时间:2010-11-11 07:36:19

标签: iphone c++ c

我有一个录制的WAV文件。我想删除背景噪音并单独分离语音。有没有可用的C / C ++代码,所以我可以集成到我的项目中?

我从Audacity下载了代码但无法集成它。是否有可用的第三方库或C / C ++代码?

2 个答案:

答案 0 :(得分:7)

你可以自己做。阅读有关FIR和IIR滤波器的信息。它们很容易在代码中实现(只是当前样本的一些乘法与过滤器输入和输出的过去样本的加权值)。

只是为了给你一些启动:

y(n) = b(1)*x(n) + b(2)*x(n-1) + ... + b(nb+1)*x(n-nb)
                 - a(2)*y(n-1) - ... - a(na+1)*y(n-na)

以上是IIR或FIR滤波器的算法。 y(n)是滤波器输出(滤波后的信号)x(n)是输入(原始声音数据),b和a是滤波器系数。您可以以表格形式找到它们(适用于许多不同的过滤器类型和截止频率)。

如果您仍然发现它有问题,可以在这里设计自己的过滤器,网站会以我上面给你的形式吐出代码。你只需在你的程序中实现它就完成了。

http://www-users.cs.york.ac.uk/~fisher/mkfilter/trad.html

从上面的网站上看,巴特沃斯LP滤波器的截止频率为6kHz,信号扫描频率为46.1kHz(如果我记得的话,典型的计算机声音采样频率):

y[n] = (  1 * x[n- 2])
     + (  2 * x[n- 1])
     + (  1 * x[n- 0])

     + ( -0.3193306290 * y[n- 2])
     + (  0.9022259824 * y[n- 1])

玩得开心!

答案 1 :(得分:1)

我认为这看起来很有希望http://www.podtopia.net/gettingstarted/removenoise.shtml。它使用的是大胆,我认为你有。无论是那个还是你都可以做一些过滤器,只允许某个音量以上的噪音通过。

祝你好运