CN100524466C - 一种麦克风回声消除装置及回声消除方法 - Google Patents

一种麦克风回声消除装置及回声消除方法 Download PDF

Info

Publication number
CN100524466C
CN100524466C CNB2006101440555A CN200610144055A CN100524466C CN 100524466 C CN100524466 C CN 100524466C CN B2006101440555 A CNB2006101440555 A CN B2006101440555A CN 200610144055 A CN200610144055 A CN 200610144055A CN 100524466 C CN100524466 C CN 100524466C
Authority
CN
China
Prior art keywords
frame
rightarrow
length
coefficient
echo
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB2006101440555A
Other languages
English (en)
Other versions
CN1953060A (zh
Inventor
张晨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Vimicro Corp
Original Assignee
Vimicro Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Vimicro Corp filed Critical Vimicro Corp
Priority to CNB2006101440555A priority Critical patent/CN100524466C/zh
Publication of CN1953060A publication Critical patent/CN1953060A/zh
Application granted granted Critical
Publication of CN100524466C publication Critical patent/CN100524466C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Cable Transmission Systems, Equalization Of Radio And Reduction Of Echo (AREA)
  • Soundproofing, Sound Blocking, And Sound Damping (AREA)
  • Circuit For Audible Band Transducer (AREA)

Abstract

本发明公开了一种麦克风回声消除装置及方法,用于消除扬声器与麦克风之间的声学回路产生的回声,其装置中包括帧长调整模块,用于调整数据帧长,使当前帧以及之前的若干数据联合以组成一个长度与频域自适应滤波器系数长度相等的数据帧,以进行自适应滤波。使用本发明后,能够在保证反馈时间的前提下,使频域自适应滤波器快速收敛,达到快速消除回声的目的。可广泛应用于消除扬声器与麦克风之间的声学回路的产生的噪声中。

Description

一种麦克风回声消除装置及回声消除方法
技术领域
本发明涉及回声消除领域,特别涉及一种利用频域自适应滤波器的麦克风回声消除装置和方法,用于消除扬声器与麦克风之间的声学回路产生的回声。
背景技术
回声的产生是由于扬声器和麦克风之间存在声学回路。如图1所示,来自远端的声音信号,经过通讯连接,到达近端记为信号u,通过近端的扬声器放出,经过扬声器志麦克风之间的声学回路g后被麦克风采集到参考信号d,然后经过通讯连接再传回远端。此时,远端的说话人就能听到自己的回声,即远端回声。从而会严重地影响通话质量。
由于从扬声器到麦克风的声学回路g是未知并且时变的,因而在回声消除方案中,广泛采用自适应滤波的方法。如图1所示,为利用自适应滤波方式进行回声消除的基本原理图。其中自适应滤波器以最小化残余回声e为目标,通过自适应地调整自身的滤波器系数对来自远端的声音信号u进行滤波处理,来跟踪扬声器到麦克风的声学反馈回路g,产生麦克风接收到的回声d的预测值y。当滤波器准确的跟踪到g时,y非常接近d,使e=d-y趋向于0,从而实现消除回声的作用。
在自适应滤波过程中,自适应滤波器需要跟踪未知的反馈回路,也就是说要模拟一个未知装置。当未知的反馈回路g有较大延时的时候,即该未知装置有较高的阶数,那么自适应滤波器如果要得到最佳的模拟效果,也至少需要有相同的阶数才够用。由于时域的自适应滤波的过程就是输入信号与自适应滤波器卷积的过程,因而随着自适应滤波器阶数的增加,算法的复杂度会急剧增加,当反馈回路延时较大时,并不实用。用子带自适应滤波可以降低运算复杂度,不过会带来信号混叠的问题。
而时域的卷积等于频域的相乘,并且通过借助FFT的快速算法,频域的自适应滤波算法在当滤波器阶数较高时,可以减少算法复杂度,提高运算效率,是一种非常实用的滤波方式。
现有技术中的频域自适应滤波算法一般如下所述。
首先对下文中用到的一些信号标记做出说明。在进行频域自适应滤波时,对输入信号是以帧为单位进行处理的,在本文中以“
Figure C200610144055D0013111828QIETU
”的形式表示信号x的当前帧信号,即第k帧信号。如以表示第k帧来自远端的并且即将输出给扬声器的声音信号,以
Figure C200610144055D0013111846QIETU
表示经过合并长度为2M的声音信号,而
Figure C200610144055D0013111853QIETU
表示麦克风采集到的第k帧回声信号等等。另外,用w(k)表示处理
Figure C200610144055D0013111901QIETU
时的时域滤波器系数,其相应频域滤波器系数用W(k)表示。FFT表示快速傅立叶变换,IFFT表示快速傅立叶反变换。
应用频域自适应滤波器的回声消除装置中一般包括以下各部分。
(1)数据采集合并模块,用于采集即将输出到扬声器的来自远端的声音信号u,每次采集的数据帧长为M,当前帧即第k帧数据记为
Figure C200610144055D00131
并与上一帧即第k-1帧数据u′(k-1)联合组成一个长度为2M的大帧
Figure C200610144055D00132
Figure C200610144055D00133
(2)频域自适应滤波器,假设我们采用自适应滤波器的阶数是M,滤波器的时域系数记为w(k),采用重叠保留法,为避免混叠,将M阶的滤波器扩展M个0,组成N=2M个系数的滤波器,经FFT处理后得到滤波器的频域系数为: W ( k ) = FFT w ( k ) 0 , 长度为2M。
所述频域自适应滤波器用于将所述
Figure C200610144055D00142
进行FFT处理,转换到频域,得到 U ( k ) = FFT [ u → ( k ) ] ; 并以当前的滤波器系数W(k)对所述U(k)进行滤波处理,然后对滤波处理结果进行IFFT处理,得到所述回声
Figure C200610144055D00144
的一帧预测值 y → ( k ) = IFFT [ U ( k ) * W ( k ) ] , 结果取其后M个点。
(3)减法器,用麦克风采集到的所述回声减去所述预测值
Figure C200610144055D00147
得到残余回声 e → ( k ) = d → ( k ) - y → ( k ) , 所采集的长度也为M。
(4)所述频域自适应滤波器中还包括语音相关性检测单元,用于在频域中计算所述残余回声
Figure C200610144055D001410
与所述来自远端的声音信号
Figure C200610144055D001411
的语音相关性,得到语音相关性参数 φ → ( k ) = IFFT [ U H ( k ) * E ( k ) ] , 其中UH(k)为对所述U(k)的共轭值, E ( k ) = FFT 0 e → ( k ) ,
Figure C200610144055D001414
取其结果的前M个点。
(5)所述频域自适应滤波器中还包括系数更新单元,用于根据所述语音相关性,结合所述自适应滤波器的自适应步长μ对所述频域自适应滤波器的系数W(k)进行更新,得到 W ( k + 1 ) = W ( k ) + μFFT φ → ( k ) 0 .
所述频域自适应滤波器每进行一次自适应滤波,其系数W(k)即被更新一次,下一次自适应滤波时,所述自适应滤波器以更新后的系数W(k+1)作为当前的W(k)对下一个组合的大帧数据进行频域滤波。
如图2所示,即为现有技术中利用频域自适应滤波方法进行回声消除的方法示意图,其中细箭头代表时域信号处理,粗箭头代表频域信号处理。因为采用频域自适应滤波方法,信号要分帧处理,所以图1中所示的u、y、d和e信号,在图2中分别对应着
Figure C200610144055D00151
Figure C200610144055D00153
分别表示各个信号的第k帧信号;另外,以表示将
Figure C200610144055D00155
的数据合并后得到的长度为2M的大帧。我们知道,长序列截短后分块处理再合并,需要采用重叠相加法或者重叠保留法避免混叠,在此以重叠保留法说明。
首先假设时域自适应滤波器的阶数是M,其系数记为w(k),因为采用重叠保留法,为避免混叠,将M阶的滤波器扩展M个0,经FFT处理后得到滤波器的频域系数向量为:
W ( k ) = FFT w ( k ) 0 - - - ( 1.1 )
从上式(1.1)可以看出,频域自适应滤波器系数W(k)的长度N是时域系数向量长度M的2倍。对于频域自适应滤波算法,自适应滤波和滤波器系数更新都是在频域中完成的,所以将不出现时域滤波器的形式。值得注意的是以后我们提到的FFT或者IFFT处理长度都为N点。
频域自适应滤波处理的步骤如下:
1)采集一帧来自远端的声音信号
Figure C200610144055D0015112152QIETU
,其帧长为M。
2)对输入信号
Figure C200610144055D0015112202QIETU
进行连接两帧的处理,即将
Figure C200610144055D0015112202QIETU
与上一帧第k-1帧的数据合并为一个大帧,得到下式:
Figure C200610144055D00161
其中
Figure C200610144055D00162
为第k个合并后的大帧,长度为N=2M;
u(kM-M)为原始的第k-1帧数据中的第1个数据;
u(kM-1)为原始的第k-1帧数据中的第M个数据;
u(kM)为原始的第k帧数据中的第1个数据;
u(kM+M-1)为原始的第k帧数据中的第M个数据。
3)将做FFT处理,转换到频域得到:
U ( k ) = FFT [ u → ( k ) ] - - - ( 1 . 3 )
4)对输入信号进行滤波,即频域上的相乘,然后进行IFFT处理,转换到时域,并取其结果的后一帧,即后M个数据,即有回声信号的预测值:
y → ( k ) = [ y ( kM ) , y ( kM + 1 ) , . . . . . . , y ( kM + M - 1 ) ] = IFFT [ U ( k ) * W ( k ) ]
  (1.4)。
