我有一个录制的WAV文件.我想删除背景噪音并单独分离语音.有没有可用于实现的C/C++代码,所以我可以集成到我的项目中?
我从Audacity下载了代码但无法集成它.是否有可用的第三方库或C/C++代码?
你可以自己做.阅读有关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)
Run Code Online (Sandbox Code Playgroud)
以上是IIR或FIR滤波器的算法.y(n)是滤波器输出(滤波后的信号)x(n)是输入(原始声音数据),b和a是滤波器系数.您可以以表格形式找到它们(适用于许多不同的过滤器类型和截止频率).
如果你仍然发现它有问题,在这里你可以设计自己的过滤器,网站将以我上面给你的形式吐出代码.你只需在你的程序中实现它,你就完成了.
http://www-users.cs.york.ac.uk/~fisher/mkfilter/trad.html
从上面的站点,Butterworth 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])
Run Code Online (Sandbox Code Playgroud)
玩得开心!
| 归档时间: |
|
| 查看次数: |
3516 次 |
| 最近记录: |