2010-11-11 125 views
4

我有一个录制的WAV文件。我想删除背景噪音并单独分开讲话。有没有C/C++代码可以实现这一点,所以我可以集成到我的项目中?从iPhone中的WAV文件中删除背景噪音

我已经从Audacity下载了一个代码,但无法集成它。是否有任何第三方库或C/C++代码可用?

+0

试着在这里寻找一些东西http://www.musicdsp.org/ – soulseekah 2010-11-11 07:46:32

+0

也请查看这本书http://books.google.com/books?id=QvM0jbfgTGkC&printsec=frontcover&hl=en第7章和 – soulseekah 2010-11-11 07:53:10

回答

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

从上面的网站,与6kHz的截止在46.1kHz扫描信号巴特沃斯LP滤波器(典型的电脑声音的采样频率,如果我记得很清楚):

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

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

玩得开心!

+0

Great回答。过滤器生成器的链接是黄金。谢谢! – 2012-02-14 08:44:13