5)采集回声信号用
Figure C200610144055D00166
表示,即:
d → ( k ) = [ d ( kM ) , d ( kM + 1 ) , . . . , d ( kM + M - 1 ) ]
 (1.5)
则残余回声信号为回声信号与其预测值的差值:
e → ( k ) = [ e ( kM ) , e ( kM + 1 ) , . . . , e ( kM + M - 1 ) ]
= d → ( k ) - y → ( k )
(1.6)。
6)在所述残余回声信号前补M个零,并进行FFT处理,得到频域的残余回声信号为:
E ( k ) = FFT 0 e → ( k )
(1.7)。
利用E(k)和U(k)来计算自适应滤波器系数的更新量。首先将U(k)取共轭得到UH(k)。在频域中,自适应滤波器系数矢量的更新量是通过计算误差信号和输入信号的相关性确定的,由于线性相关从形式上看相当于一个逆的线性卷积,所以,借助于时域的卷积在频域上有FFT的快速算法,有:
φ → ( k ) = IFFT [ U H ( k ) * E ( k ) ] - - - ( 1.8 )
根据重叠保留法,在上式中,需删除结果的后一帧,即只取IFFT结果的前M个点。
7)最后我们利用
Figure C200610144055D00172
来更新自适应滤波器系数。注意:频域的滤波器系数是将时域系数后面补零,然后进行FFT处理生成的,所以在此相应地,将后补M个零,然后进行FFT处理,其结果与自适应步长μ相乘,得到的乘积与更新前的滤波器系数W(k)相加,可得到滤波器系数更新的频域形式如下:
W ( k + 1 ) = W ( k ) + μFFT φ ( k ) 0
(1.9)
下一次自适应滤波即采用所述W(k+1)作为更新后的当前滤波器系数W(k)进行滤波。
8)步骤1)至7)循环进行,直至数据处理完毕。
由上述频域自适应滤波算法的步骤可以看出,每过帧长为M的一帧信号,才更新一次频域自适应滤波器的滤波系数,所以收敛速度较慢,尤其是当反馈回路特性变化较快时,效果并不理想。
发明内容
为了解决上述现有技术的缺陷,本发明提供一种回声消除装置装置及回声消除方法,使得频域自适应滤波器的系数能够高效而稳定的工作,从而达到有效消除回声的目的。
为解决上述问题,本发明提供了一种麦克风回声消除装置,用于消除扬声器与麦克风之间的声学回路所产生的回声,包括:
数据采集合并模块,用于采集即将输出到扬声器的来自远端的声音信号u,每次采集的数据帧长为M,当前帧即第k帧数据记为
Figure C200610144055D00181
并与上一帧即第k-1帧数据
Figure C200610144055D00182
联合组成一个长度为2M的大帧
Figure C200610144055D00183
Figure C200610144055D00184
频域自适应滤波器,其当前的滤波器频域系数记为 W ( k ) = FFT w ( k ) 0 , 长度为2M,其中w(k)为滤波器的时域系数,长度为M;所述频域自适应滤波器用于将所述
Figure C200610144055D00186
进行FFT处理,转换到频域,得到 U ( k ) = FFT [ u → ( k ) ] ; 并以当前的滤波器系数W(k)对所述U(k)进行滤波处理,然后对滤波处理结果进行IFFT处理,得到所述回声的一帧预测值 y → ( k ) = IFFT [ U ( k ) * W ( k ) ] , 结果取其后M个点;
减法器,用麦克风采集到的长度为M的所述回声
Figure C200610144055D00189
减去所述预测值
Figure C200610144055D001810
得到残余回声 e → ( k ) = d → ( k ) - y → ( k ) ;
所述频域自适应滤波器中还包括语音相关性检测单元,用于在频域中计算所述残余回声
Figure C200610144055D001812
与所述来自远端的声音信号
Figure C200610144055D001813
的语音相关性,得到语音相关性参数 φ → ( k ) = IFFT [ U H ( k ) * E ( k ) ] , 其中UH(k)为对所述U(k)的共轭值, E ( k ) = FFT 0 e → ( k ) ,
Figure C200610144055D001816
取其结果的前M个点;
所述频域自适应滤波器中还包括系数更新单元,用于根据所述语音相关性,结合所述自适应滤波器的自适应步长μ对所述频域自适应滤波器的系数W(k)进行更新,得到
W ( k + 1 ) = W ( k ) + μFFT φ → ( k ) 0 ;
所述频域自适应滤波器每进行一次自适应滤波,其系数W(k)即被更新一次,下一次自适应滤波时,所述自适应滤波器以更新后的系数W(k+1)对下一个组合的大帧数据进行频域滤波;
还包括一个帧长调整模块,用于设置所述u的数据帧长为小于M的值L;
相应地,所述数据采集合并模块,用于将u当前的第k帧数据的L个数据及其之前紧临的2M-L个连续的数据联合起来组成一个长度为2M的大帧;
相应地,所述频域自适应滤波器对所述2M的大帧进行自适应滤波;每帧长度为L的数据滤波处理完毕后,更新所述滤波器的频域滤波系数;
以及相应地,还包括一个残余回声截取模块,用于截取所述残余回声
Figure C200610144055D0019181614QIETU
每帧结果的前L个信号,得到最终的残余回声e。
优选的,所述帧长调整模块将帧长由M调整为L=M/n,n为大于1的整数;相应地,所述数据采集合并模块将u的当前帧以及之前紧临的2n-1个数据帧联合成为一个长度为2M的大帧。
优选的,还包括有声检测模块和滤波控制模块,
所述有声检测模块,包括两个有声检测单元,分别用于检测麦克风输入端及扬声器输出端的有声情况,并将检测结果输出给滤波控制模块;
所述滤波控制模块,用于根据所述有声检测模块的输出结果控制所述频域自适应滤波器的工作,
若所述麦克风输入端有声检测结果为无声,则不进行自适应滤波,也不进行系数更新,直接令输出 e → ( k ) = d → ( k ) ; 完成此帧处理;
若麦克风输入端检测结果为有声,那么再看扬声器输出端的检测结果,如果扬声器输出端检测无声,自适应滤波正常进行,但是不进行系数更新,输出 e → ( k ) = d → ( k ) - y → ( k ) , 完成此帧处理;
如果麦克风输入端及扬声器输出端的检测结果均为有声,那么自适应滤波器处于正常工作状态,即进行自适应滤波,也进行系数更新,得到输出 e → ( k ) = d → ( k ) - y → ( k ) , 以及更新后的滤波器系数W(k+1),完成此帧处理。
优选的,所述有声检测模块通过将麦克风输入端及扬声器输出端的声音信号的短时平均幅值与噪声电平相比较来判断是否有声,具体为:
如果MicSignal_avg>NoiseFloor,则判断麦克风线路有声,否则无声;
所述 MicSignal _ avg = 1 / M Σ 0 M - 1 | d → ( k ) | 为麦克风输入信号的短时平均幅值,其中
Figure C200610144055D00205
为麦克风采集到的一帧长度为M的声音信号,M为帧长,NoiseFloor是估计的噪声电平;
如果SpkSignal_avg>NoiseFloor,则判断扬声器线路有声,否则无声;
所述 SpkSignal _ avg = 1 / L Σ 0 L - 1 | u → ( k ) | , 为输入到扬声器的信号的短时平均幅值,
Figure C200610144055D00207
为输入到扬声器的信号,L为帧长。
优选的,还包括步长调整模块,用于检测自适应滤波器的系数更新步长μ,并在所述μ大于设定最大系数更新步长阈值时,减小μ值。
优选的,在检测到自适应滤波器系数的更新步长恢复正常时,将系数更新步长恢复到初始值。
优选的,还包括系数调整模块,用于在检测到自适应滤波器的系数W(k)大于设定系数阈值时,减小所述滤波器系数W(k)。
优选的,还包括:非线性处理模块,用于抑制回声中的非线性成分。
优选的,所述非线性处理模块在E(e)>NLPfloor时,令
Figure C200610144055D00211
其中,e为残差信号,也为所述非线性处理模块的输入,而所述非线性处理模块的输出为e′,E(e)为残差信号的短时平均幅值,NLPfloor为判决电平。
优选的,当E(e)≤NLPfloor时,e′直接用舒适噪声代替。
优选的,还包括:
扬声器有声检测模块,用于检测扬声器输出端的有声情况;
非线性处理控制模块,用于根据扬声器有声检测模块的输出结果开启或关闭所述非线性处理模块;
所述扬声器有声检测模块检测到扬声器输出端有声时,即SpkSignal_avg>NoiseFloor时,
并且在扬声器输出端信号比残差信号大α倍时,即SpkSignal_avg/E[e]>α时,才启动非线性处理模块;
如果所述两个条件有一个不满足,都将关闭NLP处理;
其中:SpkSignal_avg为扬声器输出信号短时平均幅值,Noisefloor是估计的噪声电平,E(e)为e的短时平均幅值。
本发明还提供了一种麦克风回声消除方法,其利用频域自适应滤波方法消除来自远端的声音信号u经过扬声器与麦克风之间的声学回路产生的回声d,最终得到残余回声e,其时域滤波器系数为w(k),长度为M,其对应频域滤波器系数为:
W ( k ) = FFT w ( k ) 0 , 长度为2M,采用重叠保留法;其包括以下步骤,
1)设置每次采集的信号u的数据帧长L;
2)以所述设置的帧长L采集一帧信号
Figure C200610144055D00222
表示第k帧信号;
3)将当前帧
Figure C200610144055D00223
与之前的2M-L个数据合并成一长度为2M的大帧
Figure C200610144055D00224
4)将所述
Figure C200610144055D00225
转换到频域,采用重叠保留法,以滤波器系数W(k)对所述频域的
Figure C200610144055D00226
进行滤波,将结果转换到时域,得到所述回声的时域的预测值
Figure C200610144055D00227
5)采集回声
Figure C200610144055D00228
并减去
Figure C200610144055D00229
得到第k帧的最小残余回声信号
Figure C200610144055D002210
6)根据所述
Figure C200610144055D002212
的相关性,更新所述滤波器系数W(k),得到W(k+1);
7)执行步骤2),采集下一帧信号,对其进行数据合并后,以所述更新的滤波器系数进行频域自适应滤波,直至数据输入完毕。
优选的,所述频域自适应滤波算法包括如下步骤:
1)帧长调整步骤,将u的帧长由M调整为小于M的正整数值L;
2)采集u的第k帧信号,帧长为L,记为
Figure C200610144055D002213
3)将所述
Figure C200610144055D0022112837QIETU
中的L个数据,以及之前紧临的2M-L个数据联合起来组成一个长度为2M的大帧
Figure C200610144055D00231
Figure C200610144055D00232
u(kL-2M+L)为原始的第k帧前的第2M-L个数据,
u(kL-2)为原始的第k帧前的第2个数据,
u(kL-1)为原始的第k帧的前一个数据,
u(kL)为原始的第k帧中的第1个数据,
u(kL+L-1)为原始的第k帧中的第L个数据;
4)将
Figure C200610144055D0023112909QIETU
做FFT处理,转换到频域得到: U ( k ) = FFT [ u → ( k ) ] ;
5)采用重叠保留法,以当前的滤波器系数W(k)对所述U(k)进行滤波,即频域上的相乘,然后对其结果进行IFFT处理后取其结果的后M个数据,记为
Figure C200610144055D00234
即有:
y → ( k ) = [ y ( kM ) , y ( kM + 1 ) , . . . . . . , y ( kM + M - 1 ) ] = IFFT [ U ( k ) * W ( k ) ] ,
6)所述u被扬声器播放后,经过扬声器与麦克风之间的声学回路,然后被麦克风采集到长度为M的回声信号以
Figure C200610144055D00236
表示,即:
d → ( k ) = [ d ( kM ) , d ( kM + 1 ) , . . . , d ( kM + M - 1 ) ] ,
所述
Figure C200610144055D00238
与步骤5)中所述
Figure C200610144055D00239
相减后得到误差信号
Figure C200610144055D002310
为:
e → ( k ) = [ e ( kM ) , e ( kM + 1 ) , . . . , e ( kM + M - 1 ) ] ,
= d → ( k ) - y → ( k )
7)截取所述
Figure C200610144055D0023113009QIETU
结果的L个信号作为最终的残余回声输出;
8)在所述长度为M的未经截取的
Figure C200610144055D0023113009QIETU
前补M个零,并进行FFT处理,得到: E ( k ) = FFT 0 e → ( k ) ;
同时对步骤4)所述U(k)取共轭得到UH(k),然后与所述E(k)进行点乘,其结果进行IFFT运算,同时根据重叠保留法,得到: φ → ( k ) = IFFT [ U H ( k ) * E ( k ) ] ,
在上式中,需删除结果的后一帧,只取IFFT结果的前M个点;
9)在所述
Figure C200610144055D002315
后补M个零,然后进行FFT处理,其结果与自适应步长μ相乘,得到的乘积与滤波器系数W(k)相加,可得到滤波器系数频域形式的更新值如下: W ( k + 1 ) = W ( k ) + μFFT φ → ( k ) 0 , 下一次自适应滤波即采用该更新后的滤波器系数W(k+1)进行滤波;
10)执行步骤2),直至来自远端的声音信号输入完毕。
优选的,所述L值为M/n,n为大于1的整数。
优选的,在所述步骤1)之前还包括有声检测步骤和滤波控制步骤,包括:
有声检测步骤,检测麦克风输入端及扬声器输出端的有声情况;
滤波控制步骤,根据所述有声检测步骤的结果控制滤波器的工作;
具体为:
若麦克风输入端检测结果为无声,则不进行自适应滤波,也不进行系数更新,直接令输出 e → ( k ) = d → ( k ) ; 完成此帧处理;
若麦克风输入端检测结果为有声,那么再看扬声器输出端的检测结果,如果扬声器输出端检测无声,则自适应滤波正常进行,但是不进行系数更新,输出 e → ( k ) = d → ( k ) - y → ( k ) , 完成此帧处理;
如果麦克风输入端及扬声器输出端的检测结果均为有声,则自适应滤波器处于正常工作状态,既进行自适应滤波,也进行系数更新,输出 e → ( k ) = d → ( k ) - y → ( k ) , 完成此帧处理;
其中,为麦克风收到的回声,
Figure C200610144055D00246
为所述自适应滤波器输出的对
Figure C200610144055D00247
的预测值,
Figure C200610144055D00248
为残余回声。
优选的,所述有声检测是通过将麦克风输入端及扬声器输出端的声音信号的短时平均幅值与噪声电平相比较来判断是否有声,具体为:
如果MicSignal_avg>NoiseFloor,则判断麦克风线路有声,否则无声;
所述 MicSignal _ avg = 1 / M Σ 0 M - 1 | d → ( k ) | , 为麦克风输入信号的短时平均幅值,
Figure C200610144055D00252
为麦克风输入信号,即收到的回声信号,M为一帧语音信号的长度,NoiseFloor为估计的噪声电平;
如果SpkSignal_avg>NoiseFloor,则判断扬声器线路有声,否则无声;
所述 SpkSignal _ avg = 1 / L Σ 0 L - 1 | u → ( k ) | , 为扬声器输出信号短时平均幅值,为扬声器输出信号,L为一帧语音信号的长度。
优选的,还包括步长调整步骤,用于在检测到自适应滤波器的系数更新步长大于设定最大系数更新步长阈值时,减小自适应滤波器的系数更新步长。
优选的,在检测到自适应滤波器系数的更新步长恢复正常时,将系数更新步长恢复到初始值。
优选的,还包括系数调整步骤,用于在检测到自适应滤波器的系数大于设定系数阈值时,减小滤波器的系数。
优选的,还包括非线性处理步骤:
首先计算最小化残差信号的短时平均幅值E(e);
然后判断E(e)是否大于事先设定的非线性处理阈值NLPfloor,如果判断结果为是,则使用下式计算最小化残余噪声e′(n):
Figure C200610144055D00255
其中,e为残差信号,为所述非线性处理模块的输入,而非线性处理模块的输出为e’,E(e)为残差信号的短时平均幅值,NLPfloor为判决电平。
优选的,如果E(e)≤NLPfloor,e′直接用舒适噪声代替。
优选的,还包括非线性处理开关控制步骤,具体为:
检测扬声器输出端的有声情况;
根据所述检测结果开启或关闭所述非线性处理步骤,具体为:
当检测到扬声器输出端有声,即SpkSignal_avg>NoiseFloor,并且扬声器输出端信号比残差信号大α倍时,即SpkSignal_avg/E[e]>α,才启动非线性处理模块;
如果所述两个条件有一个不满足,都将关闭NLP处理;
其中:SpkSignal_avg为扬声器输出信号短时平均幅值,NoiseFloor是估计的噪声电平,E(e)为残差信号的短时平均幅值,α为预设的倍数值。
本发明在自适应频域滤波器中所增加的帧长调整模块,令一次处理的来自远端的声音信号的帧长小于自适应滤波器的时域系数长度,然后将多于一帧的信号联合成为一个大帧,进行自适应滤波。一方面这使得自适应滤波器的长度保持原有的足够长度,可以满足反馈回路的延时要求;另一方面,提高了自适应滤波器系数的更新频率,使自适应滤波器能够高效地工作。另外,本发明公开的滤波控制模块可以使自适应滤波器在麦克风输入线路或者扬声器输出线路无声的特殊情况下也不会错误收敛,保证了其正常工作;而步长调整模块和系数调整模块使得自适应滤波器在发散的情况下能够恢复正常工作状态;非线性处理模块可以消除反馈回路中的非线性失真。因此,利用本发明的回声消除装置,使得自适应滤波器能够高效而稳定地工作,从而达到有效消除回声的目的。
附图说明
图1为利用自适应滤波方式进行回声消除的装置结构基本原理图;
图2为现有技术中利用频域自适应滤波方式进行回声消除的方法示意图;
图3为本发明装置中语音检测模块及滤波控制模块的结构示意图;
图4为本发明数据合并单元的示意图;
图5为本发明非线性处理模块非线性处理前后的回声与判决电平关系示意图。
具体实施方式
下面结合附图详细说明本发明的回声消除装置和方法。
自适应滤波器为了能有效地跟踪反馈回路,其系数长度必须大于反馈延时的采样点数。例如对于8K采样率的信号,如果时域自适应滤波器系数长度M=1024,那么滤波器能跟踪和模拟的反馈回路的最大反馈延时就为:1024/8000=128ms。
在背景技术中所述的频域自适应滤波方法中,频域滤波器系数的长度是2M,对应时域系数长度为M,每次新来数据帧长也为M。也就是说自适应滤波器时域系数长度与新来的数据帧长是一样的,即可以令自适应滤波器系数长度为1024,那么一次处理的数据帧长也为1024。这样的话,一秒种只进行大约8次滤波和系数更新。对于反馈回路变化较快的环境,这种更新频率有时是不够用的。
因此,如图3所示,本发明在频域自适应滤波的基础上,增加了帧长调整模块,用于调整数据帧的长度为L。注意,一次调整之后,帧长是相对固定的,而不是每采集一帧数据都进行帧长调整。比如:频域滤波器系数的长度是2M,对应时域滤波器系数长度为M,每次新来数据帧长L可以为滤波器时域系数长度的一半,即L=M/2(M为偶数)。则对输入信号
Figure C200610144055D0028113318QIETU
的处理也由原来的两帧联合变成了四帧联合。经过这样的改进,一方面,自适应滤波器的长度仍为2M,足够长,可以满足反馈回路的延时要求;另一方面,每过M/2的帧长即更新一次自适应滤波器系数,也兼顾了自适应滤波器系数的更新频率。不过采用这种方式付出的代价是增加了算法的复杂度。因为每帧数据量为L,所以最后在输出残余回声时,要加入一残余回声截取模块,用于截取所得残余回声的前L个数据作为最终结果输出。
上面的例子中L=M/2,在实际使用中,也可以为M/3、M/4、M/8等情况,这样可以使自适应滤波器的系数更新频率更高。只是相应地,需要改变残余回声截取模块所截取的数据长度。
除此之外,每个数据帧的长度L还可以是小于M的任意数,例如:M为1024,则L可以为1000,900,650等任意小于1024的值。只是在数据帧联合时要保证联合后的大帧长度为2M。这个问题可以通过如下方式解决:如图4所示,使用一个长度为2M的先进先出缓存器来存储输入数据,每接收完一帧新的数据
Figure C200610144055D0028113318QIETU
,就将
Figure C200610144055D0028113318QIETU
与之前的2M-L个数据联合成为一个大帧
Figure C200610144055D0028113318QIETU
来进行一次自适应滤波处理。
自适应滤波可以自动跟踪反馈回路,不过对于一些特殊情况,自适应滤波器容易错误跟踪,比如麦克风和扬声器线路同时无声的情况。在这种情况下,自适应滤波器的输入信号和参考信号都很小,这时,自适应滤波器就容易错误收敛。
为了防止滤波器错误收敛,如图3所示,本发明提出在回声消除装置中可以加入有声检测模块和滤波控制模块。
有声检测模块,即VAD(Voice Activity Detector)模块,可以包括位于麦克风输入端和扬声器输出端的两个有声检测单元VAD1和VAD2。VAD检测可以通过将信号短时平均幅值与噪声电平比较来进行判决。信号的短时平均幅值可以通过计算一帧信号的平均幅值得到。
对于麦克风输入端: MicSignal _ avg = 1 / M Σ k = 0 M - 1 | d → ( k ) |
(2.1)
式中:MicSignal_avg为麦克风输入信号短时平均幅值,
Figure C200610144055D00282
为麦克风输入信号,M为一帧语音信号的长度。
如果MicSignal_avg>NoiseFloor,则判决麦克风线路有声,否则无声。其中,NoiseFloor是估计的噪声电平。
同理,对于扬声器输出端: SpkSignal _ avg = 1 / L Σ k = 0 L - 1 | u ′ → ( k ) |
(2.2)
式中:SpkSignal_avg为扬声器输出信号短时平均幅值,
Figure C200610144055D00292
为输入给扬声器的声音信号,L为一帧语音信号的长度。
如果SpkSignal_avg>NoiseFloor,则判决扬声器线路有声,否则无声。
根据上述有声检测单元的输出结果,滤波控制模块对滤波器的工作进行整体控制,具体为:
如果VAD1检测无声,则不进行自适应滤波,也不进行滤波器系数更新,直接令输出 e → ( k ) = d → ( k ) , 完成此帧处理;如果VAD1检测有声,那么再看VAD2检测结果,如果VAD2检测无声,自适应滤波正常进行,但是不进行滤波器系数更新,输出 e → ( k ) = d → ( k ) - y → ( k ) 完成此帧处理;如果VAD1和VAD2都检测有声,那么自适应滤波器处于正常工作状态,即进行自适应滤波,也进行滤波器系数更新,输出 e → ( k ) = d → ( k ) - y → ( k ) 完成此帧处理。
实验表明,加入滤波控制后,自适应滤波器在麦克风输入线路或者扬声器输出线路无声的特殊情况下也不会错误收敛,保证了其正常工作。
另外,对于自适应滤波而言,如果麦克风采集到的的参考信号
Figure C200610144055D0029182842QIETU
完全由扬声器发出的声音产生,那么自适应滤波器就容易跟踪反馈回路,也能稳定的工作。但是麦克风采集的信号一般来说不仅包含扬声器发出的声音,还包括近端的声音信号,并且这种声音信号有时还占主要成分。因此这种信号将干扰自适应滤波器正确地跟踪反馈回路,从而有可能导致自适应滤波器的错误跟踪甚至系数发散。
滤波器错误跟踪,系数开始发散,表现在系数更新上时,往往在这个时候自适应滤波器的系数更新量比较大。因此,如图3所示本发明可以增加一个步长调整模块,当检测到系数更新量比较大时,就判定此时自适应滤波器处于非正常工作状态,将其系数更新步长减小,从而可以有效抑制滤波器的错误跟踪,避免了系数发散。等到检测到系数更新量恢复正常时,就判定此时自适应滤波器恢复了正常工作状态,于是可以将其系数更新步长进行调整,如恢复到初始值。这样能够加快自适应滤波器的收敛速度。
具体来说,对于频域自适应算法中的NLMS算法,
如前面所述,系数更新如下式所示:
W ( k + 1 ) = W ( k ) + μFFT φ ( k ) 0 - - - ( 2.3 )
Φ ( k ) = FFT φ ( k ) 0
(2.4)
则,W(k+1)=W(k)+μ·Φ(k)      (2.5)
式中W(k)为频域自适应滤波器系数,是一个N维复数矢量,μ为系数更新步长,Φ(k)也是一个N维复数矢量,N为FFT点数。即:
Φ(k)=[Φ0(k),Φ1(k),...,ΦN-1(k)]T
(2.6)
由此可得系数更新量为:
μ·Φ(k)=[μ·Φ0(k),μ·Φ1(k),...,μ·ΦN-1(k)]T       (2.7)
前面提到步长调整的关键是检测系数更新量的大小。系数更新量的大小,可以用复数的模来量度。即:
[μ·‖Φ0(k)‖,μ·‖Φ1(k)‖,...,μ·‖ΦN-1(k)‖]T     (2.8)
在本发明中,步长调整的方法可以为:
对于μ·‖Φi(k)‖,i=0,1,...,N-1,
若μ·‖Φi(k)‖>MaxStepSize,MaxStepSize为最大步长阈值,则判定此时自适应滤波器处于非正常工作状态,于是调整步长,所述调整可以是将步长按比例缩小,如缩小10倍。即μ=0.1μ。
试验表明,加入步长调整模块后,虽然频域自适应滤波器的收敛速度在一定程度上有所减慢,但是系数不易发散,自适应滤波器稳定性大大增强。
上述滤波控制模块、步长调整模块在一定程度上已经保证了自适应滤波器的稳定工作。然而,一些突发事件,或者意料之外的情况仍然有可能导致自适应滤波器的发散,发散了的滤波器会使扬声器发出很大的噪声。所以本发明提出了一种应对特殊情况的策略,如图3所示,可以加入系数调整模块,作为确保自适应滤波器稳定工作的最后一道防线。
系数调整模块工作的原理很简单,即当自适应滤波器发散时,其系数往往比较大,于是系数调整的任务就是在每次系数更新后,检查一下系数的大小,如果大于设定的阈值,就认为滤波器发散了。具体来说,对于频域NLMS算法,如前所述,系数更新如下式所示:
W ( k + 1 ) = W ( k ) + μFFT φ ( k ) 0
(2.9)
式中W(k)为频域自适应滤波器系数,是一个N维复数矢量,N为FFT点数。即:W(k)=[W0(k),W1(k),...,WN-1(k)]T
(2.10)
系数的大小,用复数的模来量度。即:
[‖W0(k)‖,‖W1(k)‖,...,‖WN-1(k)‖]T   (2.11)
对于‖Wi(k)‖,i=0,1,...,N-1,
若‖Wi(k)‖>MaxPαram,其中MaxPαram为最大系数阈值,则判定此时频域自适应滤波器已发散,于是调整自适应滤波器的系数,所述调整可以是将自适应滤波器系数减小,如可以置零,即:
W(k)=0。系数置零后,自适应滤波器将重新开始收敛,这样就可以把滤波器从发散状态抢救回来。所述阈值MaxPαram需要根据反馈回路的增益仔细选择,其值太大,系数监控就不灵敏,不能有效地识别发散状态;其值太小,容易误判,导致自适应滤波器频繁重启,无法正常工作。
另外,还可以增加一非线性处理模块,即NLP(Non-LinearProcessor)模块。这是因为一般的扬声器都有5%-10%的非线性失真,而自适应滤波只能跟踪线性***,因而反馈回路中信号的非线性失真是无法预测和消除的。因此在自适应滤波后可以增加NLP处理模块以消除非线性失真。
因为NLP处理只是针对扬声器的非线性失真而进行的,所以可以在不需要使用时关闭该模块,这就需要增加一非线性处理控制模块和扬声器有声检测模块,用于对非线性处理模块的开启与关闭进行控制,其中扬声器有声检测模块,可以使用前文中所述有声检测模块中的VAD2。
具体控制原理为:当(1)SpkSignal_avg>NoiseFloor,即VAD2检测到扬声器有声时;且(2)SpkSignal_avg/E[e]>α,即扬声器信号比残差信号大α倍时;才启动NLP处理。如果(1)、(2)有任何一个条件不满足,NLP模块都将关闭。
其中条件(1)说明,当扬声器无声时,不可能产生回声,也就不必使用NLP处理;条件(2)说明,当近端有声时,E[e]会比较大,使得条件(2)不成立,从而关闭NLP处理,让近端信号无失真的传输出去。
式中:SpkSignal_avg为扬声器输出信号短时平均幅值,NoiseFloor是估计的噪声电平,E[e]为残差信号的短时平均幅值,α值在本实施例中可以取2。所述短时平均幅值可以为一帧信号中各信号绝对值和的均值。
本方案中的NLP处理可以采用中心削波的方法来抑制残余回声。如图5所示,为中心削波的NLP处理示意图。其作用可以用下式表示:当E[e]>NLPfloor时,
e &prime; = e - NLPfloor , if ( e > NLPfloor ) e + NLPfloor , elseif ( e < - NLPfloor ) 0 , else - - - ( 3.1 )
式中,e和e’为经过NLP模块前后的残余回声。E[e]为短时平均幅值,NLPfloor为判决电平,其值需要仔细挑选,太小不足以有效抑制残余回声,太大会严重影响近端声音质量。
另外,当E[e]≤NLPfloor时,e’可以用舒适噪声代替。之所以用舒适噪声代替e’,是因为如果将e’直接置零,则在NLP启动和关闭切换时,会引入噪声,同时会给人一种半双工的错觉。舒适噪声可以用模拟高斯随机信号产生。
下面说明本发明利用频域自适应滤波方式进行麦克风回声消除的方法。
首先说明下文中用到的一些基本概念,频域滤波器系数为: W ( k ) = FFT w ( k ) 0 , 长度为2M,其中w(k)为对应的长度为M的时域自适应滤波器系数,采用重叠保留法。
在背景技术中所述回声消除的方法基础上,本发明提出加入帧长调整步骤,其作用是调整数据帧的长度。首先详细说明该步骤,在本发明中,是将其长度调整为小于M的任意正整数L。比如:频域滤波器系数的长度是2M,对应时域滤波器系数长度为M,可以将每次新来数据帧的长度调整为时域滤波器系数长度的一半,即L=M/2(M为偶数)。则与背景技术中相比,对输入信号的处理也由原来的两帧联合变成了四帧联合。经过这样的改进,一方面,自适应滤波器的长度够长,可以满足反馈回路的延时要求;另一方面,也兼顾了自适应滤波器系数的更新频率。
上面的例子中L=M/2,在实际使用中,也可以为M/4、M/3、M/8等情况,这样可以使自适应滤波器的系数更新频率更高。只是相应地,需要改变残余回声截取模块所截取的数据长度。在实际使用中,数据帧的长度L可以是小于M的任意数,例如:M为1024,则L可以为1000,900,650等任意小于1024的值。不过采用这种方式付出的代价是增加了算法的复杂度。注意,一次调整之后,直至所有数据处理完毕,帧长是相对固定的,而不是每采集一帧数据都进行帧长调整。最后,因为每帧数据量为L,所以最后在输出残余回声时,要加入一残余回声截取步骤,用于截取所得残余回声的前L个或L个数据作为最终结果输出。
下面以M=1024为例完整说明本发明加入了上述帧长调整步骤及残余回声截取步骤的一种利用频域自适应滤波方式的麦克风回声消除方法,包括以下步骤。
1)帧长调整步骤,将帧长调整为小于M的正整数值L;在本实施例中,令L为800。
2)采集一帧即将输出到扬声器的第k帧远端声音信号
Figure C200610144055D0034113939QIETU
,帧长度为800。
3)将当前帧
Figure C200610144055D0034113939QIETU
中的800个数据,以及之前的2M-L=2048-800=1248个数据联合起来组成一个长度为2M的大帧
Figure C200610144055D00341
如图4所示,新采集的当前帧
Figure C200610144055D0034113939QIETU
的800个数据与之前的1248个数据组成了一个长度为2048的大帧
Figure C200610144055D00342
Figure C200610144055D00343
u(800k-1248)为原始的第k帧前的第1248个数据,
u(800k-2)为原始的第k帧前的第2个数据,
u(800k-1)为原始的第k帧前的前一个数据,
u(800k)为原始的第k帧数据中的第1个数据,
u(800k+799)为原始的第k帧数据中的第800个数据。
最初采集到第一、二帧信号时,可以不做处理,等待第三帧数据到来后再与第一帧数据中的后448个数据以及第二帧中的800个数据联合组成一个长度为2048的大帧
Figure C200610144055D0034183127QIETU
进行一次自适应滤波处理。之后的数据都是每来一帧新数据
Figure C200610144055D0034113939QIETU
,即进行数据合并然后进行一次自适应滤波处理。
4)将
Figure C200610144055D00344
做FFT处理,转换到频域得到:
U ( k ) = FFT [ u &RightArrow; ( k ) ] .
5)采用重叠保留法,以当前的滤波器系数W(k)对所述U(k)进行滤波,即频域上的相乘,然后对其结果进行IFFT处理后取其结果的后M个数据,即后1024个数据,记为
Figure C200610144055D00351
即有:
y &RightArrow; ( k ) = [ y ( kM ) , y ( kM + 1 ) , . . . . . . , y ( kM + M - 1 ) ] = IFFT [ U ( k ) * W ( k ) ] .
6)所述远端声音信号
Figure C200610144055D00353
被扬声器播放后,经过扬声器与麦克风之间的声学回路,然后被麦克风采集到长度为M的回声信号以
Figure C200610144055D00354
表示,即:
d &RightArrow; ( k ) = [ d ( kM ) , d ( kM + 1 ) , . . . , d ( kM + M - 1 ) ] ,
所述
Figure C200610144055D00356
与步骤5)中所述
Figure C200610144055D0035114156QIETU
相减后得到误差信号
Figure C200610144055D00357
为:
e &RightArrow; ( k ) = [ e ( kM ) , e ( kM + 1 ) , . . . , e ( kM + M - 1 ) ] ;
= d &RightArrow; ( k ) - y &RightArrow; ( k )
7)截取所述结果的前L个信号作为最终的残余回声输出;
8)在所述长度为M的未经截取的
Figure C200610144055D003511
前补M个零,并进行FFT处理,得到:
E ( k ) = FFT 0 e &RightArrow; ( k ) ;
同时对步骤4)所述U(k)取共轭得到UH(k),然后与所述E(k)进行点乘,其结果进行IFFT运算,同时根据重叠保留法,得到: &phi; &RightArrow; ( k ) = IFFT [ U H ( k ) * E ( k ) ] ,
在上式中,需删除结果的后一帧,只取IFFT结果的前M个点;
9)在
Figure C200610144055D003514
后补M个零,然后进行FFT处理,其结果与自适应步长μ相乘,得到的乘积与滤波器系数W(k)相加,可得到滤波器系数频域形式的更新值如下: W ( k + 1 ) = W ( k ) + &mu;FFT &phi; &RightArrow; ( k ) 0 , 下一次自适应滤波即采用该更新后的滤波器系数W(k+1)作为当前的W(k)进行滤波;
10)执行步骤2),直至来自远端的声音信号输入完毕,则整个过程结束。
在上面所述的具体实施例中,所述L取值为800,在实际使用中,也可以为小于M的其它整数值,如600、500等。另外,L值可以为M/n,即1024/n,n为大于1的整数,且1024/n也为整数。如可以为1024/2,则在数据合并时只需联合4个数据帧即可得到长度为2048的一个大帧。在这种情况下,每过1024/2个数据即可更新滤波器系数一次,加快了滤波器系数的收敛速度,提高了效率。
在所述步骤1)之前还可以包括有声检测步骤和滤波控制步骤,用于对滤波器的工作进行整体的控制,包括:
有声检测步骤,检测麦克风输入端及扬声器输出端的有声情况;
滤波控制步骤,根据所述有声检测步骤的结果控制滤波器的工作,具体为:
若麦克风输入端检测结果为无声,则不进行自适应滤波,也不进行系数更新,直接令输出 e &RightArrow; ( k ) = d &RightArrow; ( k ) , 完成此帧处理;
若麦克风输入端检测结果为有声,那么再看扬声器输出端的检测结果,如果扬声器输出端检测无声,则自适应滤波正常进行,但是不进行系数更新,输出 e &RightArrow; ( k ) = d &RightArrow; ( k ) - y &RightArrow; ( k ) , 完成此帧处理;
如果麦克风输入端及扬声器输出端的检测结果均为有声,则自适应滤波器处于正常工作状态,既进行自适应滤波,也进行系数更新,输出 e &RightArrow; ( k ) = d &RightArrow; ( k ) - y &RightArrow; ( k ) , 完成此帧处理。
其中,
Figure C200610144055D00364
为麦克风收到的回声,
Figure C200610144055D00365
为所述自适应滤波器输出的对
Figure C200610144055D00366
的预测值,
Figure C200610144055D00367
为残余回声。
所述有声检测是通过将麦克风输入端及扬声器输出端的声音信号的短时平均幅值与噪声电平相比较来判断是否有声,具体为:
如果MicSignal_avg>NoiseFloor,则判断麦克风线路有声,否则无声;
所述 MicSignal _ avg = 1 / M &Sigma; 0 M - 1 | d &RightArrow; ( k ) | , 为麦克风输入信号的短时平均幅值,
Figure C200610144055D00372
为麦克风输入信号,即收到的回声信号,M为一帧语音信号的长度,NoiseFloor为估计的噪声电平;
如果SpkSignal_avg>NoiseFloor,则判断扬声器线路有声,否则无声;
所述 SpkSignal _ avg = 1 / L &Sigma; 0 L - 1 | u &RightArrow; ( k ) | , 为扬声器输出信号短时平均幅值,
Figure C200610144055D00374
为扬声器输出信号,L为一帧语音信号的长度。
还包括步长调整步骤,用于在检测到自适应滤波器的系数更新步长大于设定最大系数更新步长阈值时,减小自适应滤波器的系数更新步长。减小自适应滤波器的系数更新步长,可以为使系数更新步长以一定比例缩小。
在检测到自适应滤波器系数的更新步长恢复正常时,将系数更新步长恢复到初始值。
另外,还包括系数调整步骤,用于在检测到自适应滤波器的系数大于设定系数阈值时,减小滤波器的系数。以有效地防止滤波器系数发散。
还包括非线性处理步骤:首先计算最小化残差信号的短时平均幅值E(e);然后判断E(e)是否大于事先设定的非线性处理阈值NLPfloor,如果判断结果为是,则使用下式计算最小化残余噪声e′(n):
Figure C200610144055D00375
其中,e为残差信号,为所述非线性处理模块的输入,而非线性处理模块的输出为e’,E(e)为残差信号的短时平均幅值,NLPfloor为判决电平。
如果E(e)≤NLPfloor,e′直接用舒适噪声代替。
在所述步骤7)后还可以包括非线性处理开关控制步骤,具体为:检测扬声器输出端的有声情况;根据所述检测结果开启或关闭所述非线性处理步骤。
开启或关闭的方法具体为:当检测到扬声器输出端有声,即SpkSignal_avg>NoiseFloor,并且扬声器输出端信号比残差信号大α倍时,即SpkSignal_avg/E[e]>α,如α为6时才启动非线性处理模块;
如果所述两个条件有一个不满足,都将关闭NLP处理;其中:SpkSignal_avg为扬声器输出信号短时平均幅值,NoiseFloor是估计的噪声电平,E(e)为残差信号的短时平均幅值。
使用本发明的技术方案,可以使频域滤波器进行高效稳定的工作,经实验得到的具体性能指标为:
回声压缩:50-60dB;
收敛时间:<1s;
支持的反馈回路延迟时间:可调,如在采样率为8K,滤波器长度1024时,可支持128ms延迟。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换等,均应包含在本发明的保护范围之内。

