整体框架

传统回声消除算法流程如图所示,首先滤波器估计回声路径$\hat{w}(n)$,通过自适应算法使$\hat{w}(n)$不断逼近真实的回声路径$w(n)$。$\hat{w}(n)$与远端信号$x(n)$卷积得到估计的回声$\hat{y}(n)$,从传声器信号$d(n)$中减去估计的回声信号 得到误差信号$e(n)$,误差信号会继续驱动自适应滤波器系数更新。双讲检测模块负责检测双讲,控制滤波器更新。经过自适应滤波处理后只能消除线性回声,残余回声需要通过后滤波模块抑制。
Local image

自适应滤波器

最小均方(Least Mean Square, LMS)算法维纳解推导

设输入信号$X(n)$表示第n时刻自适应滤波器的输入信号,其中$x(n)$为第n个采样时刻的采样值,$N$是滤波器的阶数,式子中$[·]^{\rm{T} }$为转置:

滤波器的权值向量为:

滤波器估计得到回声信号:

从传声器信号中减去估计的回声可得误差信号$\hat{e}(n)$:

LMS算法的最终目的是求出维纳解,而维纳滤波中的矩阵求逆运算量大且系统发生改变时无法实时跟踪,因此LMS算法通过最速下降法递归地调整滤波器的权值,并通过误差信号实时跟踪系统的变化。LMS算法将信号$e(n)$的最小均方误差作为代价函数$J(n)$:

将$e(n)$展开可得$e(n)=d(n)-\vec W(n)\vec X(n)$得到下列代价函数:

其中$\vec P(n)$为传声器信号$d(n)$与远端信号$x(n)$的互相关向量,$R(n)$为输入信号的自相关矩阵。将代价函数对权值向量$W(n)$求导可得梯度向量:

令梯度向量$\nabla (n)$等于0,得到维纳滤波的最优解:

由上式能看出要得到维纳解,需要求出输入信号和期望信号之间的互相关向量$P(n)$,以及输入信号的自相关矩阵的逆矩阵${R^{ - 1} }(n)$,但输入信号和期望信号的统计特性无法获取。自相关矩阵的求逆运算量大,不适合需要实时处理的回声消除任务,而回声路径变化时需要重新计算维纳解。

LMS算法

相比于维纳滤波利用误差信号$e(n)$的统计平均值,LMS算法更加灵活和适应性更强。LMS算法可以根据实时的误差信号瞬时值来动态调整滤波器参数:

滤波器权值向量的更新公式变为:

其中$μ$为步长因子可以人为设置,负责调整权重更新大小,其大小需要满足以下条件:

${ \lambda _{ {\rm{ } }\max } }$是输入信号自相关矩阵R(n)的最大特征。

步长因子的推导

步长因子$μ$的推导可参考宋知用老师书上此处的公式:
Local image