单独编译和使用webrtc音频降噪模块(NS)
来源:互联网 发布:淘宝详情页图片尺寸 编辑:程序博客网 时间:2024/06/17 13:22
原文转载于:http://www.cnblogs.com/mod109/p/5469799.html 非常感谢。
webrtc的音频处理模块分为降噪ns,回音消除aec(回声控制acem),自动控制增益agc,静音检测部分。另外webrtc已经封装好了一套音频处理模块APM,如果不是有特殊必要,使用者如果要用到回声消除等较为复杂的模块时,最好使用全部的音频处理模块,不要单独编译其中一部分以免浪费宝贵的时间。
但是音频降噪部分较为简单,用起来也就几个函数,除了需要传入的音频数据以外,需要调整的参数也就是音频采样率和降噪等级。另外这部分代码采用C语言语法编写,可以跨平台编译。整个算法也不算特别复杂,运行起来占CPU也不是很多,可以上至i7 8核CPU的高配电脑,下至380Mhz的小嵌入式系统以及一切版本的移动端产品中编译运行。另外效果也十分不错,通过本文附带的测试demo大家就可以感受一下。
降噪有两部分代码,一套是定点算法(noise_suppression_x.h),一套是浮点算法(noise_suppression.h)。相对来说浮点算法精度更高,但是耗系统资源更多,特别是浮点计算能力较弱的低端ARM CPU上。但是一般来说浮点和定点算法在实际效果上听不出区别出来,估计是我没遇到过必须必须要用浮点的情况。在使用上,浮点和定点也仅仅只是变量名和函数没中多出了一个x。
音频处理的时候webrtc一次仅能处理10ms数据,小于10ms的数据不要传入,因为即时是传入小于10ms的数据最后传入也是按照10ms的数据传出,此时会出现问题。另外支持采样率也只有8K,16K,32K三种,不论是降噪模块,或者是回声消除增益等等均是如此。对于8000采样率,16bit的音频数据,10ms的时间采样点就是80个,一个采样点16bit也就是两个字节,那么需要传入WebRtcNsx_Process的数据就是160字节。对于8000和16000采样率的音频数据在使用时可以不管高频部分,只需要传入低频数据即可,但是对于32K采样率的数据就必须通过滤波接口将数据分为高频和低频传入,传入降噪后再组合成音频数据。大于32K的音频文件就必须要通过重采样接口降频到对应的采样率再处理,在demo源码里面有对应的接口使用者可以去查。
降噪的开源代码包括定点降噪,浮点降噪,音频重采样,滤波接口,抠出来后修改了头文件包含位置使其都在同一目录下,如果是xcode下编译可能会有once函数编译不过的问题,此时修改一个宏即可,为了尽量避免修改问题就不改动这部分了。
示例代码给了32K采样率的测试demo,也有8K采样率实现。16K采样率只需要将8K内部的数据大小由80改成160即可,PCM音频文件可以由Audacity软件通过文件--导入--原始数据,选择好bit位数,声道,采样率即可显示波形,播放。
源码下载:WebRtcAudioTest.rar
- 单独编译和使用webrtc音频降噪模块(NS)
- 单独编译和使用webrtc音频增益模块(AGC)
- Android 单独抽取 WebRtc-NS/NSX(音频降噪) 模块
- 单独编译和使用webrtc音频回声消除模块(AEC)
- 【单独编译使用WebRTC的音频处理模块 - android】
- 单独编译使用WebRTC的音频处理模块 - android
- 单独编译使用WebRTC的音频处理模块 - android
- 单独编译使用WebRTC的音频处理模块 - android
- 单独编译使用WebRTC的音频处理模块 - android
- 单独编译使用WebRTC的音频处理模块 - android
- 单独编译使用WebRTC的音频处理模块
- 单独编译使用WebRTC的音频处理模块 - android
- 单独编译和使用webrtc音频回声消除模块(附完整源码+测试音频文件)
- 使用webRtc进行音频降噪(NS)和VAD检测
- Android 单独抽取 WebRtc-AGC(音频增益) 模块
- webrtc中关于AEC,AGC,NS模块的使用总结
- Android Studio 单独编译WebRTC的 vad 模块
- webrtc(二) ns
- Android统计表格MPAndroidChart解析
- Spring Security(19)——对Acl的支持
- 关于对象的中间获取时,内存获取修改的问题
- JSLint的使用与安装
- 九度OJ 1015 还是A+B
- 单独编译和使用webrtc音频降噪模块(NS)
- 多态
- Zookeeper集群环境安装过程详解
- Spring Security(20)——整合Cas
- irp追踪工具_CreateFile_进行通讯 打印主请求号
- cell中嵌套webview自适应高度
- Android5.0 WebView中Http和Https混合问题
- UWA六月直播第四弹-Unity UI模块优化案例精讲,今晚8点不见不散
- 回帖->http://blog.csdn.net/zeg635702733/article/details/53992224