回声消除的基本概念
回音消除(Acoustic Echo Cancelling)是透过音波干扰方式消除麦克风与喇叭因空气产生回受路径(feedback path)而产生的杂音。通俗一点来说,回声消除就是为了消除机器自身发出的声音,不影响外界传递过去的声音。 如在双工通话的场景中,来自远端的经过扬声器放出来的声音被消掉,否则经过麦克风采集和近端说话人信号混在一起被传递到远端,则会出现远端的人听到自己说的话,这种回声对于一些通信设备来说体验是致命的差。
回声消除的基本流程
回声消除常用方法如下:使用不同的自适应滤波算法调整滤波器的权值向量,估计一个近似的回声路径来逼近真实回声路径,从而得到估计的回声信号,并在纯净语音和回声的混合信号中除去此信号来实现回声的消除。
详细的来说,回声消除的过程一般分为以下几个步骤:
- 远端信号被传递到系统。
- 转载远端信号的扬声器在房间里。
- 也在房间里的麦克风拾取产生的直接路径的声音,和随之而来的混响声音作为近端信号。
- 将远端信号进行滤波并延迟到类似的(resemble)近端信号。
- 将过滤的远端信号是从近端信号中减去。
- 所产生的信号指不包括任何直接或回荡的声音通过扬声器在房间里的声音。
回声消除常用的算法
A 最小均方算法 LMS
自适应AEC问题中应用最广泛的就是自适应滤波算法,其中最早是由Widrow和Hoff在1959年所提出的最小均方(Least Mean Square,LMS)算法
LMS算法基于维纳滤波理论,采用最速下降算法,通过最小化误差信号的能量来更新自适应滤波器权值系数。
- 优点:抑制旁瓣效应
- 缺点:LMS算法计算复杂度不高,但是其收敛速率较慢,并且随着滤波器阶数(步长参数)升高,系统的稳定性下降,要保证采用最小的步长参数,保证最小的失调,可能无法满足收敛标准
B 归一化最小均方算法 NLMS
归一化最小均方(Normalized Least Mean Squares,==NLMS)==算法是改进的LMS算法,根据原LMS算法中误差信号与远端输入信号的乘积,对远端输入信号的平方欧式范数进行归一化处理,将固定步长因子的LMS算法变为根据输入信号时变的变步长NLMS算法,
优点:改善了LMS算法收敛速度慢的缺点。计算简单、收敛速度较快的特点
缺点:收敛速度慢
C 稀疏类自适应算法——PNLMS
根据回声路径的稀疏性,Duttweiler引入了比例自适应的思想,提出了比例归一化最小均方算法 PNLMS,按比例分配滤波器的权值向量大小,该算法对回声消除的发展具有非常重要的意义。
该算法采用与滤波器抽头稀疏成正比的可变步长参数来调整算法收敛速度,利用其抽头稀疏的比例值来判断当前权重稀疏所属的活跃状态,根据状态的不同,所分配的步长大小也有所差异,活跃抽头系数分配较大的步长参数,这样可以加速其收敛,而不活跃的抽头系数则相反,通过分配其较小的步长参数来提高算法的稳态误差。每个滤波器抽头被分别赋予了不同估计值,算法的稳态收敛性得到了明显改善。然而,PNLMS 有一个明显的缺点,即比例步长参数的选择引入了定值,这会导致估计误差累积,最后使算法在后期的收敛速度减慢下来。
优点:使算法对于稀疏的回声路径,在初始阶段拥有快速的收敛速率,与此同时降低了稳态误差,
缺点:
- 由于 PNLMS 算法过分强调大系数的收敛,而当系数变小后,P 步长也随之变小,但随着算法的运行,则可能出现算法后期收敛速度慢、不能及时收敛的情况
- 相比于NLMS算法增加了算法的复杂度
- 另外在回声路径非稀疏情况下,收敛速度会变得比NLMS算法更慢
D 子带自适应滤波器(SAF)
在声学回声消除应用中,远端输入语音信号的相关性较高,然而,传统的方法是基于“信号的无关性”假设的,传统的全带LMS 和NLMS 等计算复杂度低的随机梯度算法收敛速度明显下降。
远端语音信号相关性有两层含义:
时域上:它表征语音信号相关矩阵特征值的扩散度
频域上:它表征远端语音信号的频谱动态范围
一般来说,语音信号相比白色信号,前者明显有更大的频谱动态范围,即更大的信号相关性。因此,可以通过降低输入信号的相关性来加快算法收敛速度,但是行之有效的一种方法是将自适应滤波器和滤波器组理论相结合,提出了子带自适应滤波(subband adaptive filter,SAF)算法,子带结构是基于频域对信号进行的一种处理(节省计算量、提高收敛速度)。 在传统的 SAF中,子带自适应算法都是以最小化子带误差信号为目标的,这样基于局部目标函数误差的最小化不一定是全局误差能量最小化。而分析滤波器组在子带切割和综合滤波器组重建全带信号时皆会引入时延,在AEC 应用中,这样的时延会使包含近端语音的全带误差信号传到远端,为了消除时延的影响,无延时子带闭环结构系统以全局误差能量最小化为约束条件来调整滤波器系数。最后,确保自适应滤波算法能够收敛到最佳的滤波器系数。
优点:改善了全带自适应滤波算法在相关信号条件下的收敛速率
缺点:其稳态误差由于输出时存在的混叠分量而显著升高,当采用正交镜像滤波器组时,虽然可以通过子带系统将混叠部分相互抵消掉,但在现实中却无法实现。
总结
基于维纳滤波发展起来的 LMS 算法因其结构简单,运算量小,稳定性好等特性,依然是目前得到广泛应用的一种自适应滤波算法。
有人提供了一种折中的方案:基于多带结构的改进型自适应滤波切换算法NLMS-NSAF
一 首先远端语音信号利用包络法判别有无语音段,
二 然后将信号状态输出到自适应多带结构算法模块当中。
三 若语音区输入信号的短时能量较大,则使用收敛速度快的自适应滤波算法(NLMS);
四 若语音区输入信号的短时能量较小,需考虑计算量低的算法(NSAF),
五 语音在无语音区时算法迭代停止。
对输入语音信号能量高低的判定是通过和阈值比较得到的。在充分考虑语音特性的情况下,切换算法实现了算法在收敛速度的优势,同时完成了同算法复杂度的优化选择。最后达到了提高滤波算法性能、降低运算量的目的。这是一个实际的解决方案,不过实际的效果还要等待后续验证,敬请关注,后续我会对这块做一个深挖。
参考文档:
1 https://www.debugger.wiki/article/html/1572616852593650