一种适用于双讲状态的声学回声消除系统

2022-04-14 06:33周文俊夏秀渝
数据采集与处理 2022年2期
关键词:话音步长滤波器

周文俊,夏秀渝

(四川大学电子信息学院,成都 610065)

引言

随着线上语音通话的快速普及以及网络语音传输(Voice over internet protocol,VoIP)技术的不断发展,如何实现高质量的网络语音通信成为一个急需解决的问题[1]。在免提式通话的场景中,声学回声的存在降低了语音通话质量,严重时还会引发啸叫现象[2],极大地影响了用户的听觉体验。

声学回声消除系统中一般采用自适应滤波器来消除回声。回声消除的基本原理如图1 所示。一般情况下,由扬声器-环境-麦克风构成的声回授系统可以被建模成一个有限阶数的线性系统h(n),来自远端的话音x(n)经扬声器播放并通过声回授系统h(n)后成为声学回声y(n),即

图1 回声消除的基本原理Fig.1 Fundamental principles of echo cancellation

式中“*”为线性卷积。回声y(n)与近端话音v(n)混合后一同被麦克风采集,得到自适应滤波器的期望信号,也即近端麦克风信号

回声消除的目的即是去除麦克风信号d(n)中的回声y(n),以此避免给远端用户造成话音干扰。y^ (n)为自适应滤波器的输出信号

误差信号e(n)为d(n)与y^ (n)之间的差值,同时也作为经过回声消除处理后的信号传至远端

若不考虑近端话音v(n)的影响,自适应滤波器将根据误差信号e(n)的大小不断调整自身权系数w(n)。当w(n)与h(n)十分接近时,自适应滤波器的输出y^ (n)≈y(n),此时去远端信号e(n)≈v(n),这样回声就被很好地消除了。然而在实际应用中,近端干扰是不可避免的,因此需要采用步长控制等方法调节滤波器的迭代更新,从而避免权值的发散,并提高收敛性能。

常用的提高双讲状态下回声消除器性能的方法是采用双端话音检测。双端话音检测有能量比较法[3]、基于信号自相关[4]或互相关[5-7]的检测方法、基于过零率的检测方法[8]等。当双讲检测器判断处于双讲时刻时,则冻结滤波器的权系数(即令步长为零),其他时刻进行正常的自适应迭代。但双端判决算法的准确性和鲁棒性并不理想[9]:首先,双讲时刻往往通过设定一个固定阈值来进行判定,而环境和噪声干扰往往是不断变化的;其次,完全冻结权系数导致了自适应滤波器的缓慢收敛。单独采用双滤波器[10]的方式虽然可以在一定程度上防止自适应滤波器在双讲时刻的发散,但稳态误差大,收敛速度慢。还有一类步长控制方法以滤波器失调随迭代次数的增加而减小为准则,通过估计泄漏系数进而确定当前时刻的最佳步长[11-13]。这类方法鲁棒性较强,能比较好地应对双讲情况,但算法复杂度较高,且收敛后的稳态误差仍然较大。本文提出一种根据频谱信扰比(近端话音功率谱值与回声功率谱值之比)确定自适应步长的方法,并结合双滤波器和稀疏控制算法进一步提高回声消除器的鲁棒性和收敛性能,实验表明该算法在回波抑制比、收敛速度及输出音频质量等方面均有所提升。

1 回声消除系统的具体实现

本文所提回声消除系统的整体框图如图2 所示。自适应滤波器采用分段频域块最小均方(Partitioned frequency block least mean square,PFBLMS)算法,步长控制部分主要是为了防止双讲时刻滤波器权值的发散,稀疏控制算法则增加了滤波器的收敛速度,同时减小了稳态误差。双滤波器结构进一步增强了系统在双讲状态下的鲁棒性,辅助滤波器和自适应滤波器之间的系数传递由控制逻辑进行控制。

图2 回声消除系统的整体框图Fig.2 Block diagram of echo cancellation system

1.1 PFBLMS 算法

PFBLMS 算法通过对信号分块划分然后再进行频域处理的方式,克服了归一化最小均方(Normalized least mean square,NLMS)算法计算复杂度高和频域块最小均方(Frequency block least mean square,FBLMS)算法处理延迟大的缺点[14-15]。该算法首先在时域上对滤波器输入信号x(n)和滤波器权系数w(n)做分块处理。设每个分块的权值个数为N,总的分块数为M,则第l次迭代时第p个分块的输入信号向量和滤波器权向量分别为

式中:μ0为全局步长,符号“⊙”为两个向量点乘,上标“H”为取共轭。F和F-1分别为大小为2N×2N的离散傅里叶变换(Discrete Fourier transform,DFT)矩阵和离散傅里叶逆变换(Inverse discrete Fourier transform,IDFT)矩阵,Λ(l)为大小为2N×2N的归一化子带步长矩阵

