原文转载于: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)相关推荐

  1. 单独编译和使用webrtc音频降噪模块(附完整源码+测试音频文件)

    单独编译和使用webrtc音频增益模块(附完整源码+测试音频文件) 单独编译和使用webrtc音频回声消除模块(附完整源码+测试音频文件) webrtc的音频处理模块分为降噪ns,回音消除aec,回声 ...

  2. java webrtc ns降噪_单独编译和使用webrtc音频降噪模块(附完整源码+测试音频文件)...

    webrtc的音频处理模块分为降噪ns,回音消除aec,回声控制acem,音频增益agc,静音检测部分.另外webrtc已经封装好了一套音频处理模块APM,如果不是有特殊必要,使用者如果要用到回声消除 ...

  3. 单独编译和使用webrtc音频回声消除模块

    麦克风和扬bai声器都是音频产品.du 麦克风是输入zhi设备dao,主要用来输入音源,zhuan可以和shu对方语音,聊天,会议等.扬声器是输出设备,主要用来听歌,看电影等. 一个是输入,一个是输出 ...

  4. WebRTC音频降噪使用

    webrtc的ns原理:把启动前50帧的数据拿来构建噪声模型,把启动前200帧的信号强度用来计算归一化的频谱差值计算.根据这两个模型使用概率目的函数来计算出每帧的信噪比并区分出噪声和声音,然后根据计算 ...

  5. 【WebRTC】在Android上用NDK编译WebRtc音频增益模块(AGC),降噪(NS),java调用JNI实现功能

    目录 ·········前言 ·········前期工作 ·········编译工作 ·········编码工作(AGC-JAVA) ·········编码工作(AGC-JNI) ·········编 ...

  6. 单独编译使用WebRTC的音频处理模块

    不推荐单独编译 WebRTC 中的各个模块出来使用. 昨天有幸在 Google 论坛里询问到 AECM 模块的延迟计算一事,Project member 说捣腾这个延迟实际上对 AECM 的效果没有帮 ...

  7. WebRTC 音频模块单独编译 --【转载】

    原文地址:http://billhoo.blog.51cto.com/2337751/1213801 [2015年2月15日] Bill 这段时间没有再关注 WebRTC 以及音频处理的相关信息,且我 ...

  8. 单独编译使用WebRTC的音频处理模块 - android

    前言 最近一直在捣腾如何在android和iOS上使用Google的WebRTC--一个无疑大力推动了互联网即时通信以及VoIP发展的开源项目. 虽然WebRTC主要目标是为互联网提供高质量的富媒体即 ...

  9. WebRTC音频预处理单元APM的整体编译及使用

    正文 然而本次优化仍然没能用上整套VoE,因为VoE不仅仅包含音频预处理,它将音频编码模块.传输模块一并融入了引擎,而bill的项目需要使用既有的编码.传输层,因此使用整个VoE对我来说显得冗余且不可 ...

最新文章

  1. MySQL技术内幕 InnoDB存储引擎 之 InnoDB体系架构
  2. 简单的Java处理事务
  3. MySQL查看与修改编码方式(mysql、数据库、表)
  4. mybatis-plus代码生成器简易使用
  5. 基于python的人脸识别技术_用Python写个简单但强大的人脸识别系统
  6. 带有Angular JS的Java EE 7 – CRUD,REST,验证–第2部分
  7. html动态背景gif图片,gif动态背景
  8. 红外接收管硬件电路曲折的调试过程,错误的使用过程记录
  9. 是否有免安装的oracle,免安装的Oracle客户端
  10. as_completed和wait源码分析
  11. hpux 内存 够不够_hpux查看内存大小
  12. 日语动词变形方法全解
  13. 第31讲:永久存储:腌制一缸美味的泡菜
  14. Meep基于windows系统安装
  15. 分布式存储实现的方式有哪些?iSCSI和NBD的区别
  16. mac 查看mysql 端口_Mac下启动和停止Mysql及查看端口
  17. 理想和现实中的大学差距
  18. linux 下翻译软件
  19. Windows中使用FAT32格式化大于32GB的U盘
  20. 笔记本自身带有扬声器,外接蓝牙音箱,同时工作

热门文章

  1. statsmodels.tsa.stattools.adfuller 的用法
  2. Windows10 1909:真正解决开机C:\WINDOWS\system32\config\systemprofile\Desktop不可用
  3. 肠道微生物群的老化及其对宿主免疫力的影响
  4. 期末考试【学堂在线答案】信息素养——学术研究的必修课(2021秋)
  5. js逆向验证码篇之极验4代
  6. 原神倾听木簧笛的八音曲寻找缺失的石头怎么做
  7. html 获取语音时长,javascript – HTML5音频 – 获取声音对象的时间(howler.js)
  8. SpringBoot创建web项目
  9. 2023年重庆大学中国语言文学考研考情与难度、参考书及前辈经验
  10. 第四届【强网杯】主动