Claims (22)

1、一种麦克风回声消除装置,用于消除扬声器与麦克风之间的声学回路所产生的回声,包括:
数据采集合并模块,用于采集即将输出到扬声器的来自远端的声音信号u,每次采集的数据帧长为M,当前帧即第k帧数据记为,并与上一帧即第k-1帧数据
Figure C200610144055C00022
联合组成一个长度为2M的大帧
Figure C200610144055C00024
其中u(kM-M)为原始的第k-1帧数据中的第1个数据;
u(kM-1)为原始的第k-1帧数据中的第M个数据;
u(kM)为原始的第k帧数据中的第1个数据;
u(kM+M-1)为原始的第k帧数据中的第M个数据;
频域自适应滤波器,其当前的滤波器频域系数记为 W ( k ) = FFT w ( k ) 0 , 长度为2M,其中w(k)为滤波器的时域系数,长度为M;所述频域自适应滤波器用于将所述
Figure C200610144055C00026
进行FFT处理,转换到频域,得到 U ( k ) = FFT [ u &RightArrow; ( k ) ] ; 并以当前的滤波器系数W(k)对所述U(k)进行滤波处理,然后对滤波处理结果进行IFFT处理,得到回声的一帧预测值 y &RightArrow; ( k ) = IFFT [ U ( k ) * W ( k ) ] , 结果取其后M个点;
减法器,用麦克风采集到的长度为M的所述回声
Figure C200610144055C000210
减去所述预测值
Figure C200610144055C000211
得到残余回声 e &RightArrow; ( k ) = d &RightArrow; ( k ) - y &RightArrow; ( k ) ;
所述频域自适应滤波器中还包括语音相关性检测单元,用于在频域中计算所述残余回声
Figure C200610144055C00031
与所述来自远端的声音信号
Figure C200610144055C00032
的语音相关性,得到语音相关性参数 &phi; &RightArrow; ( k ) = IFFT [ U H ( k ) * E ( k ) ] , 其中UH(k)为对所述U(k)的共轭值, E ( k ) = FFT 0 e &RightArrow; ( k ) , 取其结果的前M个点;
所述频域自适应滤波器中还包括系数更新单元,用于根据所述语音相关性,结合所述自适应滤波器的自适应步长μ对所述频域自适应滤波器的系数W(k)进行更新,得到
W ( k + 1 ) = W ( k ) + &mu;FFT &phi; &RightArrow; ( k ) 0 ;
所述频域自适应滤波器每进行一次自适应滤波,其系数W(k)即被更新一次,下一次自适应滤波时,所述自适应滤波器以更新后的系数W(k+1)对下一个组合的大帧数据进行频域滤波;
其特征在于,所述麦克风回声消除装置还包括一个帧长调整模块,用于设置所述u的数据帧长L,其中L为小于M的值;
相应地,所述数据采集合并模块,用于将u当前的第k帧数据的L个数据及其之前紧临的2M-L个连续的数据联合起来组成一个长度为2M的大帧;
相应地,所述频域自适应滤波器对所述2M的大帧进行自适应滤波;每帧长度为L的数据滤波处理完毕后,更新所述滤波器的频域滤波系数;
以及相应地,所述麦克风回声消除装置还包括一个残余回声截取模块,用于截取所述残余回声
Figure C200610144055C00041
每帧结果的前L个信号,得到最终的残余回声e。
2、根据权利要求1所述的回声消除装置,其特征在于,所述帧长调整模块将帧长由M调整为L=M/n,n为大于1的整数;相应地,所述数据采集合并模块将u的当前帧以及之前紧临的2n-1个数据帧联合成为一个长度为2M的大帧。
3、根据权利要求1或2所述的回声消除装置,其特征在于,还包括有声检测模块和滤波控制模块,
所述有声检测模块,包括两个有声检测单元,分别用于检测麦克风输入端及扬声器输出端的有声情况,并将检测结果输出给滤波控制模块;
所述滤波控制模块,用于根据所述有声检测模块的输出结果控制所述频域自适应滤波器的工作,
若所述麦克风输入端有声检测结果为无声,则不进行自适应滤波,也不进行系数更新,直接令输出 e &RightArrow; ( k ) = d &RightArrow; ( k ) , 完成此帧处理;
若麦克风输入端检测结果为有声,那么再看扬声器输出端的检测结果,如果扬声器输出端检测无声,自适应滤波正常进行,但是不进行系数更新,输出 e &RightArrow; ( k ) = d &RightArrow; ( k ) - y &RightArrow; ( k ) , 完成此帧处理;
如果麦克风输入端及扬声器输出端的检测结果均为有声,那么自适应滤波器处于正常工作状态,即进行自适应滤波,也进行系数更新,得到输出 e &RightArrow; ( k ) = d &RightArrow; ( k ) - y &RightArrow; ( k ) , 以及更新后的滤波器系数W(k+1),完成此帧处理。
4、根据权利要求3所述的回声消除装置,其特征在于,所述有声检测模块通过将麦克风输入端及扬声器输出端的声音信号的短时平均幅值与噪声电平相比较来判断是否有声,具体为:
如果MicSignal_avg>NoiseFloor,则判断麦克风线路有声,否则无声;
所述 MicSignal _ avg = 1 / M &Sigma; 0 M - 1 | d &RightArrow; ( k ) | 为麦克风输入信号的短时平均幅值,其中
Figure C200610144055C00052
为麦克风采集到的一帧长度为M的回声,M为帧长,NoiseFloor是估计的噪声电平;
如果SpkSignal_avg>NoiseFloor,则判断扬声器线路有声,否则无声;
所述 SpkSignal _ avg = 1 / L &Sigma; 0 L - 1 | u &RightArrow; ( k ) | , 为输入到扬声器的信号的短时平均幅值,
Figure C200610144055C0005163809QIETU
为输入到扬声器的信号,L为帧长。
5、根据权利要求1或2所述的回声消除装置,其特征在于,还包括步长调整模块,用于检测自适应滤波器的系数更新步长μ,并在所述μ大于所设定的最大系数更新步长阈值时,减小μ值。
6、根据权利要求5所述的回声消除装置,其特征在于,在检测到自适应滤波器系数的更新步长恢复正常时,将系数更新步长恢复到初始值。
7、根据权利要求1或2所述的回声消除装置,其特征在于,还包括系数调整模块,用于在检测到自适应滤波器的系数W(k)大于所设定的系数阈值时,减小所述滤波器系数W(k)。
8、根据权利要求1或2所述的回声消除装置,其特征在于,还包括:非线性处理模块,用于抑制回声中的非线性成分。
9、根据权利要求8所述的回声消除装置,其特征在于,所述非线性处理模块在E(e)>NLPfloor时,令
Figure C200610144055C00054
其中,e为残差信号,也为所述非线性处理模块的输入,而所述非线性处理模块的输出为e′,E(e)为残差信号的短时平均幅值,NLPfloor为判决电平。
10、根据权利要求9所述的回声消除装置,其特征在于,当E(e)≤NLPfloor时,e′直接用舒适噪声代替。
11、根据权利要求8所述的回声消除装置,其特征在于,还包括:
扬声器有声检测模块,用于检测扬声器输出端的有声情况;
非线性处理控制模块,用于根据扬声器有声检测模块的输出结果开启或关闭所述非线性处理模块;
所述扬声器有声检测模块检测到扬声器输出端有声时,即SpkSignal_avg>NoiseFloor时,
并且在扬声器输出端信号比残差信号大α倍时,即SpkSignal_avg/E[e]>α时,才启动非线性处理模块;
如果所述两个条件有一个不满足,都将关闭非线性处理模块;
其中:SpkSignal_avg为扬声器输出信号短时平均幅值,Noisefloor是估计的噪声电平,E(e)为e的短时平均幅值。
12、一种麦克风回声消除方法,利用频域自适应滤波方法消除来自远端的声音信号u经过扬声器与麦克风之间的声学回路产生的回声d,最终得到残余回声e,其时域滤波器系数为w(k),长度为M,其对应频域滤波器系数为: W ( k ) = FFT w ( k ) 0 , 长度为2M,采用重叠保留法;
其特征在于,
1)设置每次采集的信号u的数据帧长L;
2)以所述设置的帧长L采集一帧信号表示第k帧信号;
3)将当前帧
Figure C200610144055C00071
与之前的2M-L个数据合并成一长度为2M的大帧
Figure C200610144055C00072
4)将所述
Figure C200610144055C00073
转换到频域,采用重叠保留法,以滤波器系数W(k)对所述频域的
Figure C200610144055C00074
进行滤波,将结果转换到时域,得到所述回声的时域的预测值
5)采集回声
Figure C200610144055C00076
并减去
Figure C200610144055C00077
得到第k帧的最小残余回声信号
Figure C200610144055C00078
6)根据所述
Figure C200610144055C00079
Figure C200610144055C000710
的相关性,更新所述滤波器系数W(k),得到W(k+1);
7)执行步骤2),采集下一帧信号,对其进行数据合并后,以所述更新的滤波器系数进行频域自适应滤波,直至数据输入完毕。
13、根据权利要求12所述的方法,其特征在于,
所述频域自适应滤波算法包括如下步骤:
1)帧长调整步骤,将u的帧长由M调整为小于M的正整数值L;
2)采集u的第k帧信号,帧长为L,记为
Figure C200610144055C000711
3)将所述
Figure C200610144055C000712
中的L个数据,以及之前紧临的2M-L个数据联合起来组成一个长度为2M的大帧
Figure C200610144055C000713
Figure C200610144055C000714
u(kL-2M+L)为原始的第k帧前的第2M-L个数据,
u(kL-2)为原始的第k帧前的第2个数据,
u(kL-1)为原始的第k帧的前一个数据,
u(kL)为原始的第k帧中的第1个数据,
u(kL+L-1)为原始的第k帧中的第L个数据;
4)将
Figure C200610144055C000715
做FFT处理,转换到频域得到: U ( k ) = FFT [ u &RightArrow; ( k ) ] ;
5)采用重叠保留法,以当前的滤波器系数W(k)对所述U(k)进行滤波,即频域上的相乘,然后对其结果进行IFFT处理后取其结果的后M个数据,记为
Figure C200610144055C00081
即有:
y &RightArrow; ( k ) = [ y ( kM ) , y ( kM + 1 ) , . . . . . . , y ( kM + M - 1 ) ] = IFFT [ U ( k ) * W ( k ) ] ;
6)所述u被扬声器播放后,经过扬声器与麦克风之间的声学回路,然后被麦克风采集到长度为M的回声信号以
Figure C200610144055C00083
表示,即:
d &RightArrow; ( k ) = [ d ( kM ) , d ( kM + 1 ) , . . . , d ( kM + M - 1 ) ] ,
所述
Figure C200610144055C00085
与所述
Figure C200610144055C00086
相减后得到最小残余回声信信号
Figure C200610144055C00087
为:
e &RightArrow; ( k ) = [ e ( kM ) , e ( kM + 1 ) , . . . . . . , e ( kM + M - 1 ) ] = d &RightArrow; ( k ) - y &RightArrow; ( k ) ;
7)截取所述
Figure C200610144055C00089
结果的L个信号作为最终的残余回声输出;
8)在所述长度为M的未经截取的
Figure C200610144055C000810
前补M个零,并进行FFT处理,得到: E ( k ) = FFT 0 e &RightArrow; ( k ) ;
同时对步骤4)所述U(k)取共轭得到UH(k),然后与所述E(k)进行点乘,其结果进行IFFT运算,同时根据重叠保留法,得到:
&phi; &RightArrow; ( k ) = IFFT [ U H ( k ) * E ( k ) ] ,
在上式中,需删除结果的后一帧,只取IFFT结果的前M个点;
9)在所述
Figure C200610144055C000813
后补M个零,然后进行FFT处理,其结果与自适应步长μ相乘,得到的乘积与滤波器系数W(k)相加,可得到滤波器系数频域形式的更新值如下: W ( k + 1 ) = W ( k ) + &mu;FFT &phi; &RightArrow; ( k ) 0 , 下一次自适应滤波即采用该更新后的滤波器系数W(k+1)进行滤波;
10)执行所述频域自适应滤波算法中的步骤2),直至来自远端的声音信号输入完毕。
14、根据权利要求12或13所述的方法,其特征在于,所述L值为M/n,n为大于1的整数。
15、根据权利要求12所述的方法,其特征在于,在所述步骤1)之前还包括有声检测步骤和滤波控制步骤,包括:
有声检测步骤,检测麦克风输入端及扬声器输出端的有声情况;
滤波控制步骤,根据所述有声检测步骤的结果控制滤波器的工作;
具体为:
若麦克风输入端检测结果为无声,则不进行自适应滤波,也不进行系数更新,直接令输出 e &RightArrow; ( k ) = d &RightArrow; ( k ) , 完成此帧处理;
若麦克风输入端检测结果为有声,那么再看扬声器输出端的检测结果,如果扬声器输出端检测无声,则自适应滤波正常进行,但是不进行系数更新,输出 e &RightArrow; ( k ) = d &RightArrow; ( k ) - y &RightArrow; ( k ) , 完成此帧处理;
如果麦克风输入端及扬声器输出端的检测结果均为有声,则自适应滤波器处于正常工作状态,既进行自适应滤波,也进行系数更新,输出 e &RightArrow; ( k ) = d &RightArrow; ( k ) - y &RightArrow; ( k ) , 完成此帧处理;
其中,
Figure C200610144055C00094
为麦克风收到的回声,
Figure C200610144055C00095
为所述自适应滤波器输出的对
Figure C200610144055C00096
的预测值,
Figure C200610144055C00097
为残余回声。
16、根据权利要求15所述的方法,其特征在于,所述有声检测是通过将麦克风输入端及扬声器输出端的声音信号的短时平均幅值与噪声电平相比较来判断是否有声,具体为:
如果MicSignal_avg>NoiseFloor,则判断麦克风线路有声,否则无声;
所述 MicSignal _ avg = 1 / M &Sigma; 0 M - 1 | d &RightArrow; ( k ) | , 为麦克风输入信号的短时平均幅值,
Figure C200610144055C00099
为麦克风输入信号,即收到的回声信号,M为一帧语音信号的长度,NoiseFloor为估计的噪声电平;
如果SpkSignal_avg>NoiseFloor,则判断扬声器线路有声,否则无声;
所述 SpkSignal _ avg = 1 / L &Sigma; 0 L - 1 | u &RightArrow; ( k ) | , 为扬声器输出信号短时平均幅值,
Figure C200610144055C00101
为扬声器输出信号,L为一帧语音信号的长度。
17、根据权利要求12或13所述的方法,其特征在于,还包括步长调整步骤,用于在检测到自适应滤波器的系数更新步长大于所设定的最大系数更新步长阈值时,减小自适应滤波器的系数更新步长。
18、根据权利要求17所述的方法,其特征在于,在检测到自适应滤波器系数的更新步长恢复正常时,将系数更新步长恢复到初始值。
19、根据权利要求12或13所述的方法,其特征在于,还包括系数调整步骤,用于在检测到自适应滤波器的系数大于所设定的系数阈值时,减小滤波器的系数。
20、根据权利要求12所述的方法,其特征在于,在所述步骤5)之后还包括非线性处理步骤:
首先计算最小化残差信号的短时平均幅值E(e);
然后判断E(e)是否大于事先设定的非线性处理阈值NLPfloor,如果判断结果为是,则使用下式计算最小化残余噪声e′(n):
Figure C200610144055C00102
其中,e为残差信号,为所述非线性处理模块的输入,而非线性处理模块的输出为e’,E(e)为残差信号的短时平均幅值,NLPfloor为判决电平。
21、根据权利要求20所述的方法,其特征在于,如果E(e)≤NLPfloor,e′直接用舒适噪声代替。
22、根据权利要求20所述的方法,其特征在于,在非线性处理步骤之前,还包括非线性处理开关控制步骤,具体为:
检测扬声器输出端的有声情况;
根据所述检测结果开启或关闭所述非线性处理步骤,具体为:
当检测到扬声器输出端有声,即SpkSignal_avg>NoiseFloor,并且扬声器输出端信号比残差信号大α倍时,即SpkSignal_avg/E[e]>α,才启动非线性处理模块;
如果所述两个条件有一个不满足,都将关闭非线性处理模块;其中:SpkSignal_avg为扬声器输出信号短时平均幅值,NoiseFloor是估计的噪声电平,E(e)为残差信号的短时平均幅值,α为预设的倍数值。
CNB2006101440555A 2006-11-24 2006-11-24 一种麦克风回声消除装置及回声消除方法 Expired - Fee Related CN100524466C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2006101440555A CN100524466C (zh) 2006-11-24 2006-11-24 一种麦克风回声消除装置及回声消除方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2006101440555A CN100524466C (zh) 2006-11-24 2006-11-24 一种麦克风回声消除装置及回声消除方法