1.2 步长控制

自适应滤波器对环境冲激响应的建模过程中,将远端话音和回声作为有用信号,而近端话音相当于噪声干扰,会导致滤波器的权值发散。本文实现步长控制的主要思路为:根据频谱信扰比的大小来实时调整自适应滤波器每个频点的迭代步长。本文推导了相干函数与频谱信扰比的关系式,给出依据实时估计的两种相干函数调整自适应滤波器步长的方法。

对于整个回声消除系统而言,近端话音v(n)是有用信号而回声y(n)为干扰信号,因此可定义频谱信扰比为

由式(14)可知,频谱信扰比的比值越大,表明该频点上近端信号功率相对于回声信号功率的比例越大,这时要尽量减小该频点的步长,以防止滤波器的发散;而当频谱信扰比较小时,则可以增加该频点的步长,以加快滤波器的收敛。

1.3 稀疏控制算法和双滤波器

在大多数回声消除的应用场景中,回声通道是稀疏的,即冲激响应系数存在很多零值或者系数值十分分散。当回声通道稀疏性很强时,传统的自适应滤波器收敛性能会大大降低。因此引入稀疏控制算法的主要目的是提高滤波器的收敛速度,并且减小滤波器收敛后的稳态误差[20-21]。

本文采用成比例的稀疏控制算法,即简单地将每一块滤波器系数的总能量与全部分块滤波器系数的平均总能量的比值作为该块滤波器的稀疏控制系数。第p个分块的稀疏控制系数为

对于双滤波器结构,回声消除系统中含有两个滤波器:主滤波器和辅助滤波器。其中主滤波器按照PFBLMS算法作自适应调整,但其误差信号不作为回声消除系统的输出;而辅助滤波器则不作自适应调整,但误差信号会作为系统的输出。主滤波器和辅助滤波器系数的相互复制由一定控制逻辑进行控制,即算法在每次迭代后都会比较两个滤波器对回声抑制能力的大小。如果主滤波器的抑制能力更强,那么将把主滤波器的权系数复制给辅助滤波器,如果辅助滤波器的抑制能力更强,则会将辅助滤波器的权系数复制回主滤波器。两个滤波器对回声抑制能力的高低则主要根据两个滤波器的输出误差信号的能量大小进行判断[22]。

2 仿真与分析

将本文算法的实验结果与文献[5]中基于归一化互相关函数的双端话音检测算法以及开源项目Speex[23]中的回声消除算法做对比。并采用了归一化失调(Normalized misalignment,NMIS)和回波抑制比(Echo return loss enhancement,ERLE)两个参数作为衡量回声消除效果的指标,两个指标分别定义为

归一化失调值越小,表明自适应滤波器的系数越接近实际系统的冲激响应,即建模精度越高。回波抑制比的值越大,表明对回声的抑制程度越大。

实验1 远端输入是均值为0、方差为1 的高斯白噪声,并在近端添加平均功率相对回声大小为-20 dB 的高斯白噪声作为背景噪声。信号采样率设为8 kHz。声回授系统的冲激响应由软件生成,冲激响应的长度为1 024 点,随机选取的两个冲激响应如图3 所示。高斯白噪声输入下的归一化失调和回波抑制比曲线如图4 所示。假定冲激响应在10 s 处发生突变,即由系统1 转变为系统2。

图3 声回授系统的冲激响应Fig.3 Impulse response of the acoustic feedback system

图4 白噪声输入下的归一化失调和回波抑制比Fig.4 NMIS and ERLE in the case of white noise input

从图4 中的曲线可以看出,在滤波器迭代的初始阶段,本文算法的收敛速度最快,但当到达收敛以后,Speex 算法的稳态误差更小,本文算法的稳态误差介于两种算法之间。当环境发生突变以后,Speex算法的收敛速度明显下降,无法及时恢复到收敛状态。综合来看,在白噪声输入的情况下,本文算法的稳态误差和收敛速度都能达到较好的水平。

实验2 远端话音选用一段长20 s 的语音,近端话音在第5~9 s 为有话段,并在全部时刻叠加平均功率相对回声大小为-15 dB 的高斯白噪声作为背景噪声,将近端话音(包含添加的背景噪声)和回声的混合信号作为麦克风采集信号。以上所有信号的采样率均为8 kHz。远端话音、麦克风话音及近端话音的时域波形如图5 所示。回声通道的冲激响应与实验1 中相同,但此时设定为在第12 s 处发生突变。

图5 远端话音、麦克风话音及近端话音的时域波形Fig.5 Time-domain waveforms of far-end voice, microphone voice, and near-end voice

实验2 中输出语音的归一化失调值和回波抑制比随时间的变化曲线如图6 所示。从归一化失调曲线可见,3 种方法均能在不同程度上防止自适应滤波器系数在双讲时刻的发散,但无论是处于双讲时刻还是非双讲时刻,本文方法的滤波器失调都远低于另外两种方法,说明本文方法的建模精度更高。

