即时语音中回声消除技术如何实现

网易智企 TOP1 113

本文从回音的产生和回音的消除技术两方面向大家介绍即时语音中回音消除技术如何实现。

  • 回声的产生:

从通讯回音产生的原因看,可以分为声学回音(Acoustic Echo 如上图)和线路回音(Line Echo),相应的回声消除技术就叫声学回声消除(Acoustic Echo Cancellation,AEC)和线路回声消除(Line Echo Cancellation, LEC)。声学回音是由于在免提或者会议应用中,扬声器的声音多次反馈到麦克风引起的(比较好理解);线路回音是由于物理电子线路的二四线匹配耦合引起的(一般硬件厂商来保证,不做具体阐述)。

https://pic1.zhimg.com/80/v2-87d5dfdb358e6e4dd846ce8a5556804e_720w.jpg?source=1940ef5c

  • 回声消除技术

在发送时,把不需要的回音从语音流中间去掉。

试想一下,对一个至少混合了两个声音的语音流,要把它们分开,然后去掉其中一个,难度何其之大。就像一瓶蓝墨水和一瓶红墨水倒在一起,然后需要把红墨水提取出来,这恐怕不可能了。所以回声消除被认为是神秘和难以理解的技术也就不奇怪了。实际上,算法只获取麦克风采集的混合信号是无法做回声消除的,因为算法并不清楚混合的信号里面哪些部分是回声哪些是本端的人说的话。但是回声其实播放的声音经过空间的墙面,地面,桌面反射回麦克风的信号,而播放的信号SDK其实是可以获取的,这就有了参考信号帮助算法来确定哪些是回声哪些是本端声音。

下面是AEC声学回声消除框图:

https://pic2.zhimg.com/80/v2-19c6482310acb96da39b38f19a9c26ed_720w.jpg?source=1940ef5c

回声消除是非常复杂的技术,简单的描述这种处理方法:

1、假设设备播放的声音是Y,经过空间反射产生的回声是Y',近端说话的声音是X,那么麦克风采集的信号就是 X+ Y'。

2、AEC 算法的输入需要 麦克风的信号(X+ Y')以及播放的声音Y,理想的输出是X。

3、算法的过程可以简单理解成用滤波器去模拟空间的反射变化,假设滤波器是f,那么就是希望f(Y) = Y'。这样我们就得到了Y'再在输入信号里面去掉。

4、上述是理想情况,实际情况是空间反射,以及采集播放的性能决定Y到Y'基本都是非线性的变化,然而因为计算量的限制,一般的实时系统都是使用的线性的滤波器,所以滤波器即使处在最理想的情况下也只能处理线性部分,对于非线性部分(很多情况下非线性回声是主要部分)还要有非线性的处理Nonlinear Process。

5、又因为回声的反射路径随着空间环境的变化随时都会变化,一般滤波器会设计成自适应的去跟踪环境回声路径的变化。

以上就是关于即时语音中回声消除技术的介绍。


本文作者:网易云信

回复

我来回复
  • 暂无回复内容

联系我们
关注微信
关注微信
分享本页
返回顶部