Publications (2)

Publication Number Publication Date
CN1953060A CN1953060A (zh) 2007-04-25
CN100524466C true CN100524466C (zh) 2009-08-05

Family

ID=38059354

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006101440555A Expired - Fee Related CN100524466C (zh) 2006-11-24 2006-11-24 一种麦克风回声消除装置及回声消除方法

Country Status (1)

Country Link
CN (1) CN100524466C (zh)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101192411B (zh) * 2007-12-27 2010-06-02 北京中星微电子有限公司 大距离麦克风阵列噪声消除的方法和噪声消除***
CN101217039B (zh) * 2008-01-08 2011-11-23 北京中星微电子有限公司 一种实现回声消除的方法、***及装置
JP5386936B2 (ja) * 2008-11-05 2014-01-15 ヤマハ株式会社 放収音装置
US8243939B2 (en) * 2008-12-30 2012-08-14 Gn Resound A/S Hearing instrument with improved initialisation of parameters of digital feedback suppression circuitry
CN102131014A (zh) * 2010-01-13 2011-07-20 歌尔声学股份有限公司 时频域联合回声消除装置及方法
CN101888455B (zh) * 2010-04-09 2013-07-03 熔点网讯(北京)科技有限公司 一种频域自适应回声抵消方法
JP2013042334A (ja) * 2011-08-15 2013-02-28 Sony Corp 情報処理装置、情報処理方法、およびプログラム
CN102387272B (zh) * 2011-09-09 2013-10-30 南京大学 一种回声抵消***中残留回声的抑制方法
CN102413384A (zh) * 2011-11-16 2012-04-11 杭州艾力特音频技术有限公司 一种回声消除双向语音对讲设备
TWI449438B (zh) * 2012-04-09 2014-08-11 Quanta Comp Inc 具有迴音消除機制之通訊系統及方法
EP3120576B1 (en) * 2014-03-19 2018-09-12 Cirrus Logic International Semiconductor Limited Non-linear control of loudspeakers
GB2519392B (en) * 2014-04-02 2016-02-24 Imagination Tech Ltd Auto-tuning of an acoustic echo canceller
EP3175456B1 (en) * 2014-07-31 2020-06-17 Koninklijke KPN N.V. Noise suppression system and method
CN106067301B (zh) * 2016-05-26 2019-06-25 浪潮金融信息技术有限公司 一种使用多维化技术进行回声降噪的方法
US9870763B1 (en) * 2016-11-23 2018-01-16 Harman International Industries, Incorporated Coherence based dynamic stability control system
CN106713685A (zh) * 2016-11-25 2017-05-24 东莞市嘉松电子科技有限公司 免提通信控制方法
CN106910500B (zh) * 2016-12-23 2020-04-17 北京小鸟听听科技有限公司 对带麦克风阵列的设备进行语音控制的方法及设备
CN107123430B (zh) * 2017-04-12 2019-06-04 广州视源电子科技股份有限公司 回声消除方法、装置、会议平板及计算机存储介质
CN107071197B (zh) * 2017-05-16 2020-04-24 中山大学花都产业科技研究院 一种基于全相位多延迟分块频域的回音消除方法及***
CN107017004A (zh) * 2017-05-24 2017-08-04 建荣半导体(深圳)有限公司 噪声抑制方法、音频处理芯片、处理模组及蓝牙设备
CN109215672B (zh) * 2017-07-05 2021-11-16 苏州谦问万答吧教育科技有限公司 一种声音信息的处理方法、装置及设备
CN107393546B (zh) * 2017-09-04 2020-10-13 恒玄科技(上海)股份有限公司 一种用于语音识别过程的回声消除方法及语音识别设备
CN109979475A (zh) 2017-12-26 2019-07-05 深圳Tcl新技术有限公司 解决回声消除失效的方法、***及存储介质
CN108986836A (zh) * 2018-08-29 2018-12-11 质音通讯科技(深圳)有限公司 一种回声抑制器的控制方法、装置、设备和存储介质
CN109102821B (zh) * 2018-09-10 2021-05-25 思必驰科技股份有限公司 时延估计方法、***、存储介质及电子设备
CN110913310A (zh) * 2018-09-14 2020-03-24 成都启英泰伦科技有限公司 一种播音失真纠正的回声消除方法
CN109346096B (zh) * 2018-10-18 2021-07-06 深圳供电局有限公司 一种用于语音识别过程的回声消除方法及装置
CN110838300B (zh) * 2019-11-18 2022-03-25 紫光展锐(重庆)科技有限公司 回声消除的处理方法及处理***
CN111091846B (zh) * 2019-12-26 2022-07-26 江亨湖 一种降噪方法及应用该方法的回声消除***
CN111341336B (zh) * 2020-03-16 2023-08-08 北京字节跳动网络技术有限公司 一种回声消除方法、装置、终端设备及介质

