前端声学信号处理—回声消除

回声消除是前端声学信号处理的一个重要方法,本文针对回声的生成原理、回声消除应用场景及原理进行说明。

一、回声消除(AEC)简介

1.定义

所谓的“回声”,是指设备本地扬声器播放的声音被麦克风采集之后形成的声学信号。回声消除就是指在保留本地用户语音的前提下,从麦克风采集的信号中消除这些回声的过程。因此使用回声消除算法解决的是设备扬声器和自身麦克风的耦合现象。

2.使用场景

目前最常见的两个场景是实时音视频通信(RTC)和智能语音交互打断。

(1)RTC

常见的应用场景有线上会议系统、手机通话、蓝牙耳机通话、车载通话系统等。

(2)智能语音交互打断

如在语音交互设备播放内容时语音唤醒,或者在和语音助手对话过程中用户打断语音助手。

3.意义

若没有回声消除算法,在RTC场景中,远端说话人的声音通过扬声器播放出来,又被近端的麦克风收集再传送回远端,导致远端说话人会听到自己的声音,这也是“回声”一词的由来。因此回声在通信过程中,会极大降低信息传递的正确性和效率性。

而在智能语音交互场景中,若回声消除算法不好,交互设备对用户的应答语音被设备本身麦克风采集之后,作为用户的指令进行识别,从而产生误操作,甚至会出现设备持续自问自答情况。因此回声消除算法对语音交互系统的体验极其重要。

二、回声生成模型

下图为回声生成模型。系统接收的信号通常被称为远端信号x,也是扬声器准备播放的语音信号。该信号首先通过系统路径(主要包括一些软件接口、软件缓冲区、硬件缓冲区、数模转换器和功放等)。系统路径一般只会带来信号延时并不会改变信号的特征。

随后该电信号到达扬声器并被转换为振动信号,通过声音传播被用户听到。在此过程中,受到扬声器特性的影响,信号会发生变化。振动信号的一部分会直接传播到麦克风(直接耦合),而另一部分经过房间墙壁和物体的反射会到达麦克风,这就是所谓的房间声学路径。通过扬声器转换和房间声学路径到麦克风的远端信号已经与原始远端信号不一样了,这里用 y 来表示,信号y一般也称为线性回声。信号 y 与干净语音 s 和噪声 n 一起被麦克风采集到,此混合信号被称为近端信号,用 d 表示。在此模型下,回声消除算法的目标是通过远端信号 x 和近端信号 d ,以一定的方式得出 y 的估计,并将其从 d 中减去。远端信号x 相当于给了算法一个参考,因此也被称为参考信号


回声生成模型

三、回声消除算法

针对回声的产生成原理,回声消除的核心是估计扬声器到麦克风的声学冲击响应,利用参考信号与估计的滤波来逼近麦克风接收到的回声信号,然后从混合信号中将其减去,保留近端语音信号。回声消除算法的一般架构如下图所示。

回声消除算法的主要模块分别由延时估计自适应滤波器残留回声估计和消除三个模块组成。

其中,延时估计模块的作用是检测系统路径和房间声学路径对远端信号造成的延时,并将远端信号和对应的近端信号在时间上对齐。

自适应滤波器模块是将扬声器特性和房间声学路径简化为一个线性系统,试图通过自适应滤波器来寻找这个线性系统的传递函数,并将远端信号 x通过该系统转换成对应的y,随后从近端信号中减去。

在实际系统中,由于非线性分的存在,以及自适应滤波器自身的误差等因素,仅靠自适应滤波器模块不可能宗全消除回声,总会有一些回声残留,因此还需要残留回声估计和消除模块对剩下的回声做进一步处理。该模块通常为非线性处理

而在RTC场景中,还需要舒适噪声生成模块,补充轻微的白噪声,使主观听感更加舒适。

因此,一般可将回声分为线性回声和非线性回声,通过自适应滤波来处理线性回声,通过残留回声估计和消除模块处理非线性回声。


你可能感兴趣的:(前端声学信号处理—回声消除)