• 回声消除中的自适应滤波算法综述


    作者:凌逆战
    博客园地址:https://www.cnblogs.com/LXP-Never/p/11773190.html


    自适应回声消除原理

      声学回声是指扬声器播出的声音在接受者听到的同时,也通过多种路径被麦克风拾取到。多路径反射的结果产生了不同延时的回声,包括直接回声和间接回声。

    直接回声是指由扬声器播出的声音未经任何反射直接进入麦克风。这种回声的延时最短 ,它同远端说话者的语音能量,扬声器与麦克风之间的距离、角度 ,扬声器的播放音量,麦克风的拾取灵敏度等因素直接相关;

    间接回声是指由扬声器播出的声音经过不同的路径 (如房屋或房屋内的任何物体 )的一次或多次反射后进入麦克风所产生的回声的集合。房屋内的任何物体的任何变动都会改变回声的通道。因此,这种回声的特点是多路径的、时变的。

      自适应回声消除的基本思想是估计回音路径的特征参数,产生一个模拟的回音路径,得出模拟回音信号,从接收信号中减去该信号,实现回音抵消。其关键就是得到回声路径的冲击响应$hat{h}(n)$,由于回音路径通常是未知的和时变的,所以一般采用自适应滤波器来模拟回音路径。自适应回音消除的显著特点是实时跟踪,实时性强。

    回声消除原理框图

      图中$ y(n)$代表来自远端的信号 , $r(n)$是经过回声通道而产生的回声,$x(n)$是近端的语音信号。D端是近端麦克风,麦克风采集到的房间叠加的回声和近端说话人的语音。对回声消除器来说,接收到的远端信号作为一个参考信号,回声消除器根据参考信号由自适应滤波器产生回声的估计值$hat{r}(n)$,将$hat{r}(n)$从近端带有回声的语音信号减去,就得到近端传送出去的信号 。在理想情况下,经过回声消除器处理后,残留的回声误差$e(n)=r(n)-hat{r}(n)$将为0,从而实现回音消除。

    自适应滤波器算法的性能指标

    收敛速度:滤波器的收敛速度越快越好,使正常通话开始后,通话者很快就感觉不到明显的回波存在。

    稳态残留回波(稳定性):即当滤波器收敛达到稳态后的回波输出量,实际中总是希望该参数越小越好。

    算法复杂度:良好的算法应该在保持收敛速度的同时尽量降低计算复杂度,同时也能减少功耗

    ITU-T G.168对各种回音抵消器产品在包括以上两个主要指标在内的各种指标规定了必须达到的标准。

    自适应滤波器结构

    自适应滤波器结构

      图中所示滤波器的输入是$X(n)={x(n),x(n-1),...x(n-N+1)}^T$,$z^{-1}$滤波器z域模型的延迟单元(零状态),滤波器的权重系数是$h(n)={h_1(n),h_2(n),...,h_N(n)}^T$,$d(n)$为期望输出信号,$hat{d}(n)$为滤波器的实际输出,也称估计值,$hat{d}(n)=sum_{i=1}^Nx(n-i+1)h_i(n)$。$e(n)$是误差,$e(n)=d(n)-hat{d(n)}$,由误差经过一定的自适应滤波算法来调整滤波系数,使得滤波器的实际输出接近期望输出信号。

      传统的IIR和FIR滤波器在处理输入信号的过程中滤波器的参数固定,当环境发生变化时,滤波器无法实现原先设定的目标。自适应滤波器能够根据自身的状态和环境变化调整滤波器的权重。

      自适应滤波器类型。可以分为两大类:非线性自适应滤波器线性自适应滤波器。非线性自适应滤波器包括基于神经网络的自适应滤波器及Volterra滤波器。非线性自适应滤波器信号处理能力更强,但计算复杂度较高。所以实践中,线性自适应滤波器使用较多

    主要分为两类FIR滤波器、IIR滤波器。

    1. FIR滤波器时非递归系统,即当前输出样本仅是过去和现在输入样本的函数,其系统冲激响应h(n)是一个有限长序列。具有很好的线性相位,无相位失真,稳定性较好
    2. IIR滤波器时递归系统,即当前输出样本是过去输出和过去输入样本的函数,其系统冲激h(n)是一个无限长序列。IIR系统的相频特性是非线性的,稳定性不能保证。好处是实现阶数较低,计算量较少

    由于IIR存在稳定性问题,因此一般采用FIR。

      自适应滤波器算法按照不同的优化准则,常见自适应滤波算法有:递推最小二乘算法(RLS),最小均方误差算法(LMS),归一化均方误差算法(NLMS),快速精确最小均方误差算法,子带滤波,频域的自适应滤波等等。

    全带自适应稀疏算法

    谱减法

      本文研究的背景噪声是以汽车噪声和风声为主要对象,此类噪声的特点为加性的、局部平稳的、且与语音信号统计独立。谱减法根据噪声的加性特点,通过噪声能量估计和增益计算得到噪声的功率谱,然后从带噪语音的功率谱中减去估计出的噪声得到较为纯净的语音。

      由于谱减法没有考虑人耳听觉对语音频谱分布的幅度较为敏感的特点。因此采用谱减法进行滤波后,会给原信号带来噪声,使语音质量变差,并且会影响到其他处理,如语音编码等。用实际的语音信号检测谱减法的滤波效果,如图下所示,可以看出,经过谱减法后噪声得到了一定的消除,但频率较低的信号处滤波效果并不是很理想。

    递归最小二乘法 RLS

    RLS算法的基本方法为:

    $$egin{array}{l}mathop dlimits (n) = X_{}^T(n)H(n - 1)\e(n) = d(n) - mathop dlimits(n)\k(n) = frac{{P(n - 1)X_{}^3(n)}}{{lambda  + X_{}^T(n)P(n - 1)X_{}^3(n)}}\P(n) = frac{1}{lambda }[P(n - 1) - K(n)X_{}^T(n)P(n - 1)]\H(n) = H(n - 1) + K(n)e(n)end{array}$$

    K(n) 称为Kalman 增益向量,$lambda$是一个加权因子,其取值范围$0<lambda<1$,该算法的初始化一般令$H(-1) = 0$及$P(-1) = frac{1}{delta I}$,其中δ是小的正数。

    最小均方算法 LMS

      1959年由Widrow和Hoff提出了最小均方(Least Mean Square,LMS)算法,基于维纳滤波理论,采用瞬时值估计梯度矢量的算法,通过最小化误差信号的能量来更新自适应滤波器权值系数。

    [ abla (n) = frac{{partial [mathop e olimits^2 (n)]}}{{partial {f{h}}(n)}} =  - 2e(n){f{X}}(n)]

    按照自适应滤波器滤波系数矢量的变化与梯度矢量估计的方向之间的关系,可以写出LMS算法调整滤波器系数的公式如下所示:

    $${f{h}}(n+1)={f{h}}(n)+frac{1}{2}mu [- abla (n)]\={f{h}}(n)+mu e(n){f{X}}(n)$$

      上式中的$mu$为步长因子。$mu$值越大,算法收敛越快,但稳态误差也越大;$mu$值越小,算法收敛越慢,但稳态误差也越小。为保证算法稳态收敛,应使$mu$在以下范围取值:

    $$0 < mu  < frac{2}{{sumlimits_{i = 1}^N {x(i)_{}^2} }}$$

      从收敛速度来看,RLS 算法明显优于LMS 算法,但RLS 算法在运算上却比LMS 算法复杂得多,为了减小计算复杂度,并保留RLS 的收敛性能,人们提出了一些改进的RLS 算法。如RLS 格型算法,快速RLS 算法,梯度格型算法,快速横向滤波器算法等。总的来看,这些以收敛法都是以运算速度换取运算复杂性。

      于是人们研究介于两者之间的一种算法, 如共轭梯度法、自仿射投影算法 等。共轭梯度法不需要RLS 中的矩阵运算,也没有某些快速RLS 算法存在的不稳定问题,但它的缺点是稳态误差比较大。

      而LMS 算法的优点是运算简便,但它只有一个可调整参数,即步长因子μ ,可以用来控制收敛速率, 由于μ 的选择受系统稳定性的限制, 因此, 算法的收敛速度受到很大限制。为了加快收敛速度人们提出许多改进的LMS 算法。

    • 优点:抑制旁瓣效应
    • 缺点:LMS算法计算复杂度不高,但是其收敛速率较慢,并且随着滤波器阶数(步长参数)升高,系统的稳定性下降,要保证采用最小的步长参数,保证最小的失调,可能无法满足收敛标准

    块处理LMS算法(BLMS)

      为了对付LMS运算量大的问题,在LMS基础上提出了块处理LMS(BLMS)。它与LMS算法不同的是:LMS算法是每来一个采样点就调整一次滤波器权值;而BLMS算法是每K采样点才对滤波器的权值更新一次。这样BLMS算法的运算量就比LMS的运算量要小的多,但它的收敛速度却与LMS算法相同。

    块自适应滤波器的原理图

      输入数据序列经过串一并变换器被分成若干个长度为L的数据块。然后将这些数据块一次一块地送入长度为M的滤波器中,在收集到每一块数据样值后,进行滤波器抽头权值的更新,使得滤波器的自适应过程一块一块地进行,而不是像时域传统自适应滤波算法那样一个样值一个样值地进行。

    具体算法如下:

    $$公式一:{f{h}}(n+1)={f{h}}(n)+frac{1}{2}mu [- abla (n)]={f{h}}(n)+mu e(n){f{X}}(n)$$

    由上面公式可知,可以推出:

    $${f{h}}(n) = {f{h}}(n - 1) + mu e(n - 1){f{X}}(n - 1)$$

    代入公式一得:

    $${f{h}}(n + 1) = {f{h}}(n - 1) + mu e(n){f{X}}(n) + mu e(n - 1){f{X}}(n - 1)$$

      由于在块自适应滤波算法中,误差信号随抽样速率而变,故可得出对于每一个数据块,都有不同的用于自适应过程的误差信号值。因此,对于第k个数据块,可以对所有的可能值求乘积$x(kL+i)e(kL+i)$之和,并由此定义运行在实数据上的块LMS自适应滤波算法的权向量的更新公式,一次类推可得:

    $$h(n+k+1)=h(n)+mu e(n+kL)X(n+kL)+...+mu e(n+kL+L)x(n+kL+L)=h(n)+musum_{i=0}^{L-1}e(n+kL+i)x(n+kL+i)$$

    其中,$\mu$为步长因子。

    块自适应滤波算法具有与时域传统自适应滤波算法相似的特性。块LMS自适应滤波算法使用了更精确的梯度向量估计。

    归一化最小均方算法 NLMS

      归一化最小均方(Normalized Least Mean Squares,NLMS)算法是改进的LMS算法,根据原LMS算法中误差信号与远端输入信号的乘积,对远端输入信号的平方(功率)进行归一化处理,将固定步长因子的LMS算法变为根据输入信号时变的变步长NLMS算法,具体算法如下:

    $$egin{array}{l}estimated\_echo(i) = sumlimits_{k = 0}^{N - 1} {{a_k}y(i - k)} \{a_k}(i + 1) = {a_k}(i) + frac{{{eta _1}}}{{{P_y}(i)}}e(i)y(i - k)\{P_y}(i) = (average(left| {y(i)} ight|))_{}^2end{array}$$

    其中$a(k)$为滤波器的系数,$e(n)$为误差信号,$eta_1$为固定环路增益,N为滤波器系数,$P_y(i)$为参考信号的能量估计。

    • 优点:改善了LMS算法收敛速度慢的缺点。计算简单、更高的精度
    • 缺点:输入相关信号时,收敛速率明显下降

    后续研发除了归一化块处理LMS(BNLMS):结合以上NLMS和BLMS两者的特点则有归一化块处理LMS(BNLMS)

    变步长LMS(VSS LMS)

      针对μ 值, 人们研究了许多变步长LMS 算法(Variable Step-Size LMS),一般是在滤波器工作的开始阶段采用较大的μ值,以加快收敛速度,而在后阶段采用较小的μ值,可以减小稳态误差。这类算法的关键是确定在整个过程中μ值如何变化或μ值在何种条件满足下才改变。

    • 优点:收敛速度快,
    • 缺点:算法的稳定性和跟踪能力上较易受输入噪声的影响

    仿射投影算法

      仿射投影滤波器是归一化 LMS 滤波器的推广。具体来说,归一化滤波器抽头 系 数 的 调 整 项$frac{ ilde{mu }x(n)e^*(n)}{||x(n)||^2+delta }$被 更 复 杂 的$ ilde{mu }A^H(n)(A(n)A^H(n)+delta I)^{-1}e(n)$所代替,其中 I 是单位矩阵,$delta$是一个小正常数。

      我们将仿射投影滤波器的设计用约束最优化问题来描述:

    其约束条件为:

    式中 N 小于输入数据的维数 M。

      当 N=1时,归一化 LMS 滤波器是这个约束最优准则的一个特例,其中仿射投影滤波器的阶数可看作 N 。

      结合式上面两个公式基于多约束拉格朗日乘子法,建立如下代价函数:

    引入如下定义:
    1、 N*M 的数据矩阵 A(n) ,其共轭转置定义为:

    2、 N *1的期望响应向量 d(n) ,其共轭转置定义为:

    3、 N *1的拉格朗日向量 $lambda ^H$,其共轭转置定义为:

    利用式(3-12)重新定义代价函数为:

    对代价函数 J(n) 取权向量的微分可得:

    设该导数为零,可得

    为了从上式中消去拉格朗日乘子向量$lambda$ ,首先利用式(3-13)和(3-14)的定义,重写
    式(3-11)为:

    然后,在式(3-18)两边同时左乘以 A(n) 并利用式(3-10)和式(3-19)消去权向量$hat{w}$(n+1),则得

    由此,可以推出如下结果:

    1、设 n 次迭代得到的数据$d(n)$与$A(n)hat{w}(n)$之间的差为:

    2、矩阵乘积$A(n)A^H(n)$是一个 N *N 矩阵,它的逆为$(A(n)A^H(n))^{-1}$。

    因此对式(3-20)求解向量$lambda$,得:

    将式(3-22)代入式(3-18),得到的最优变化的权向量为:

    最后,我们对需多次迭代的权向量进行控制。为此,把步长参数$ ilde{mu}$代入式(3-23),得到:

    等价地,可写出:

    式(3-25)为仿射投影滤波器的更新方程。因此仿射投影算法的运算过程描述如下:

    其中 M 为抽头数,$ ilde{mu}$为自适应常数,N 为滤波器阶数。

      仿射投影算法较 NLMS 更适合处理输入信号具有相关性的情况,因为仿射投影算法滤波器系数的更新依赖于多个输入信号,而非只与上一时刻的输入信号相关。和 NLMS 算法类似,仿射投影算法的收敛速度也随着步长因子的变化而改变,因此仿射投影算法也可针对步长因子进行改进。通常情况下,仿射投影滤波器较归一化 LMS 滤波器收敛速度要快。然而,仿射投影算法性能的改善是以算法复杂度的增加为代价的,在实际应用中,对于要求实时性的场合会受到限制。

    • 优点:收敛快
    • 缺点:运算量很大

    稀疏类自适应算法——PNLMS

    通过对回声路径模型的分析,发现回声能量中较活跃系数均在时域聚集,且比重很小,其数值只有很少不为零的有效值,大多数都是零值或者接近零值,这就是回声路径具有的稀疏特性(基于时域对信号进行处理的一种特性)

    PNLMS

    根据回声路径的稀疏性,Duttweiler引入了比例自适应的思想,提出了比例归一化最小均方算法 PNLMS,按比例分配滤波器的权值向量大小,该算法对回声消除的发展具有非常重要的意义。 

      该算法采用与滤波器抽头稀疏成正比的可变步长参数来调整算法收敛速度,利用其抽头稀疏的比例值来判断当前权重稀疏所属的活跃状态,根据状态的不同,所分配的步长大小也有所差异,活跃抽头系数分配较大的步长参数,这样可以加速其收敛,而不活跃的抽头系数则相反,通过分配其较小的步长参数来提高算法的稳态误差。每个滤波器抽头被分别赋予了不同估计值,算法的稳态收敛性得到了明显改善。然而,PNLMS 有一个明显的缺点,即比例步长参数的选择引入了定值,这会导致估计误差累积,最后使算法在后期的收敛速度减慢下来。

    优点:使算法对于稀疏的回声路径,在初始阶段拥有快速的收敛速率,与此同时降低了稳态误差,
    缺点

    1. 由于 PNLMS 算法过分强调大系数的收敛,而当系数变小后,P 步长也随之变小,但随着算法的运行,则可能出现算法后期收敛速度慢、不能及时收敛的情况
    2. 相比于NLMS算法增加了算法的复杂度
    3. 另外在回声路径非稀疏情况下,收敛速度会变得比NLMS算法更慢

    PNLMS++

    PNLMS ++算法,在每个采样周期内,通过将NLMS算法和PNLMS算法之间进行交替来实现收敛速度方面的提升。但是PNLMS ++算法只在回声路径稀疏或高度非稀疏的情况下表现良好。

    CPNLMS

    CPNLMS 算法(Composite PNLMS)通过比较误差信号功率和已设阈值大小,来判断算法采用 PNLMS 还是 NLMS 算法

    • 缺点:阈值的选取往往和实际环境有关,因此该算法在实际应用中不能通用

    $mu$准则MPNLMS

    $mu$准则MPNLMS算法:为了解决PNLMS算法后程收敛速度慢的问题,将最速下降法应用到PNLMS算法中,使用$mu$准则来计算比例因子(使用对数函数代替PNLMS算法中的绝对值函数)

    • 优点:使得滤波器权值向量的更新更加平衡,提升了PNLMS算法接近稳态时期的收敛速率
    • 缺点:复杂性加大

    改进比例归一化最小均方 IPNLMS

      IPNLMS算法,基于L1范数将估计的回声路径权值向量均值与比例步长参数之和作为比例矩阵的对角元素(通过调整滤波器的比例参数步长),使得IPNLMS有着和PNLMS相近的初始收敛速率,并且在非稀疏的回声路径条件下,IPNLMS的收敛速率相比PNLMS有所改善,但性能改善的同时也增加了计算复杂度。

    改进的IPNLMS

      在PNLMS类算法进行自适应迭代更新过程中,大抽头权值向量拥有大步长因子,这样提升了收敛速率,但滤波器自适应收敛至接近稳态时,大抽头权值向量将会产生较大的稳态误差。为了解决这一问题,P.A.Naylor提出了改进的IPNLMS(Improved IPNLMS,IIPNLMS)算法。IIPNLMS算法在IPNLMS算法的基础之上,对于数值较大的权值向量,使用较小的参数使得其步长成比例减小,从而降低系数噪声。

    MPNLMS

    MPNLMS算法引入最优步长控制矩阵,均衡了滤波器大小系数之间的更新,MPNLMS 中 P 步长的计算方式克服了 PNLMS 过分注重大系数收敛忽略小系数收敛的缺点,修正了 PNLMS 算法收敛后期速度慢的缺点,但

    • 缺点:MPNLMS算法的运算过程中包含对数的计算,因此算法的运算复杂度相对较高。

    SPNLMS

    SPNLMS算法,将MPNLMS滤波器更新过程中的对数函数关系简为两段折线形式的形式。

    SPNLMS的P步长计算函数$F(|w_l(k)|)$可以描述为:

    $$F(|w_l(k)|)=left{egin{matrix}
    600*|w_l(k)|&&|w_l(k)leq 0.005|\
    3&&其他
    end{matrix} ight.$$

    • 优点:相对于MPNLMS为减小运法复杂度
    • 缺点:但收敛速度有所下降

    改进的 MPNLMS算法,采用多个分段函数来近似 MPNLMS 的对数函数,从而降低算法的复杂度。

    改进的 SPNLMS算法,通过控制步长控制矩阵迭代的频率降低算法复杂度。收敛速度也所下降

    以上对 MPNLMS 的改进算法在减小算法运算复杂度的情况下损害了收敛性能和稳定性能。

    稀疏控制(Sparse Control, SC)

    有时候回声路径的稀疏程度会根据温度、压力以及房间墙面的吸声系数等等因素而产生变化,这就需要一种能够适应不同稀疏度变化的AEC算法。

    稀疏控制比例回声消除算法(SC-PNLMSSC-MPLNMSSC-IPNLMS),使用新的稀疏控制方法动态地适应回声路径的稀疏程度,使得算法在稀疏和非稀疏的回声路径条件下都有良好的性能表现,体现了稀疏控制类的自适应滤波算法能够提高算法对回声路径稀疏程度的鲁棒性。

    小总结:通过上述对 PNLMS 算法的分析,可知导致 PNLMS 算法整体收敛速度慢的原因主要是大系数和小系数之间收敛的不均衡。尽管很多学者针对此缺陷提出了修正算法,如 PNLMS++、CPNLMS 等,但是 PNLMS 忽略小系数收敛的缺陷并未从根本上得到改善,因此这些改进算法的效果不是十分理想。Deng通过对滤波器系数收敛过程的定量分析,在权系数更新过程中推导出最优步长的计算方式,提出一种改进的算法——MPNLMS 算法。MPNLMS 中 P 步长的计算方式克服了 PNLMS 过分注重大系数收敛忽略小系数收敛的缺点,修正了 PNLMS 收敛后期速度慢的缺陷。

      一种新的改进型 PNLMS 算法,因 PNLMS 算法只注重大系数更新,忽视小系数收敛,致使算法在收敛后期速度下降,因此在 P 步长引入的同时必须注意小系数的更新。MPNLMS 算法通过建立 P 步长与当前滤波器权系数的函数关系,在一定程度上解决了 PNLMS 算法后期收敛速度慢的问题,但滤波过程包含了对数运算,不利于系统的实时实现。

    ​   本文通过定量分析滤波过程,并考虑到大、小系数的收敛,建立了一种新的 P步长与当前滤波器系数之间的映射关系,降低了算法的运算复杂度。 该改进算法以 PNLMS 算法为基础,通过改变收敛过程来克服 PNLMS 算法的缺陷

    子带自适应滤波器(SAF)

      在声学回声消除应用中,远端输入语音信号的相关性较高,然而,传统的方法是基于“信号的无关性”假设的,传统的全带LMS 和NLMS 等计算复杂度低的随机梯度算法收敛速度明显下降。

    远端语音信号相关性有两层含义:

    • 时域上:它表征语音信号相关矩阵特征值的扩散度
    • 频域上:它表征远端语音信号的频谱动态范围

      一般来说,语音信号相比白色信号,前者明显有更大的频谱动态范围,即更大的信号相关性。因此,可以通过降低输入信号的相关性来加快算法收敛速度,但是行之有效的一种方法是将自适应滤波器和滤波器组理论相结合,提出了子带自适应滤波(subband adaptive filter,SAF)算法,子带结构是基于频域对信号进行的一种处理(节省计算量、提高收敛速度)。

    子带自适应滤波器:SAF算法将相关信号通过滤波器组分割成近似无关的各个子带独立信号(子带分割)。然后对子带信号进行多速率抽取来获得采样信号,再进行信号的自适应处理。为研究子带自适应滤波器,首先需要了解多速率信号抽取系统和滤波器组。

    多速率系统[1]

      用于子带自适应滤波器的多速率抽取系统有下采样上采样两种,主要通过抽取和插值方法来使系统获得不同采样率。输入信号经过 N 个滤波器分频后的总采样点数是原信号的 N 倍,大幅度提高的采样数增加了计算量。

    滤波器组[1]

      信号子带分割通过滤波器组实现。滤波器组由分析滤波器综合滤波器共同组成。而滤波器组的实质是一系列带通滤波器。

      分析滤波器组将数字信号分割后抽取成多个子带信号,经过信号处理后,综合滤波器组再对子带信号进行插值和滤波相加而恢复成原来的信号。

    子带自适应算法结构[1]

       在传统的 SAF中,子带自适应算法都是以最小化子带误差信号为目标的,这样基于局部目标函数误差的最小化不一定是全局误差能量最小化。而分析滤波器组在子带切割和综合滤波器组重建全带信号时皆会引入时延,在AEC 应用中,这样的时延会使包含近端语音的全带误差信号传到远端,为了消除时延的影响,无延时子带闭环结构系统以全局误差能量最小化为约束条件来调整滤波器系数。最后,确保自适应滤波算法能够收敛到最佳的滤波器系数。

    • 优点:改善了全带自适应滤波算法在相关信号条件下的收敛速率
    • 缺点:
      • 但其稳态误差由于输出时存在的混叠分量而显著升高
      • 当采用正交镜像滤波器组时,虽然可以通过子带系统将混叠部分相互抵消掉,但在现实中却无法实现

    子带自适应算法的后续发展

    问题:针对SAF算法稳态误差较高的问题

    解决:提出了 基于最小扰动原理提出了归一化的SAF(normalized SAF,NSAF)算法。

    优点:由于SAF类算法固有的解相关特性,NSAF在处理相关输入信号时比全带的NLMS收敛速度快,而且计算成本与NLMS不相上下

    近几年研究人员为了能够提升AEC算法的收敛性能和稳态性能,在NSAF的基础上结合全带自适应滤波算法的成比例理论,提出了几种改进的NSAF算法,例如不同形式的变步长因子NSAF以及变正则化参数NSAF。为了在识别稀疏回声路径时快速收敛,文献[22,23]将NLMS算法中的成比例思想以类比的方式融合到NSAF算法中,提出了比例NASF(proportionate NASF,PNSAF)算法和μ准则PNSAF(μ-law PNASF,MPNSAF)算法。

    因为子带结构中存在混叠分量问题

    1. Keermann于1988年利用采样滤波器组技术消除了混叠现象,但是此举增加了算法复杂度。
    2. 相邻子带间留安全频带,缺点:引入了空白频带,降低了信号质量。
    3. 重叠子滤波器补偿法,缺点:因为交叉项而增加了运算量,还降低了收敛速度。

    2004年K. A. Lee 和 W. S. Gan提出了基于最小扰动原理的多带结构式自适应滤波器(Multiband Structured SAF,MSAF)算法,并给出了自适应滤波器抽头系数的更新方程。该结构完全不存在滤波器输出端的混叠分量问题。

    多带自适应滤波器

      子带自适应滤波器中每个子带单独使用一个子滤波器。该结构会导致输出端产生混叠分量,解决此问题的传统方法多以降低信号的质量或增大稳态误差为代价,Lee 和 Gan在 2004 年提出了一种全新多带结构。不同于子带滤波器在每个子带都使用不同的滤波器,多带结构的每个子带使用相同的全带滤波器,这很好地克服了输出端存在混叠分量的问题。

    频域块LMS自适应滤波算法

      块LMS自适应滤波算法中的线性卷积和线性相关均可以采用快速傅里叶变换(FFT)来实现。因此,块LMS自适应滤波算法的有效实现方法实际上是利用FFT算法在频域上完成滤波器系数的自适应。这样实现的块LMS自适应滤波算法称为频域块LMS自适应滤波算法(FDAF,Frequency-Domain Block Least MeanSquare Adaptive Filter)

      另一方面,数字信号处理中常用的重叠存储法重叠相加法为快速卷积运算提供了强有力的工具,即利用离散傅里叶变换计算线性卷积。重叠存储方法是非自适应滤波两种方法中更为常用的一种方法。此外,值得注意的是,尽管滤波器能够以任意数量的重叠来实现,但当以50%重叠时运算效率达到最高。

    基于重叠存储法的频域块LMS自适应滤波算法的信号流程图

    问题:针对回声路径很长且复杂,并且回声延迟较高时,时域自适应滤波算法计算复杂度高的问题,

    解决:提出了频域分块滤波(FDAF)算法,FDAF算法将长度为L的自适应滤波器分成FFT长度的整数倍个子块,对输入信号的每个子块进行频域内的LMS算法。

    • 优点:当回声路径很长且复杂时计算量小,并且在收敛速度方面有略微提升。

      相对于时域,FDAF具有许多优势。除了能够通过在频域中相乘来执行滤波器卷积之外,该变换还有效地减小了自适应滤波器的长度。因此,降低了自适应算法的计算复杂度。此外,为了降低计算复杂度,FDAF还可以提高收敛速度。这是由于滤波器更新中信号的自相关矩阵的特征值散布减小所导致的。

      FDAF的这些优势最终需要权衡。FDAF的主要成本是增加的延迟和增加的内存需求。延迟成本来自需要通过频域滤波器延迟期望信号(或回声消除中的麦克风信号)。这导致在时域方法上增加了存储器存储,因为需要同时存储激励信号和期望信号。FDAF的早期方法使FFT的阶数与脉冲响应的大小大致相同。但是如前所述,回声消除等应用回波路径较长,会导致较大的延迟和存储需求。该缺点可以通过诸如多延迟自适应滤波器之类的方法来克服。在这种方法中,块大小可以小于所需的时域自适应滤波器,并且可以应用每个频点中的自适应滤波器来代替单个系数。因此,可以减轻FDAF的缺点,同时保持降低的计算复杂性和提高的收敛速度。

    综上所述

    《声学回声消除中子带和块稀疏自适应算法研究_魏丹丹》

    远端输入语音信号的相关性较高,且声学回声信道的冲击响应一般只有少量的非零系数,因此是一个稀疏信道。

    针对用于声学回声消除的子带和块稀疏算法进行了研究和改进,以达到提高算法跟踪性能和抗冲激鲁棒性的目的。本文的主要贡献如下:

    首先,区别于传统文献中子带归一化自适应算法消除回声的方法,

    我提出一种用于声学回声消除的新型子带归一化自适应滤波切换算法(LMS-NSAF)。

    该算法核心思想是根据语音信号的状态不同,采用 VAD 快慢包络技术切换算法,当输入远端信号的瞬时能量值较大时,使用收敛速度快的子带 NLMS 算法,当输入信号的瞬时能量值较小时,则使用计算复杂度低的权重矢量更新公式,从而使得改进的子带 NLMS 算法在提高收敛性的同时又能降低算法的计算复杂度

    基于多带结构的改进型自适应滤波切换算法NLMS-NSAF

    首先远端语音信号利用包络法判别有无语音段,

    然后将信号状态输出到自适应多带结构算法模块当中。

    若语音区输入信号的短时能量较大,则使用收敛速度快的自适应滤波算法(NLMS);

    若语音区输入信号的短时能量较小,需考虑计算量低的算法(NSAF),

    当然,语音在无语音区时算法迭代停止。

    对输入语音信号能量高低的判定是通过和阈值比较得到的。在充分考虑语音特性的情况下,切换算法实现了算法在收敛速度的优势,同时完成了同算法复杂度的优化选择。最后达到了提高滤波算法性能、降低运算量的目的。

    回声路径是经典的稀疏路径,且语音信号作为远端输入时相关性较强,

    总结

      回声消除挑战在于能否快速跟踪回声路径中的变化,同时又对大声干扰(例如双向通话)保持鲁棒性这两个目标是矛盾的,因为为了快速适应回声路径的变化,系统需要具有快速收敛速度的自适应算法,这又意味着在出现双向通话时很容易发散。

      在大多数系统中,实现了双向通话检测器以冻结自适应并防止发散。双向通话检测器的决策阈值通常需要对信号处理环境进行一些调整。这是一个不良的特性,因此,大多数系统都被调整为过于保守。换句话说,由于双向通话决策遗漏比双向通话虚假警报更重要,因此要进行调整以确保不会发生任何丢失的决策。这可能会导致系统产生高频率的错误警报,从而导致系统无法及时调整。

      健壮的自适应算法在回声消除系统中的应用使双向通话检测器的保守性降低。由于大多数双向通话遗漏都发生在语音段的开始和偏移处,因此鲁棒的自适应算法试图使滤波器系数的自适应不受干扰,直到可以做出双向通话决定为止。由过去误差信号的电平调节的比例因子控制自适应算法的速率。因此,例如尚未收敛的系统将导致高比例因子。在双向通话的情况下,由于使用了过去的误差信号值,因此其开始会被延迟。

      消除回声的两路径方法(AEC)论文进一步讨论了该主题。双向通话检测器的复杂性以及使用两组滤波器系数作为缓解快速收敛和双向通话问题的方法的目的变得更加清晰。双路径方法的问题是需要两个FIR操作,这给系统增加了内存和计算复杂度。鲁棒的自适应算法的应用可以帮助缓解过于保守的双向通话检测器的问题,而不会增加两径方法的负担。

      除了居于核心地位的自适应滤波技术外,实际回音抵消技术应用系统中还包括远端信号检测、近端信号检测、舒适噪声产生、残留回波的非线性处理技术等,这些技术也有待改进。这样整个回音抵消器才能实现一个较好的回音抵消效果。

     

    参考

    声学回声消除中子带和块稀疏自适应算法研究_魏丹丹

    《车载免提系统降噪算法的研究以及硬件实现》__张雪

    频域块LMS自适应滤波算法的研究__田超

  • 相关阅读:
    PLSQL登录弹出空白框如何解决
    mongodb常用命令
    js多线程?
    Rhino -- 基于java的javascript实现
    [原创]在Docker上部署mongodb分片副本集群。
    [原创]在Linux系统Ubuntu14.04上安装部署docker。
    [原创]Win7、Win8、Win10始终以管理员身份运行程序。
    [原创]WPF应用MediaPlayer播放声音断续、不全解决方案
    [原创]C#引用C++编译的dll
    [原创]导出CSV文件,特殊字符处理。
  • 原文地址:https://www.cnblogs.com/LXP-Never/p/11773190.html
Copyright © 2020-2023  润新知