回声抵消AEC的基本概念

在一般的VOIP软件或视频会议系统中,假设我们只有A和B两个人在通话,首先,A的声音传给B,B然后用喇叭放出来,而这时B的MIC则会采集到喇叭放出来的声音,然后传回给A,如果这个传输的过程中时延足够大,A就会听到一个和自己刚才说过的话一样的声音,这就是回声,声学回声消除器的作用就是在B端对B采集到的声音进行处理,把采集到声音包含的A的声音去掉再传给A,这样,A就不会听到自己说过的话了

传给回声消除器的两个声音信号,必须同步得非常的好,就是说,在B端,接收到A说的话以后,要把这些话音数据传给回声消除器做参考,然后再传给声卡,声卡再放出来,这有一段延时,这时,B再采集,然后传给回声消除器,与那个参考数据比较,从采集到的数据中把频域和参考数据相同的部分消除掉。如果传给消除器的两个信号同步得不好,即两个信号找不到频域相同的部分,就没有办法进行消除了。

在一般的VOIP软件中,接收对方的声音并传到声卡中播放是在一个线程中进行的,而采集本地的声音并传送到对方又是在另一个线程中进行的,而声学回声消除器在对采集到的声音进行回声消除的同时,还需要播放线程中的数据作为参考,而要同步这两个线程中的数据是非常困难的,因为稍稍有些不同步,声学回声消除器中的自适应滤波器就会发散,不但消除不了回声,还会破坏原始采集到的声音,使被破坏的声音难以分辨。

声学回声主要又分成以下两种:
1、直接回声:由扬声器产生的声音未经任何反射直接进入麦克风
2、间接回声:由扬声器发出的声音经过多次反射后,再进入Mic
对于第二种回声,拥有多路径,时变性的特点.是比较难处理的.

回声抵消有两种方式,一种是通过硬件实现,有很多手机就是这么做的,也有专业的芯片,但是只支持8khz的,如果要求高质量的音质的话,基本实现不了。二种是通过软件实现,qq,msn,skype很多具有通话功能的软件,现在都具有回声抵消的功能(需是比较高版本的,低版本的可能没有),但是实现代码是不对外的,开源的回声抵消的代码只有speex和webrtc

一般常用的开源的AEC有两个:Speex and webrtc

webrtc相对比Speex强大:
原因:
webrtc有回声时延估计算法模块
webrtc有neteq模块
所以音频效果要好很多

参考网址:
http://blog.csdn.net/u012931018/article/details/17045077
http://silversand.blog.51cto.com/820613/166095

回声抵消AEC的基本概念

上一篇:模板优化一加入场次


下一篇:模板优化二——添加模板依赖谁