基于频域卡尔曼滤波的自适应声回声抵消方法与流程

文档序号:15938224发布日期:2018-11-14 02:44阅读:2600来源:国知局

本发明涉及一种基于频域卡尔曼滤波的自适应声回声抵消方法,属于语音增强的技术领域。

背景技术

声回声是困扰通信系统的常见问题,它会降低语音的清晰度,干扰通话双方的交流。声回声抵消旨在使用参考信号合成回声,使用合成信号去除或减小声回声带来的不利影响。

基于lms算法的声回声抵消方法是最常用的方法(sondhimm.anadaptiveechocanceller[j].belllabstechnicaljournal,1967,46(3):497-511.)。然而,基于lms算法的声回声抵消方法计算复杂度较高,且在参考信号为有色信号的情况下算法收敛速度较慢。

基于频域的lms块算法利用离散傅里叶变化的快速算法,使计算复杂度较时域lms算法大幅度下降。使用步长归一化处理的频域lms块算法,能够在参考信号为有色信号的情况下保持较快的收敛速度。然而,在滤波器阶数不足或系统不满足因果性的条件下,步长归一化的频域lms块算法不能保证收敛到最优解。

基于频域卡尔曼滤波的声回声抵消方法是一种有效的自适应声回声抵消方法,能够保证较快的收敛速度和较低的稳态误差(enznerg,varyp.frequency-domainadaptivekalmanfilterforacousticechocontrolinhands-freetelephones[j].signalprocessing,2006,86(6):1140-1156.)。然而标准形式的频域卡尔曼滤波算法的计算复杂度较高。另外,同样在滤波器阶数不足或系统不满足因果性的条件下,频域卡尔曼滤波算法不能保证收敛到最优解。



技术实现要素:

因此,使用基于频域卡尔曼滤波实现声回声抵消时,在自适应滤波器阶数不足或者系统不满足因果性的条件下,原有的频域卡尔曼滤波算法存在非最优收敛问题,不能有效的去除语音信号中的声回声部分。本发明针对这一技术问题,提供一种改进的基于频域卡尔曼滤波的自适应声回声抵消方法,使算法在自适应滤波器阶数不足或者系统不满足因果性的条件下也能收敛到最优解。

本发明采用的技术方案为:

基于频域卡尔曼滤波的自适应声回声抵消方法,包括如下步骤:

步骤1,采集并缓存近端传声器信号和参考信号,然后通过模数转换将模拟信号转换为数字信号;

步骤2,对数字信号做离散傅里叶变换后,利用下式计算出估计的频域回声信号:

y(k)=c(k)w(k)

这里w(k)表示声回声路径传递函数,初始时为全为零的矩阵,

c(k)=fg0,nf-1x(k)

x(k)=diag{fx(k)}

x(k)=[x(kn-m+1),x(kn-m+2),...,x(kn)]t

diag{·}表示对角阵,f是大小为m×m的dft矩阵,m为帧长;in是大小为n×n的单位矩阵,n为滤波器长度;x(k)为频域中的参考信号;

步骤3,根据频域卡尔曼滤波器的迭代公式进行迭代,并按如下公式计算下一帧的滤波器系数:

w(k+1)=a[w(k)+fgn,0f-1diag{μ(k)}fgn,0f-1xη(k)e(k)]

式中,a是声回声路径不确定度常数;为时域约束矩阵;diag{μ(k)}为等效步长;(·)h表示共轭转置;e(k)为频域中的误差信号;

步骤4,对经步骤2得到的频域中的回声信号估计做离散傅里叶逆变换,得到时域的回声信号估计,在步骤1采集的近端传声器信号中减去时域的回声信号估计,得到经过声回声抵消处理后的信号。

本发明的方法增加了一个时域约束矩阵来提升算法性能。与原算法相比,仅在原有算法基础上增加了一对快速傅里叶变换和逆变换,就能大大提升算法在滤波器阶数不足或信号不满足因果性情况下的性能,具有较快的收敛速度,并且能够保证算法的稳态均方误差小于原算法,从而达到较好的回声消除效果。

附图说明

图1为本发明改进对角形式的频域卡尔曼算法流程图。