Also Published As

Publication number Publication date
CN1953060A (zh) 2007-04-25

Similar Documents

Publication Publication Date Title
CN100524466C (zh) 一种麦克风回声消除装置及回声消除方法
CN100531274C (zh) 数字自适应滤波器和滤波方法
JP5049277B2 (ja) クリアな信号の取得のための方法及びシステム
US7054437B2 (en) Statistical adaptive-filter controller
US5933495A (en) Subband acoustic noise suppression
CN101964670B (zh) 回声抑制方法及回声抑制设备
KR101017766B1 (ko) 핸드 프리 장치에서의 스펙트럼 도메인 비선형 반향 제거방법
EP3080975B1 (en) Echo cancellation
US20040264610A1 (en) Interference cancelling method and system for multisensor antenna
Costa et al. Acoustic echo cancellation using nonlinear cascade filters
WO2017099728A1 (en) System and method for suppression of non-linear acoustic echoes
CN104883462A (zh) 一种用于消除声学回声的自适应滤波器及滤波方法
EP0789476B1 (en) Noise reduction arrangement
CN110211602B (zh) 智能语音增强通信方法及装置
CN103780998A (zh) 消除声学回波的方法和设备、与自适应滤波系数更新方法
AU723628B2 (en) Gauging convergence of adaptive filters
CN107134281A (zh) 一种自适应回声消除中自适应滤波器系数更新方法
EP2930917B1 (en) Method and apparatus for updating filter coefficients of an adaptive echo canceller
CN107071196B (zh) 一种自适应回声消除方法
Malik et al. A variational Bayesian learning approach for nonlinear acoustic echo control
US20050220292A1 (en) Method of discriminating between double-talk state and single-talk state
US5987143A (en) Method and apparatus for erasing acoustic echo
CN112165558B (zh) 一种双讲状态检测方法、装置、存储介质及终端设备
US10819858B2 (en) Method for improving echo cancellation effect and system thereof
CN113345457B (zh) 一种基于贝叶斯理论的声学回声消除自适应滤波器及滤波方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090805

Termination date: 20201124

CF01 Termination of patent right due to non-payment of annual fee