芮贤义, 唐宇轩
(苏州大学电子信息学院,江苏 苏州 215006)
回声消除作为语音交互、视频会议等领域不可或缺的一项重要技术,主要用来解决双端通信中回声干扰问题[1-2],例如智能对讲系统中的回声消除[3],在提高语音通话质量的同时,也为安全增添了一份保障。随着语音交互技术越来越成熟,回声消除在人机交互领域也发挥着重大的作用,例如车载语音、智能音响中的回声消除,可以提高语音的唤醒率和识别率,从而实现更好的语音控制[4-5]。在自适应信号处理领域中,滤波器理论是非常重要的内容,回声消除最早且最基础的理论就是基于维纳理论发展起来的最小均方差算法,也是自适应滤波算法中的主要算法之一[6]。
回声消除根据消除对象可以分为线性回声消除和非线性回声消除。前者是回声消除的主要对象;后者由于声学器件的小型化和廉价化,使原本线性的回声产生了非线性失真,使得整个回声成为非线性回声。线性回声消除算法包括基于最小均方差(Least Mean Square,LMS)算法、归一化最小均方差算法(Normalized Least Mean Square,NLMS)[7]、比例归一化最小均方差算法(Proportionate Normalized Least Mean Square,PNLMS)[8]等,针对线性回声,这些算法都有较好的消除效果,但当存在非线性回声时,算法的性能大大降低。Sankar等[9]通过引入核函数与传统线性自适应滤波器结合,构造出一种消除非线性回声的带核自适应滤波算法;Raghuwanshi等[10]设计了一种组合函数链路自适应滤波器,两种方法均先将远端信号通过线性和非线性函数扩展的支路,再将两路信号进行合并,以便消除非线性回声。
面向自适应滤波的教学和科研需要,本文设计了自适应回声消除实验,采用基于最小均方差的改进算法进行线性和非线性回声消除。线性回声消除实验中的远端信号和非线性回声消除中的远端信号和近端信号均采用ICASSP声学回声消除挑战赛数据库[11]中的远端和近端语音信号,线性回声消除中的近端信号则由模型仿真生成,再通过相应的自适应滤波算法对系统进行回声消除,最后完成近端语音回声消除。实验中可以使用现有的自适应算法直接进行回声消除,也可由学生改进算法进行创新实验。
自适应回声消除的基本原理框架如图1所示。图中:x(n)为远端语音信号,也是自适应滤波器的输入信号;y(n)为实际回声信号;v(n)为近端语音信号;d(n)为实际麦克风信号,是近端语音信号v(n)和实际回声信号y(n)的叠加;y′(n)为滤波器估计的输出信号,也就是估计的回声信号;e(n)为误差信号。
回声消除就是利用自适应滤波器来估计实际回声信号,根据误差e(n)更新滤波器的系数,使得估计的回声信号y′(n)不断逼近实际回声信号y(n)。最终达成回声消除的目标。
当远端语音信号通过近端房间的扬声器播放时,又直接或间接被近端麦克风接收到,随后都传送回给远端,这就是产生了线性声学回声。
随着低成本的小型设备在免提通话中的广泛应用,近端的放大器和扬声器之间的非线性失真问题日益严峻[12]。因而在进行回声消除时,必须考虑到非线性存在的问题。
为了更好地模拟线性回声,Allen等[13]提出了一种Image模型来模拟房间脉冲响应。该模型可以通过设置近端房间的大小、麦克风的位置、墙面反射系数等参数生成房间脉冲响应h(n),以便更好地构造出房间混响模型。
为了准确模拟放大器和扬声器引起的非线性回声,引入一个函数模型应用于远端信号x(n),其表达式为
式中,
γ为Sigmoid函数增益,一般取γ=2;p的值由q(n)确定:
再将O(n)与房间脉冲响应h(n)卷积,得到非线性回声。
对自适应滤波器,如何更新滤波器的系数是关键所在。其中Widrow和Hoff在1960年提出的LMS算法是回声消除领域内最基础的自适应滤波算法。
具体操作步骤如下:
(1)初始化:将滤波器的权值H(n)初始化为0。
(2)初始输入:x(n),d(n),M,μ,其中x(n)为远端信号在n时刻的M×1维抽头输入向量,
d(n)为在n时刻的期望响应;M为滤波器长度;μ为步长因子,且0<μ<2/λmax,λmax是输入x(n)的相关矩阵的最大值。
(3)计算滤波输出
(4)计算估计误差
(5)权值向量更新
由式(3)~(5)可知,对于LMS算法,当x(n)较大时,会导致梯度放大;当x(n)较小时,算法收敛速度较慢。为解决这个问题,提出了NLMS算法。NLMS算法仅在权值更新上不同,其权值向量更新为
式中,α为很小的正整数,防止除数为0的情况。
在免提通话中,系统的回声路径被认为是稀疏的,即回声路径中仅有少量系数具有显著值,而其他系数为0或非常小的冲激响应。Duttweiler根据系统脉冲响应的系数性特性,提出了PNLMS算法。PNLMS算法也只在权值更新上不同,表达式如下:
式中:ρ=5/M;α,μ与NLMS中的含义相同;δp由下式得出,
X为输入远端信号的长度。
通过引入步长控制矩阵G(n+1),算法在迭代过程中对全部参数按比例因子重新分配,大系数获得大步长,小系数获得小步长,以提高算法的收敛速度。Deng等[14-15]通过在权系数分配上引入对数函数,得到了μ准则下比例归一化最小均方差算法(PNLMS based on Mu-law,MPNLMS),该算法更合理地分配了权系数,使得算法的收敛速度得到了提升。MPNLMS引入对数函数为:
本文提出一种基于协同函数链接型的核自适应滤波算法(Kernel Adaptive Filtering Algorithm Based on Collaborative Function Link,CF-KAF),其结构如图2所示,滤波器两支路的更新权值遵循MPNLMS算法。
如图2所示,该方法将远端语音信号同时传入线性自适应滤波器和非线性自适应滤波器,再将两者的输出组合,作为整个系统的滤波输出。具体步骤如下:
(1)远端输入核函数扩展。由于高斯核函数有通用逼近能力,且数值计算稳定,所以使用高斯核函数做核扩展,表达式如下:
通过式(15)可以得到扩展后的输入信号Φ。
(2)计算非线性滤波输出
(3)通过协同函数方法组合线性和非线性滤波输出。线性滤波输出与式(4)相同,为了区别,这里记为CL,那么组合的滤波输出为
式中,λ(n)为Sigmoid函数,
以及a(n)的迭代式如下:
式中:μa为a(n)的步长因子;r(n)是非线性自适应滤波器的输出信号功率
β是一个平滑因子。
(4)计算误差信号。整体误差信号:
局部误差信号:
(5)权系数更新。线性权系数更新与MPNLMS算法更新方式相同;非线性权系数更新公式为
式中:μFL为非线性自适应滤波器长;
ρ=5/MNL和MFL为核自适应滤波器阶数;
Y为输入信号核化后的长度。
(1)从数据库中获取远端信号,期望信号可以由建立模型生成,也可在数据库中直接获取。
(2)设置实验所需参数,选择相应的算法,并根据误差更新迭代滤波器系数,计算输出。
(3)给出两种评价指标分别用于衡量线性与非线性回声消除性能。
权值误差(Weight Error Vector Norm,WEVN)定义为
式中:h为实际回声路径脉冲响应;H为自适应滤波器权值。WEVN值越小,表明自适应滤波器的收敛性能越好,权值越逼近回声路径的脉冲响应。
回声衰减增益(Echo Return Loss Enhancement,ERLE)被定义为
式中:d(n)是期望信号;e(n)是误差信号。ERLE值越大,表明回声抑制越有效,算法性能越好。
利用MATLAB软件完成系统GUI界面设计,包含语音信号导入、算法选择、设置步长参数和结果显示等。
2.2.1 线性回声消除实验结果
当系统进行线性回声消除时,设置线性步长为0.05,选择PNLMS算法,并采用式(29)来评价算法的性能,如图3所示。
2.2.2 非线性回声消除实验结果
当系统进行非线性回声消除时,设置线性步长为0.02,非线性步长为0.005,选择CF-KAF算法,并采用式(30)来评价算法的性能,如图4所示。
不同信噪比条件下回声消除性能对比如表1所示,可以看出随着信噪比的下降,本文的改进算法CFKAF仍能保持一定的优越性。
表1 不同信噪比下的回声衰减增益性能比较
本文设计了基于自适应滤波的回声消除实验,充分体现科研反哺教学的理念[16],培养学生的创新思维和实践动手能力。实验结果表明,基于协同函数链接型的核自适应滤波算法对非线性回声消除有较好的效果,且不同信噪比的高斯白噪声环境下仍能保持一定的优越性。通过实验的设计和操作,可以让学生更好地掌握回声消除的原理和系统的整体设计过程,也为进一步理解自适应滤波原理打下良好的基础。