回声消除

音频处理之回声消除及调试经验

本文讲的回声(Echo)是指语音通信时产生的回声,即打电话时自己讲的话又从对方传回来被自己听到。回声在固话和手机上都有,小时还可以忍受,大时严重影响沟通交流,它是影响语音质量的重要因素之一。可能有的朋友要问了,为什么我打电话时没有听见自己的回声,那是因为市面上的成熟产品回声都被消除掉了。回声分为线路回声(line echo)和声学回声(acoustic echo),线路回声主要存在于固话中,是由于2-4线转换引入的回声,声学回声是由于空间声学反射产生的回声 。回声消除(Echo canceller, EC)是语音前处理的重要环节,下面主要讲其基本原理和调试中的一些经验。

1、基本原理

1)自适应滤波器和自适应算法

一般滤波器的系数是固定的,而自适应滤波器的系数是变化的,是依据自适应算法来调整滤波器系数的。自适应滤波器的结构采用FIR或IIR均可,由于IIR存在稳定性问题,因此一般采用FIR。
下图是自适应滤波器的一般结构:

干货:游戏语音SDK如何解决回声消除难题

在业界,回声消除技术是公认难啃的硬骨头。它本质上是一个复杂的数学问题的工程化。回声消除技术做得比较好的产品有Tencent QQ和Microsoft Skype,以及即构科技Zego的游戏语音SDK,开源的项目有WebRTC和Speex。在这些开源项目之前,回声消除技术是大厂的独门武艺,其它团队只能靠自己一点一滴地摸索积累。在这些开源项目之后,WebRTC和Speex提供开源的AEC模块,成为业界不错的教材。

AEC的原理

回声消除的原理在众多文章中都有介绍,这里只简单介绍笔者在即构科技Zego游戏语音SDK中的实践。简单地来说,远端的声音信号首先通过扬声器播放出来,然后在房间中经过多个传播和反射路径,最后和近端的声音一起被麦克风采集进去。如果没有做回声消除处理,那么远端就会把重新采集进去的远端声音信号播放出来,而且和原始的远端声音有一定的延迟时间。这就是回声产生的原理。

同步内容
--电子创新网--
粤ICP备12070055号