0问:为什么使用回声消除?
答:比较常见的应用场景,a与b打电话,a端手机开启免提,这时b端传过来的声音就会通过电话的扬声器向外播放,这时手机的麦克风就可能会采集扬声器出来的声音,若是没有回声消除功能模块,b端就会听到自己的声音从a端传回来,影响了正常通话。再如微信的视频通话,都有回声消除模块起了作用。
1问:回声消除有什么开源代码?
答:主要有webrtc的aec,aecm,aec3,还有speex。
2问:回声消除需要用到什么算法?
答:线性回声消除用NLMS,PBFDAF,MDF,非线性处理用归一化相关性,舒适噪声生成,延时估计。
3问:为什么有时候漏回声呢(回声消除没有效果)?
答:读文件效果仿真的话,简单的方法先自己用cooledit手动对齐远端信号,也可以自己加上延时估计;如果是pc点对点测试,测试要在两个不同的房间进行,可以参考webrtc实现方式;如果是android端自已先测试出手机端的延时(也可以参考demo请看网友的安卓demo)。
4问:为什么speex效果没有webrtc好?
答:memath个人看法,如果远端线性好的话,speex的效果还是不错的;若是远端非线性严重的话,speex效果比较差了,对比这时用webrtc就比较好了。两者差别请看:speex与webrtc回声消除小结
5问:webrtc aec3效果怎么样?
答:现在的效果还比较差,以后应该会更新,以前的效果请查看webrtc aec3效果对比aec与aecm(webrtc M64 20180115版本)
6问:双讲检测都有那些方法呢?
答:最常用是利用相关性,能量,时域特征,其中speex的双讲检测在自适应滤波器部分,也是基于能量判断的。
7问:回声消除的拖尾是什么?
答:市场上一般说回声消除的拖尾为256ms,它其实对应回声消除内部的滤波器长度,能够滤除延时时间为多长的线性回声,对应在内部参数为频段:0.256*48000/128=96,96个滤波处理段(其中48000为采样频率,128为帧长)。
初级的自问自答,由于个人水平有限,不当之处就指正,谢谢。
memath回声消除系列文章:
webrtc aec3效果对比aec与aecm(webrtc M64 20180115版本)