音频回音消除算法

一、回声消除原理

        回音消除一直是语音通信的难点,从通讯回音产生的原因看,可以分为声学回音(Acoustic Echo)和线路回音(Line Echo),相应的回声消除技术就叫声学回声消除(Acoustic Echo Cancellation,AEC)和线路回声消除(Line Echo Cancellation, LEC), 声学回音是由于在免提或者会议应用中,扬声器的声音多次反馈到麦克风引起的(比较好理解);线路回音是由于物理电子线路的二四线匹配耦合引起的(比较难理解),我们本讲只讨论声学回声的消除原理。

1. 声学回声产生的原因:

音频回音消除算法_第1张图片

本图是网上找的,我觉得比较有形象,图中的男子说话,语音信号(speech1)传到女士所在的房间,由于空间的反射,形成回音speech1(Echo)重新从麦克风输入,同时叠加了女士的语音信号(speech2),此时男子将会听到女士的声音叠加了自己的声音,影响了正常的通话质量。此时在女士所在房间应用回音抵消模块,可以抵消掉男子的回音,让男子只听到女士的声音。

2. 声学回声消除的方法:

(1)  基于DSP等实时平台的回声消除技术; 

        目前基于DSP的回声消除算法已经比较成熟,市场上也有一批专门的算法/芯片公司的能够对外提供已经优化好的基于DSP的软件回声消除模块,如俄罗斯Spririt DSP、加拿大Octastic Semiconductor、瑞典GIPS等等效果都比较错;

(2)  基于Windows等非实时平台的回声消除技术(即纯软件实现),Windows平台是一个非实时的平台,音频的采集和播放对回声消除算法而言,也是非实时的,所以不如DSP处理效果好,但是在某些场景下只能采用纯软件实现,所以还是有一定的意义;

下面是我最近基于webrtc的回音消除算法做了一个测试,内部也做了一些优化,目前这个算法可以应用到多种平台,像windows、linux、android、ios、arm平台都可以支持,大家可以测试下,效果还是比较明显,基本上在很短时间内就可以完成回音收敛算法的学习。

 第一行文件:是回音数据的参考数据文件;

 第二行文件:是带回音的数据文件;

 第三行文件:是回音消除后的数据文件;

aec_output.pcm文件,回音基本上都已经消除的比较干净了, 完美!

3、double talk detection: 

        回音消除算法有一个缺陷,就是通话双方同时在说话的时候回音处理效果会出问题,无法监测出来哪些是真正的话音、哪些是回音,如果继续使用AEC算法的话,通话音质会受到影响,目前我这块我也做了一些算法上的调整,整体效果测试还不错。

项目地址:https://download.csdn.net/download/unique_no1/83074190

        里面包含测试程序和可执行文件,windows平台和linux平台的我都已经编译好了,大家可以测试看下效果,接口调用也比较简单,如果需要商用的话可以跟我联系,或者有技术问题想要沟通、交流的也非常欢迎。

tel&&微信:13354328150

--------------------------------------------------------------------------------------------------------------------------------
 

你可能感兴趣的:(音视频,算法,音视频,算法,webrtc)