图2为本发明方法与现有方法的滤波器系数失调量曲线对比图,(a)非因果情况,(b)滤波器阶数不足情况。

图3为本发明方法与现有方法的等效时域滤波器系数(前十位)对比图:(a)非因果情况(b)滤波器阶数不足情况。

图4为本发明方法与现有方法的均方误差对比图:(a)非因果情况;(b)滤波器阶数不足情况。

具体实施方式

本发明为了提高回声抵消的效果,对频域卡尔曼滤波算法的结构进行分析,根据分析改进了算法结构,具体过程如下:

1、声回声抵消模型中基于频域的卡尔曼滤波

若近端传声器在时域中第n个采样点的信号为d(n),定义时域中的传声器信号向量d(k),可以表示为

d(k)=[d(kn-n+1),d(kn-n+2),...,d(kn)]t(1)

式中,(·)t表示转置,n表示滤波器长度,k代表帧的序号。那么传声器信号可以表示为回声信号和背景噪声之和,即

d(k)=y(k)+s(k)(2)

y(k)和s(k)分别表示回声信号和背景噪声,这里假设背景噪声为均值为零的白噪声。那么频域中的传声器信号可以表示为

d(k)=y(k)+s(k)=c(k)w(k)+s(k)(3)

这里w(k)表示声回声路径传递函数,

c(k)=fg0,nf-1x(k)(4)

x(k)=diag{fx(k)}(5)

x(k)=[x(kn-m+1),x(kn-m+2),...,x(kn)]t(6)

diag{·}表示对角阵,f是大小为m×m的dft矩阵,in是大小为n×n的单位矩阵,d(k)、x(k)和s(k)分别为频域中的传声器信号、参考信号和背景噪声,假设滤波器长度与帧移相等,m=2n。

假设声回声路径传递函数满足一阶马尔科夫模型,那么w(k)的变化可以表示为

w(k+1)=a·w(k)+δw(k)(8)

式中a是声回声路径不确定度常数,δw(k)为过程噪声。式(3)和式(8)分别为卡尔曼滤波中的观测方程和状态方程,按照标准卡尔曼滤波推导流程,并假设

ψδδ(k)≈m·diag{φδδ(k)},ψss(k)≈m·diag{φss(k)}(9)

c(k)≈(n/m)x(k)(10)

c(k)p(k)cη(k)≈(n/m)x(k)p(k)xη(k)(11)

可得到对角形式的频域卡尔曼滤波算法的迭代公式

w(k+1)=a·w+(k)(12)

p(k+1)=a2·p+(k)+m·diag{φδδ(k)}(13)

w+(k+1)=w(k+1)+fgn,0f-1k(k)[d(k)-fg0,nf-1x(k)w(k)](14)

k(k+1)=p(k)xη(k)[x(k)p(k)xη(k)+m·diag{φss(k)}]-1(16)

式中,(·)h表示共轭转置,ψδδ(k)和ψss(k)分别表示过程噪声和背景噪声的自相关矩阵,φδδ(k)和φss(k)分别表示过程噪声和背景噪声的功率谱密度,p(k)和p+(k)分别是先验和后验的滤波器系数误差协方差矩阵,k(k)为卡尔曼增益,gn,0是时域约束矩阵,可表示为

2、频域卡尔曼滤波算法的非最优收敛问题

根据式(12)-(16)可以得到对角形式的频域卡尔曼滤波器的系数更新式

w(k+1)=a[w(k)+fgn,0f-1diag{μ(k)}xη(k)e(k)](18)

式中,e(k)为频域中的误差信号,即e(k)=d(k)-fg0,nf-1x(k)w(k)。等效步长diag{μ(k)}可以表示为:

diag{μ(k)}=p(k)[x(k)p(k)xη(k)+m·diag{φss(k)}]-1(19)

对式(18)等式两边乘上f-1,整理后并取期望可得

e(k)为时域中的误差信号,w(k)为时域中的滤波器系数。观察式(20),λ=fdiag{e{μ(k)}}f-1和xc(k)=fxh(k)f-1均为轮换矩阵,因此可以表示为