图6 语音输入下的归一化失调和回波抑制比Fig.6 NMIS and ERLE in the case of voice input

从回波抑制比曲线可以看出,文献[5]中的方法虽然在双讲状态下性能没有发生恶化,但在自适应迭代的初始阶段收敛速度很慢,滤波器接近收敛后的回声消除性能也无法达到满意的效果,稳态误差较大。Speex 中的算法收敛性能有了很大的提高,但双讲时刻下的回波抑制比有着较为明显的下降。虽然本文方法的回波抑制比在双讲时刻也有所下降,但相比于文献[5]的方法高出10 dB 左右,相比于Speex 的回声消除算法也能高出5 dB 左右。

在对回声通道的跟踪性能方面,当环境发生突变后,文献[5]方法的收敛速度明显慢于另外两种方法。且实验表明,该方法在某些情况下还会导致滤波器权系数发生冻结,以至于完全失去对回声通道的跟踪能力。而Speex 的回声消除算法虽然能够稳定地跟踪环境变化,但收敛速度仍然较慢,本文提出的回声消除算法则在应对环境突变的情况下依然保证了更好的收敛速度。

图7 展示了3 种方法的输出信号时域波形图。可见,基于归一化互相关函数的双端检测方法残留回声最大,Speex回声消除算法次之,本文方法的残留回声最小。改变环境冲激响应以及远近端语音等条件,经过多次实验也可证实这一结论。

图7 不同算法的输出信号时域波形Fig.7 Time domain waveforms of outputsignal for different algorithms

实验3 语音样本采用ICASSP 2021 声学回声消除挑战[24]中开源的回声消除测试集,测试集中的语音共分为4 类:单讲无移动、单讲有移动、双讲无移动和双讲有移动。有无移动指的是在通话过程中麦克风或扬声器的位置是否发生变化。在测试集中随机选取上述每类语音样本各100 组,分别采用不同算法进行测试。表1 列举了不同算法在4 种不同情况下的平均ERLE 值,平均ERLE 值的计算方式为:先对每组样本基于所有时域采样点计算ERLE 均值,然后对100 组测试样本的均值ERLE 再进行算术平均。

表1 不同算法的平均ERLE 值Table 1 Average ERLE of different algorithms dB

此外,对于双讲情况,本文还采用了语音质量的感知评价(Perceptual evaluation of speech quality,PESQ)作为评价指标。PESQ 是一种用客观评价算法来模拟人类主观听觉感受的评估方法,PESQ 分值在-0.5~4.5 之间,分值越高,表明语音质量越好。不同算法分别在双讲无移动和双讲有移动情况下的平均PESQ 值如表2 所示。

表2 不同算法的平均PESQ 值Table 2 Average PESQ of different algorithms

从表1 数据可以看出,除单讲无移动情况下,本文算法的平均ERLE 值略低于Speex 的回声消除算法外,其他3 种情况均高于另外两种算法。特别是在双端通话的情况下,相比与另外两种算法有着较为明显的提升。从表2 数据可以看出,本文算法在两种双讲情况的PESQ 值均高于其他算法,说明经过本文算法处理后的语音有着更好的音频质量。

3 结束语

本文提出了一种基于频谱信扰比的步长控制方法,并结合稀疏控制算法以及双滤波器,组成了一种新的回声消除系统。仿真实验表明,该系统的性能高于文献[5]中基于归一化互相关函数的双端话音检测算法以及开源项目Speex 中的回声消除算法。算法复杂度方面,所提算法与Speex 的回声消除算法相当,但若考虑加入非线性处理,则本文算法更具优势,因为步长控制中估算的相干函数值可以直接用于非线性处理中。

同时本文提出的算法也存在一些有待改进的方面,由于引入了双滤波器,算法的复杂度仍然过高;步长控制中比例系数a的取值是固定的,这将导致系统性能在不同的条件下存在一定的差异;经过处理后的近端语音依然存在少量的残留回声。接下来的工作考虑针对这些缺点不断完善和优化所提出的回声消除系统,并结合非线性处理,在尽量减小语音失真的前提下进一步消除残留回声。

猜你喜欢
话音步长滤波器
中心差商公式变步长算法的计算终止条件
基于Armijo搜索步长的BFGS与DFP拟牛顿法的比较研究
一种改进的变步长LMS自适应滤波算法
从滤波器理解卷积
开关电源EMI滤波器的应用方法探讨
话音叠加中实时混音算法的FPGA实现
一种微带交指滤波器的仿真
地空话音组网系统的应用及前景分析研究
基于动态步长的无人机三维实时航迹规划
基于TMS320C6678的SAR方位向预滤波器的并行实现