我有一个录制的WAV文件。我想删除背景噪音并单独分离语音。有没有可用的C / C ++代码,所以我可以集成到我的项目中?
我从Audacity下载了代码但无法集成它。是否有可用的第三方库或C / C ++代码?
答案 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。它使用的是大胆,我认为你有。无论是那个还是你都可以做一些过滤器,只允许某个音量以上的噪音通过。
祝你好运