所以时域中误差信号可以一步表示为e(k)=d(k)-xtc,2(k)w(k)。根据式(18)-(21)可以得到对角形式频域卡尔曼滤波器的稳态解等效时域表达式为

式中,r=e{xc,2(k)xtc,2(k)}=nrx,r=e{xc,2(k)d(k)}=rdx,这里rx和rdx分别为参考信号的自相关矩阵和参考信号与期望信号的互相关向量。

式(22)表明,频域卡尔曼滤波器在不确定度常数a为1且滤波器阶数充足的情况下才能收敛到最优解,即e{w(∞)}=r-1rdx,在其他情况下无法收敛到最优解。

3、频域卡尔曼滤波的改进算法

在式(18)中增益一个时域约束矩阵后可得

w(k+1)=a[w(k)+fgn,0f-1diag{μ(k)}fgn,0f-1xη(k)e(k)](23)

对式(23)等式两边乘上f-1,类似的,整理后并取期望可得

式(24)的稳态解为

e{w(∞)}=a[(1-a)in+aλ1r]-1·[λ1r](25)

式(25)说明了当频域卡尔曼滤波器的不确定度常数a为1时,算法一定能够收敛到最优解,即e{w(∞)}=r-1rdx。

因此,本发明增加了一个时域约束矩阵来提升算法性能。与原算法相比,提升了算法在滤波器阶数不足或非因果情况下的性能。

本实施例的方法利用以下的测试样本进行测试:

1)非因果情况:自适应滤波器的阶数n为128,参考信号为白噪声通过一个传递函数为h(z)=[(1-0.5z-1)/(1-0.6z-1))]16的低通滤波器,近端传声器信号设置为与参考信号相同但比参考信号提前一个点,即一个标准的非因果系统。

2)滤波器阶数不足情况:自适应滤波器的阶数n为10阶,参考信号为均值为零的白噪声通过一个滤波器系数为[0.10.2-0.40.7]的fir滤波器,近端传声器信号为参考信号经过一个滤波器系数为[0.010.02-0.04-0.080.15-0.30.450.60.60.45-0.30.15-0.08-0.040.020.01]的16阶fir滤波器滤波后的信号。

具体的算法流程为:

首先,算法初始化:将p(0)设为εi,其中ε取10-2;将初始值w(0)设为零。不确定度常数a初始值为1。

然后,对于迭代过程中的每一帧,分别按照下列步骤计算:

1)对缓存的最新一帧时域信号做离散傅里叶变换,变换到频域,可以利用快速算法(fft)实现。

2)用式(3)计算估计的频域中的回声信号y(k)。

3)用式(19)计算等效步长diag{μ(k)}。

4)用式(23)更新滤波器系数w(k)。

5)用式(13)和(15)计算下一帧所需的先验和后验滤波器系数误差协方差矩阵p(k)和p+(k),用(16)计算卡尔曼增益k(k)。

6)将频域中估计的回声信号y(k)通过离散傅里叶逆变换得到时域中估计的回声信号y(k),与近端传声器信号d(k)相减,获得声回声抵消后的信号。

为了说明本发明方法的优点,特将本发明改进算法与现有算法进行对比。

图2给出了滤波器系数失调量曲线图,即自适应滤波器系数与维纳解的欧式距离,不确定度常数a的取值为1。从图中可以看出,无论是在参考信号和近端传声器信号不满足因果性的情况下,还是自适应滤波器阶数不足的情况下,原对角形式频域卡尔曼滤波算法无法收敛到维纳解。而本发明改进算法在两种情况下都能较快的向维纳解收敛,其滤波器系数失调量原小于原算法的失调量。图3是改进前后的算法在两种情况下得到的稳态等效时域滤波器系数,根据图中结果可以看到,本发明改进后的算法的等效时域滤波器系数与维纳解几乎一致,原算法的等效时域滤波器系数则与维纳解相差较大。图4是改进前后的算法在两种情况下均方误差曲线对比图。从图中可以看出,本发明改进后的对角形式频域卡尔曼滤波算法能在信号不满足因果性和滤波器阶数不足的情况下具有较快的收敛速度,并且能够保证算法的稳态均方误差小于原算法。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1