技术背景
在各种应用中,回声消除是重要的要素。一般地,回声消除是一种对于电和声音回声的数字消除,用来减少或者消除回声。在诸如通信系统的应用中,回声消除是重要的,它可以被用来改善声音质量。回声消除可以用来克服不同类型的回声,包括由沿着电线(包括电话线)的阻抗不匹配引起的混合回声、由从扬声器到麦克风声音的声音耦合引起的声学回声。这些类型的回声在一些不同的技术中出现,诸如无线电话、免提电话、电话会议系统、网络电话和语音识别系统。通过使用回声消除。改善了这些和许多其它技术的声音的质量和效用。
回声消除中的一种类型是声学回声消除,用来消除声波的回声。通常,当从一个或多个扬声器发出声音被一个或多个麦克风接收时,这些形成回声。声学回声可以是非常显著的并且甚至使用户感到讨厌。
一般地,声学回声消除通过接收一个或多个回放信号来实现,每个回放信号通向相应的扬声器,并且减去一个由来自一个或多个麦克风信号的回放信号产生的回声估计值。更具体地说,通过这个回声回路的回放信号被转变和延迟,背景噪音和可能的近端语音被加在麦克风中,并且使用一个回声消除的减法过程。在使用减法过程之后所获得的信号称为误差信号,目标是当没有近端语音在麦克风信号中出现时,使误差信号最小。
声学回声消除系统的核心是自适应滤波。一般地,自适应滤波器被用来识别或“学习”包含扬声器和麦克风的空间的传递函数。这个传递函数绝大多数依赖于该空间环境的物理特性。自适应滤波器实现方式是,获取传送到扬声器的回放信号,并且用递归的方式调整一些代表在该空间脉冲响应的系数。从实际回声中减去的估计回声,即是误差信号,它被用来改变滤波系数以使误差最小。
一般地,通过一个单延迟线和一个单滤波器,回放信号被单独处理成一个时间样本的单流。为了改善这个,回放信号可以被分成子波段并且多个自适应滤波器可以并行运行,每个自适应滤波器对应一个子波段。改变在不同子波段中的自适应滤波器的长度,取决于在那个子波段中的回声长度,以便减少计算的复杂性,关于这方面在由1987年召开的有关声学、语音和信号处理的国际会议的会议论文集第2141-2144页中由A.Gilloire所写的题为“关于远程会议使用的子波段声学回声消除器的实验”论文中有所讨论。从那篇论文可以获知,较低子波段的自适应滤波器可以被制作的较长用来节省CPU运算周期,因为低音反射较长。在较高子波段,滤波器可以稍短。因此,Gilloire的论文表明在较低子波段中使用较长自适应滤波器,在较高子波段中使用较短自适应滤波器。
为了消除在一个捕获信号中的回声,回放信号的每个子波段被存储在一条数字延迟线,在此延迟的子波段信号被分成分支。在每个分支,该回放信号被取样。一个滤波器的分支的数量描述了该数字延迟线的长度。比如,四个分支表明回放信号在当前帧、当前帧-1、当前帧-2、和当前帧-3上被取样。每个延迟等于帧的长度(例如可以是,接近于16毫秒或20毫秒)。因此,如果帧的长度是16毫秒,并且有4个分支(或者一个4个长度的自适应滤波器),且如果该自适应滤波器在该频域中通过使用自适应子波段滤波来实现,那么回放信号在当前帧、早于当前帧16毫秒的帧、早于当前帧32毫秒的帧和早于当前帧48毫秒的帧中被检验。
每个样本和一个权重(称为一个分支权重,W)的复共轭相乘,被乘的权重相加,然后从麦克风信号中减去。每个分支权重被调整用来最小化输出功率。通过最小化输出功率抑制了尽可能多的扬声器信号,从而减少回声。
声学回声消除首先被使用在单耳(或单声道)系统。图1说明了一个用来处理单声道回放信号的单信道、声学回声消除(AEC)系统100。一单声道回放信号x105被备份到相等的多信道信号里,然后通过右扬声器110和左扬声器120播放。分别来自扬声器110,120的回声130,140被房间中的墙150反射并由麦克风160捕获。该麦克风也捕获想要的语音165(诸如来自远程会议参与者)和背景噪音170。
回声130、140、想要的语音165和背景噪音170组成构建了麦克风信号y。该麦克风信号y被第一分析滤波器组175处理,回放信号x被第二分析滤波器组180处理,使得信号x和y分别从时域转换为频域信号X和Y。在频域中运行AEC是重要的,因为AEC中的回声很长,并且相比较在时域中,自适应滤波器在频域中收敛更频繁,更迅速。应该注意的是分析滤波器组175,180可以被当做诸如加窗的(包括盒窗体)快速傅里叶变换(FFT)或者在一示例性实例中的已调制复数重叠变换(MCLT)的任一复数频域转换来实现。
把转换好的信号X和Y输入到一AEC单声道处理器185,该处理器使用自适应滤波器学习空间的传递函数以此使误差信号最小化。把处理好的被信号发送到合成滤波器组190,该滤波器组把回声消除后的包括近端语音的频域信号传送回时域。需要注意的是图1中的单声道AEC处理器在每个子波段只用一个单自适应滤波器。
图2是一个在图1中示出的单声道AEC处理器185对于一个单子波段m和帧n的详细方框图。单声道AEC处理器185对于每个子波段都包含一个单自适应滤波器200。自适应滤波器系数更新210用来更新子波段自适应滤波器200的处理系数。当单声道回放信号x按照如图1所示被播放到扬声器110,120,执行该单自适应滤波器200。在一个一般的实施例中,自适应滤波器使用一个拥有正则化的归一化的最小均方(NLMS)算法。该拥有正则化的NLMS算法在以下进行详细论述。
当一个数被第二个数除,正则化是指为了避免导致分数变得无穷大,通过对分母添加或减去一个小的数值来确保分母永远不为0的过程。另一种正则分数的方法是如果分母是正数并且小于某个阈值,则将分母设置成和该阈值相等。同样地,如果分母是负数并且如果它小于一个负阈值,则将分母设置成该负阈值。
在图1中所示的单信道AEC系统100只是为了除去来自单声道回放信号的回声。在第一批讨论把AEC扩展到立体声的论文中是一篇由M.Sondhi和D.Morgan在1991年IEEE课题组引用信号处理声音声学过程中所写的题为“对于立体声远程会议的声学回声消除”。然而,尽管NLMS算法在单声道AEC问题中表现良好,在立体声(或其它多信道)AEC问题中表现差强人意。这是因为NLMS没有考虑到多信道回放信号的交叉信道相关,该相关使自适应滤波器的收敛速度明显放慢。
Sondhi和Morgan建议使用递归最小二乘法(RLS)代替NLMS以解决立体声AEC问题。该RLS算法是用于调整自适应滤波器的参数(或权重)的一种可供选择的算法。RLS比NLMS表现出色的理由是RLS趋向去各回放信道之间的相关。由于RLS递归地计算出输入扬声器数据的相关矩阵的逆矩阵的估值,它可以得知扬声器信道之间的相关性,并且快速地收敛到正确的结果。然而,Shondhi和Morgan仅仅提出使用RLS算法代替NLMS算法的可能性,并没有提供详细信息。
图3示出了一个用来处理立体声回放信号的立体声AEC系统300。在图3中所示的立体声AEC系统是一个基于子波段的系统,意为扬声器信号被分解到多个子波段,并且为每个子波段提供一个自适应滤波器。自适应滤波器可以并行运行。应该注意到虽然AEC系统可以被设计成也可以处理多信道回放信号,图3示出的AEC系统300拥有一个立体声回放信号。另外,图3中说明的是一单麦克风,但是AEC系统300可以容易地扩展到多麦克风。
参照图3,对于立体声回放情况,立体声回放信号x是由两个信道组成,一右立体声信道x(0)302和一左立体声信道x(1)305。对于多信道AEC的情况,在N个信道回放情况下,信号由从x(0)到x(N-1)的信道组成。回放信号302和305通过数模转换器(D/A)(没有显示)被转换成模拟信号。
多信道回放信号(包括立体声信号)可以通过多种不同方式产生。图4示出了使用诸如Microsoft视窗Messeger(信使)程序或对于网络游戏的语音聊天的语音通信系统的图3中的AEC系统300。在图4中,一个数字远端单声道语音信号400从一个来源到达。该语音信号400在本地和其它一些诸如音乐左410和音乐右420、计算机游戏声音的立体声声音、或者计算机的系统声音混合。
另外,图5示出了在多信道回放信号中包括立体声音乐的情况。在这个情况下,音乐左410被分配到一条多信道回放信道,音乐右420被分配到另外一条多信道回放信道。这里没有和多信道声音混合的远端语音。
在另外一个可供选择的情况中,图6示出了在多信道信号中包括单声道语音的情况。在图6中所示的这种情况可以被使用在Microsoft视窗Messeger系统上。单声道语音600被备份到每个回放信道中,但是多信道回放信号是单声道的。
再参考图3,回放信号302,接下来的305分别通过右扬声器310和左扬声器320播放。第一个回声330和第二个回声340在一个空间内(图中未示)通过墙350反射,以此在麦克风355处产生回声。在多个麦克风的情况下,一个立体声AEC系统300的单独实例可以处理从单个麦克风单独捕获的信号,或者一个AEC算法可以在一个麦克风陈列算法的单声道输出上被处理。除了来自扬声器的回声,被麦克风355捕获的声频信号也由想要的语音360和背景噪音365组成。被麦克风355捕获的模拟声频信号通过模数转换器(A/D)(图中未示)转换成一个数字麦克风信号y。
声学回声消除经常使用基于频域转换,诸如快速加窗傅里叶变换(FFT)或已调制复数重叠变换(MCLT)的自适应子波段滤波来执行。第一滤波器组370和第二滤波器组375分别把每个立体声回放信号x(0)和x(1)从时域转换成相应的频域信号X(0)和X(1)。同样地,第三解析滤波器组380把单声道麦克风信号y从时域转换成频域信号Y。这些信号由立体声AEC处理器385处理,并且输出Z通过一合成型滤波器组390运行。然后,输出带有消减后回声的时域信号z。
图7是图3所示的对于单子波段的立体声AEC处理器385的详细框图。该立体声AEC处理器包含对于第一多信道回放信号X(0)的第一自适应滤波器700和一对于第二多信道回放信号X(1)的第二自适应滤波器710。需要注意的是,分别的单信道滤波器在每个独立于其它子波段的子波段上并行运行。如上参照图3所述,回放信号X(0),X(1)被处理,并且使用自适应滤波器系数更新720来更新单信道滤波器700,710的被处理过的系数。然后输出带有缩减后回声的频域信号Z。
然而,对于计算自适应滤波器权重而言,RLS算法的一个问题是它具有高计算复杂性。相比较于最小均方(LMS)的复杂度O(2N),这个算法的复杂度是数量级O(2N^2+6N),在此N=C*L,C是回放信道的个数,L是在子波段中自适应滤波器的长度。先前,这个RLS的计算复杂性使它无法在AEC的实际系统中使用。一篇由B.Hatty所写的,发表于1990年3-6月召开的有关声学、语音和信号处理的国际性会议的论文集卷2,第1145-1148页,题为“最小均方算法对于声学回声的消除运用多级速度系统”的论文是第一批讨论对于单声道AEC使用快速RLS(FRLS)的论文中的一篇。通过避免使用相关矩阵(或任何其它类型的矩阵),FRLS提高了速度并且降低了RLS的复杂性。然而,FRLS的一个问题是它非常不稳定。作为这种不稳定性的结果,FRLS算法可迅速发散。已经有很多尝试用来提高FRLS的稳定性。然而,到目前为止,没有人提出一个对多信道AEC问题满意的解决方案。Hatty提出使用循环方案来提高FRLS的稳定性,该方案以一种逐个波段的方法周期性的复位整个FRLS算法。Hatty所做的是通过丢弃整个算法的状态来完全重新初始化一个波段,并且从暂存区重启它。
然而,这样复位技术的一个问题是,由于每次复位后FRLS算法必须重新收敛和重新学习空间的传递函数,回声会在波段复位时泄漏。另外,Hatty技术会引起回放信号的失真,因为在任一给定的时间至少有一部分算法正在被复位。
在1995年,J.Benesty,J.等在Proc.ICASSP’95论文集中第3099-3102页发表的题为“对于立体声的声学回声的自适应滤波算法”的论文中提出使用快速RLS(FRLS)尝试和解决立体声AEC问题。然而,Benesty的论文建议在时域中使用FRLS代替使用自适应子波段滤波。
在另一篇由J.Benesty、D.Morgan和M.Sondhi所写的一篇在Proc.ICASSP’97论文集中第303-306页发表的题为“对于立体声的声学回声消除问题的一种更好的理解和一种改进的解决方案”论文中,提出了一种更新。在Benesty’97的论文中,为了从右信道中去除左信道的关联(它们非常相似),Benesty在两个信道上都添加了非线性。在一个实施中,Benesty在一条信道上添加了非线性的正的部分,在另外一条信道上添加了该非线性的逆的(或负的)部分。这种被引入的非线性迫使信道变得足够的不同以便自适应滤波器可以获悉单个路程。用这种方法,信道被去除相关并且变得足够不同,使和必须跟踪远端传递函数(从远端个体到远端立体声麦克风),以及跟踪近端传递函数(从近端扬声器到近端立体声麦克风)的相关联的非唯一性问题得以避免。
把一个非线性加入到信号(如已在Benesty’97论文中所作那样)的问题是加入任何类型的非线性都会导致信号失真。基本上,加入非线性就是把失真加入到信号中。然而,如果AEC系统和一个包括音乐回放的系统运行良好,那么加入失真是不受欢迎的。理想地,对于音乐回放,信号应当没有失真使得音乐是被保真地播放。
在2001年7月有关语音和声处理的IEEE论文集第9卷,第5号,第513到523页,由P.Eneroth、S.Gay、T.Gansler和J.Benesty所写的题为“立体声声学回声消除器的实时执行”中提出运用在子波段中的FRLS和把非线性添加到回放信道作为对于立体声AEC问题的解决方案。这篇论文试图通过运行并行FRLS算法结构来提高稳定性,以便当结构中的一个“爆炸”或不稳定时,它们可以回退回另外一个稍差优化的结构。这种实现帮助它们重新初始化该算法。
在1990年,当Hatty’90论文建议对于自适应子波段AEC处理使用FRLS时,那时的微处理器比现在的要慢很多。结果,对于多信道AEC问题,RLS不是一个实用的解决方案。然而,随着现代微处理器速度的显著提高,RLS现在可以被使用。然而,如果多信道回放信号的相关矩阵变成奇异,那么该RLS算法将变得不稳定和发散。
因此,需要的是一种可以使用于多信道回放信号的回声消除系统和方法。另外,需要一种避免使用FRLS来防止系统变得不稳定的多信道回声消除系统和方法。此外,需要一种避免把失真加入到回放信号的多信道回声消除系统和方法。还需要的是一种避免并且克服以上所讨论的RLS算法问题,当保留一个原始信号保真重播的同时,用来有效地消除回声的多信道回声消除系统和方法。
具体实施方式
在本发明以下的描述中,参考作为本发明一部分的附图,附图示出本发明可以被实施的具体实例。可以被理解的是在不背离本发明范围的情况下,其它实施例可以被运用,并且可以做出结构变化。
1 引言
对于信号的回声消除的当先技术有多种缺陷。例如,当信号是单声道信号时,规则化最小均方(NLMS)是有用的,但在相关的多信道回放信号上不能起良好作用。用一非线性来处理多信道回放信号去除各信道之间的相关,但把不想要的失真添加到回放信号中。当回放信号包括音乐并且用户想要听它原始的不失真的版本时,这个是不能接受的。递归的最小平方(RLS)和快速递归的最小平方(FRLS)也可以帮助去除多信道回放信号之间的相关。然而,FRLS可以是极度不稳定。RLS需要大量计算,并且对于高度相关的回放信号可以变得不稳定。
在此公开的多信道循环正则化回声消除方法和系统克服了当前方法的这些问题。多信道循环正则化回声消除方法通过使用多个递归的最小平方(RLS)自适应滤波器和使用一循环正则化方案来处理多信道回放信号(诸如声音信号),以确保RLS算法保持稳定。稳定性是通过正则化在基于一个子波段一个子波段的循环方法的RLS中的逆相关矩阵来确保的。基本上,循环正则化确保对于在多个子波段中的每个子波段上的RLS自适应滤波器的逆相关矩阵的行列式不“爆炸”(或达到一个大的数值)。
多信道循环正则化回声消除方法和系统提供了一种新的方法来防止逆相关矩阵发散从而导致RLS自适应滤波器发散。为了确保当扬声器信号的信道是相关时算法不发散,对于每个子波段的逆相关矩阵基于循环方案被周期性地正则化。
多信道循环正则化回声消除方法和系统还包括了一新的特征,该特征允许在多信道、子波段回声消除处理(诸如在此描述的RLS循环正则化方法)和单信道、子波段回声消除处理(运用诸如规范化最小均方(NLMS)算法的自适应滤波器算法)之间的动态切换。动态切换可以通过任一处理的重新初始化来实现,用来当从多信道处理切换到单声道处理时最小化失真,并且反之亦然。多信道循环正则化回声消除方法和系统另外还包括一种在较低子波段采用RLS处理在较高子波段采用NLMS处理的类型的其他特征。这种特征允许多信道循环正则化回声消除方法和系统可以在处理能力受到限制的环境中运行。
II.一般综述
图8是一框图,示出了一在此公开的多信道循环正则化回声消除方法和系统的示例实施例。应该注意,图8是多种可以实现和使用多信道循环正则化回声消除系统和方法的方式中的一种。
参照图8,多信道循环正则化回声消除系统800驻留于一计算设备810。在图8中,系统800在内部产生回放信号P(1)、P(2)到P(N)(诸如来自光盘的音乐)。在一可供选择的实例中,回放信号P(1)、P(2)到P(N)在外部产生并且通过系统800被接收(诸如通过输入音频插座)。每个回放信号通过它相应的扬声器回放,所以P(1)通过扬声器S(1)回放,P(2)通过扬声器S(2)回放,依此类推。此外,回放信号P(1)到P(N)被获得并且输入到多信道循环正则化回声消除系统800中。
如在图8中用点线所示,扬声器S(1)到S(N)的输出导致回声820、830、840从房间(图中未示)内的墙850反射。这些回声820、830、840由一麦克风860接收。此外,该麦克风接收想要的语音870和背景噪音880。来自麦克风865的信号,也称为“被捕获的信号”,连同回放信号P(1)到P(N)的输出,被输入到多信道循环正则化回声消除系统800。在由多信道循环正则化回声消除系统800处理后,产生一新的输出信号890。输出信号890是带有减少的扬声器回声信号820、830和840的被捕获的信号865。
应该注意的是本发明不局限于声学信号。一般,可以有从S(1)到S(N)N个发送器和一个接收器860,多信道循环正则化回声消除系统将减少在输出信号890中被发送的信号的数量。
还应该注意的是本发明不局限于单接收器或麦克风860。计算设备810可以和多个接收器860连接,产生多个信号865。由多信道循环正则化回声消除系统800的一个单独范例对上述多个信号865中的每个信号操作。然后,那些单个范例中的每个范例将产生一具有减少后的回声的单个输出890。
III.
示例性的操作环境
多信道循环正则化回声消除方法和系统被设计成在一计算环境中和在一计算设备上运行,诸如图9中所示的计算设备810。现在将讨论在其内运行多信道循环正则化回声消除方法和系统的计算环境。以下的讨论旨在提供对于可在其内实现多信道循环正则化回声消除方法和系统的合适的计算环境的简短、一般的描述。
图9示出了可在其内执行图8中所示的多信道循环正则化回声消除方法和系统的合适的计算系统环境的一例。计算系统环境900只是一合适的计算环境的一例,而不是要提出对本发明使用或功能的范围的限制。计算环境900不能解释成对于在示例操作环境900中所示出的任一组件或其组合有任何依赖或需求。
多信道循环正则法回声消除系统和方法用多个其它通用或特殊用途计算系统环境或配置是可运行的。可以适用于多信道循环正则法回声消除系统和方法的公认的计算系统、环境、和/或配置的实例包括,但不局限于,个人电脑、服务器电脑、手持设备、膝上型电脑或移动计算机或诸如手机和PDA的通信设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费者电器、网络PC、小型机、大型计算机、包括任何诸如以上系统或设备的分布计算环境等。
多信道循环正则法回声消除系统和方法可以在诸如由计算机执行的程序模块的可实现计算机指令的一般上下文中被描述。一般地,程序模块包括完成特殊任务或执行特殊抽象数据类型的例行程序、程序、对象、组件、数据结构等。多信道循环正则法回声消除系统和方法也可以在分布的计算环境中实践,在此通过连接到一计算网络的远程处理设备来执行任务。在分布的计算环境中,程序模块可以定位于包括记忆体储存器设备的本地和远程计算机存储介质。参见图9,对于实现多信道循环正则法回声消除系统和方法的示例的系统包括一以计算机910形式出现的通用计算设备。
计算机910的组件包括,但不局限于,处理单元920、系统存储器930、以及将包括系统存储器在内的各种系统元件耦合至处理单元920的系统总线921。上述系统总线921可以是多种总线体系结构类型中的任何一种,包括存储总线或存储控制器、外围总线和使用各种总线体系结构的任一种的局部总线。举例来说,而非限制,此类体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型工业标准体系结构(EISA)总线、视频电子标准技术协会(VESA)局部总线、和也被称为Mezzanine总线的外围部件互连(PCI)总线。
计算机910通常包括各种计算机可读介质。计算机可读介质可以是任何计算机910能够访问的可用介质,包括易失性的和非易失性的介质、可移动的和不可移动的介质。举例来说,而非限制,计算机可读机制可以包含计算机存储介质和通信介质。计算机存储介质包括能以任何方法或技术实现的易失性的和非易失性的、可移动的和不可移动的介质,用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。
计算机存储介质包括,但不局限于,RAM,ROM,EEPROM,闪存或其它存储技术、CD-ROM、数字化多功能光盘(DVD)或其它光盘存储、盒式磁带、磁带、磁盘存储器或其它磁存储设备、或任何其它可以被用来存储想要的信息并且可以被计算机910访问的介质。通信介质通常体现出诸如载波或其它传送机制的已调数据信号中的计算机可读指令、数据结构、程序模块或其它数据,也包括任何信息传递介质。
注意术语“调制的数据信号”是指以在该信号中编码信息的方式来设置或改变其一个或多个特征的信号。举例来说,而非限制,通信介质包括诸如有线网或直线连接的有线介质,和诸如声音、射频、红外线和其它无线介质的无线介质。任何以上所述的组合也可以包括在计算机可读介质的范围之内。
系统存储器930包括以诸如只读存储器(ROM)931和随机存取存储器(RAM)932的易失和/或非易失存储器的形式的计算机存储介质。包含如在启动期间帮助在计算机910内各元素之间传送信息的基本例行程序的基本输入输出系统(BIOS)933,通常存储在ROM 931中。RAM 932通常包含可以被处理单元920立即访问和/或当前操作的数据和/或程序模块。举例来说,而非限制,图9示出了操作系统934、应用程序935、其它程序模块936和程序数据937。
计算机910还可以包括其它可移动/不可移动、易失/非易失的计算机存储介质。只作为例子,图9示出了从不可移动、非易失磁性介质读出或写入不可移动、非易失磁性介质的硬盘驱动器941、从可移动、非易失磁性磁盘952读出或写入可移动、非易失磁性磁盘952的磁盘驱动器941、以及从诸如CD ROM或其它光学介质的可移动、非易失性光盘956读出或写入可移动、非易失性光盘956的光盘驱动器955。
其它可以使用在示例的操作环境中的可移动/不可移动、易失性/非易失性计算机存储介质包括,但不局限于,盒式磁带、闪存卡、数字多功能光盘、数字视频带、固态RAM、固态ROM、等。硬盘驱动941通常通过诸如接口940的不可移动存储接口连接到系统总线921,.磁盘驱动951和光盘驱动955通常通过诸如接口940的可移动存储接口连接到系统总线921。
以上讨论并且在图9中示出的驱动器及其它们相关的计算存储介质提为计算机910提供了计算机可读指令、数据结构、程序模块和其它数据的存储。在图9,例如,示出硬盘驱动941存储操作系统944、应用程序945、其它程序模块946、和程序数据947。需要注意的是这些组件可以和操作系统934、应用程序935、其它程序模块936和程序数据937相同,也可以和它们不同。在此对操作系统944、应用程序945、其它程序模块946和程序数据947给出了不同的标号来说明至少它们是不同的拷贝。用户可以通过诸如键盘962和定位设备961把指令和信息输入到计算机910中,定位设备961通常指如鼠标、跟踪球或触摸板。
其它输入设备(图中未示)可以包括麦克风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪、射频接收器、电视机、广播视频接收器等等。这些和其它输入设备通常由用户输入接口960连接到处理单元920,上述输入接口960和系统总线921相连。但是上述和其它输入设备也可以由其它接口和总线结构连接到处理单元920,诸如,并行端口、游戏端口或通用串行总线(USB)。监视器991或其它类型显示设备也可以通过诸如视频接口990的接口连接到系统总线921。除了监视器之外,计算机也包括其它外围输出设备,诸如可以通过一输出外围设备接口996连接的扬声器997和打印机996。
计算机910可以在网络化的环境中运行,该环境使用逻辑连接连接到一个或多个诸如远程计算机980的远程计算机。远程计算机980可以是个人计算机、服务器、路由、网络个人计算机、对等设备或其它共用网络节点,通常包括以上描述的和910相关的多个或全部组件,尽管在图9中只示出了记忆体储存器981。在图9中描绘的逻辑连接包括局域网(LAN)971和广域网(WAN)973,但是也可以包括其它网络。这样的网络环境在办公室、企业范围的计算机网络、内联网和因特网中是普遍的。
当在LAN网络环境中使用时,计算机910通过网络接口或适配器970连接到LAN 971。当在WAN网络环境中使用时,计算机910通常包括调制解调器972或通过诸如因特网的WAN 973建立通信的其他装置。调制解调器972可以是内部的或外部的,可以通过用户输入接口960或其它适当的机制连接到系统总线921。在一网络连接的环境中,所描述的和计算机910相关的程序模块或其中的一部分可以存储在远程记忆体储存器设备内。举例说明,但非限制,图9示出了驻留在存储设备981上的远程应用程序985。可以理解的是所示的网络连接是示例的,也可以使用在计算机间建立通信链路的其他装置。
IV.
操作综述
现在描述图8中所示的多信道循环正则化回声消除系统800的操作。图10是一般流程图,示出了图8所示的多信道循环正则化回声消除系统800的一般操作。多信道循环正则化回声消除方法首先把多个回放信号分解成多个子波段信号(框1000)。这些信号中的每个信号可以和一个回放的信道相对应。接着,把多个自适应滤波器(其中每个自适应滤波器都有一逆关联矩阵),应用到多个子波段信号中(框1010)。多个自适应滤波器中的每个滤波器以一种循环的顺序被选择,以致每个滤波器都被依次选择(框1020)。然后,正则化与每个被选择的自适应滤波器关联的逆相关矩阵(框1030)。正如将要在以下详细说明的,正则化是指处理逆相关矩阵使得相关矩阵的行列式不接近0。然后,使用正则化的自适应滤波器以减少在被捕获的信号865中,来自多个回放信号的回声(框1040)。
V.
操作细节和工作实例
图10中所示的多信道循环正则化回声消除方法使用循环方案和正则化来确保当回放信号是相关时,在回声消除算法中的自适应滤波器不发散。如上所描述的那样,上述方法包括执行选择子波段的每个自适应滤波器的循环方案,然后对于选择好的自适应滤波器,正则化其逆相关矩阵。循环方案和正则化进程一起构成了多信道循环正则化回声消除方法的循环正则化进程。现在讨论执行循环方案和正则化的各种方式。讨论包括循环方案和正则化进程的已测试的实现的示例工作实例。尤其,一示例工作实例呈现为使用在递归最小二乘方(RLS)算法中的循环正则化的多信道循环正则化回声消除方法。应该注意的是这个工作实例仅仅是可实现循环正则化进程方法的一种。
自适应滤波进程的数学描述
对于回放数据的一单信道,带有正则化的NLMS算法如下所示:
对于每个音频数据的帧,n=1,2,...,对于每个子波段m=0...M-1,计算,
其中ξ是麦克风信号间的误差信号,Y(n,m)是估计的回声,ξ*是误差信号的共轭,
是在转换域中的估计的回声滤波器系数,L是在估计的回声滤波器中的分支的数目,
X(n,m)=[X(n,m)X(n-1,m)…X(n-L+1,m)]T (3)
是最新的L频域回放样本的列向量,μ是步长,βNLMS是正则化系数,PEst(n,m)是在mth波段中的功率的估计值。举例说明,可以由下式找出PEst(n,m)PEst(n,m)=(1-α)PEst(n,m)+α‖X(n,m)‖2
其中‖X(n,m)‖2是复扬声器信号X(n,m)幅值的平方,α是平均参数。
当一个数被第二个数除,正则化是把一个小的值加入到分母或从分母中减去的过程,以确保分母永不为0而使的分数为无穷大。在等式(2)中,βNLMS是用来确保分母用不为0的正则化系数。由于PEst(n,m)是功率估计值,并且它始终是正的,将βNLMS添加到PEst(n,m)中。一种可供选择的正则化分数的方法是,如果分母是正的并且小于某个阈值,则把该分母设置成该阈值。
对于多信道回放信号使用NLMS算法的问题是NLMS表现不是非常良好。这是由于多信道回放信号的交叉信道相关性大大降低了自适应滤波器的收敛。对于调整自适应滤波器的参数(或权重),递归最小二乘方(RLS)是一种可以选择的算法。RLS主要优点之一是它倾向于信道之间的去除相关。由于RLS递归地计算多信道输入扬声器数据的相关矩阵之逆的估计值,它可以知道扬声器信道之间的相关性并迅速把它们收敛成正确的结果。对于多信道扬声器信号,RLS算法如下所示:
P(0,m)=δ-1I
对于每个帧,n=1,2,...和每个子波段m=0...M-1,计算
P(n,m)=λ-1P(n-1,m)-1K(m)XH(n,m)P(n-1,m) (7)
其中δ是一个小的常量,I是单位矩阵,
K(m)=[(K(m,0)…K(m,C*L-1)]T
是多信道卡尔曼增益向量,C是回放信道的数目,L是子波段中滤波器长度,
X(n,m)=[X(n,m,0)…X(n,m,C-1)X(n-1,m,0)…X(n-L+1,m,C-1)]T (8)
是多信道扬声器输入向量,P(n,m)是输入扬声器信号相关矩阵R(n,m)的逆矩阵,
λ是指数遗忘因子,
是权向量,ξ*是误差的共轭。
应该注意的是对于每个子波段,RLS自适应滤波器存储和更新其逆相关矩阵P。在本文件中,这个被称为“有逆相关矩阵”。
循环方案
通常,在多信道循环正则化回声消除方法内使用的循环方案确保每个在系统内的子波段被选择,以至对于该子波段的自适应滤波器可以被正则化。或者,可以检测自适应滤波器以确定在那个时候是否需要正则化。使用循环方案来确保每个子波段基于常规的方式被检测。
可以使用各种不同的方式来实现循环方案。举例说明,但非限制,循环方案可以被描述成在此每个帧正则化单子波段。或者,循环方案可以包括正则化每帧的多个或甚至全部子波段。在另一个实现中,循环方案可以包括每多个帧,正则化一子波段。根据实际执行循环方案,更新一指向当前被检测的子波段的计数器,使其指向正在被检测的下一子波段或波段组,如必要则复位到第一个波段。
图11是一般的流程图,示出了图10中所示的多信道循环正则化回声消除方法的循环方案的一示例性实例。如图11中所示,循环方案首先输入一当前帧(框1100)。然后,选择一子波段进行正则化(框1110)。在这个实施例中,当输入一新的当前帧时每个子波段被依次选择。然而,在一可供选择的实施例中,一单子波段只能每隔几帧被选择,或每帧选择多个子波段。
对被选择的子波段的逆相关矩阵求逆,以获得被选择的子波段的相关矩阵(框1120)。然后正则化上述相关矩阵(框1130)。在一可选择的实施例中,框1130首先检测相关矩阵以确定它是否需要被正则化,然后只有当需要的时候才进行正则化。接着,重新对上述被正则化后的相关矩阵求逆(框1140),并存储被选择子波段的正则化后的逆相关矩阵(框1150)。最后,把所有子波段的对应的所有自适应滤波器应用到多个子波段,回放信号中以减少在被捕获信号中的回声(框1160)。然后,控制返回获得下一当前帧的框1100。
循环正则化
为了更充分地理解在此所公开的循环正则化进过程,提供以下的讨论。该讨论包括在一递归最小二乘方(RLS)算法中循环正则化过程的一已测试执行的示例工作实例。应该注意的是这个工作实例只是可以执行循环正则化过程的一种方式。
一般地,循环正则化过程阻止对于每个自适应滤波器的相关矩阵变得奇异。该正则化确保上述的逆相关矩阵不会变得不稳定。在一示例的实现中,与RLS算法一起使用了循环正则化。这个实施的细节如下。
通常,RLS对于解决标准等式是一种快速的方法,
w°=R-1p
其中w°是最佳权向量,R是在等式(9)中给出的输入扬声器数据的相关矩阵,p是在输入扬声器数据和麦克风数据之间的互相关向量
如果R开始变得奇异,那么在它的逆矩阵的值变得非常大,并且不能找到权向量的有效估量。如果相关矩阵的列或行是关联的,那么该相关矩阵变得奇异。当音频数据的一信道是另外一信道的线性变换,发生这种情况。举例来说,如果一信道等于另一信道乘一个增益,那么该相关矩阵是奇异的。这个例子对应于在系统中被扫描穿过扬声器的单声道信号。对于一个纯粹的单声道信号,播放给每个扬声器的信号是同样的,并且在信道之间的增益等于1。在这两个例子中,根据遗忘因子的数值和播放单声道信号的时间长度相关矩阵迅速变得奇异。
为了防止相关矩阵变得奇异,使用循环正则化过程来对于一单独的子波段进行正则化。如以上所描述的,正则化包括确保分数的分母永远不太接近于0,从而防止分数的值变得过大。
可以通过各种不同的方式来实现相关矩阵R的正则化。由于相关矩阵的对角元素是非负的,本发明只需要对于对角相关矩阵的正的或O元素进行正则化。作为例子而非限制,可以通过以下方式对相关矩阵进行正则化:(1)把一小值加到相关矩阵的对角元素中;(2)把对角上接近于0的数值设置成小的阈值。后一种方法定义了一阈值并且检测相关矩阵的每一元素。任何时候只要存在被0除的危险(诸如当元素检测出小于阈值),就把相关矩阵的元素设置成和上述阈值相等。上述阈值是一大于0的小的数值。如果相关矩阵元素比阈值大,对于相关矩阵中的元素不需要做任何改变。
上述第一种包括把一小值加到相关矩阵的对角元素中的正则化方法可以用以下数学地归纳成如:
R(n,m)=P-1(n,m)
R(n,m)=R(n,m)+βRLSI
P(n,m)=R-1(n,m)
其中R(n,m)是相关矩阵,P-1(n,m)是逆相关矩阵的逆矩阵,βRLS是正则化因子,I是单位矩阵。βRLS可以是一小的常量(诸如使用16位输入数据的1500),或βRLS可以使用其他不同的方法来选择。通过使用循环方案正则化每个子波段,可以最小化处理两个矩阵求逆的中央处理单元(CPU)的消耗。
如上所描述,可以在每帧正则化一个单子波段或多子波段中执行循环方案,也可以每隔几帧正则化一个波段中实现循环方案。根据实际的循环方案,更新指向当前将被正则化的波段的计数器,将它指向下一个或一组将被正则化的波段,并且如果必要将它复位到第一个波段。由于R和P是对称的,可以使用Cholesky分解而不是需要两倍运算的LU分解来从P-1中找到R。然而,在一测试实现中,由于LU分解的数字特性,通过结合部分绕对角线旋转使用LU分解以代替Cholesky分解来计算逆矩阵。此外,可以通过使用双倍精度算术来计算该正则化进程以获得对于矩阵求逆运算的可被接受的性能。
作为结果,使用循环正则化的新RLS算法如下所示:
P(0,m)=δ-1I
对于每个帧n=1,2,...和每个子波段m=0...M-1,计算
P(n,m)=λ-1P(n-1,m)-λ-1K(m)XH(n,m)P(n-1,m)
If(m==RoundRobinCount)
R(n,m)=P-1(n,m)
R(n,m)=R(n,m)+βRLSI
P(n,m)=R-1(n,m)
end
end
RoundRobinCout=RoundRobinCount+1
If(RoundRobinCount==MaxRoundRobinCount)
RoundRobinCount=0
end
在本发明的这个实施例中,MaxRoundRobinCount被选择为和以下所描述的在混合的子波段进程中的子波段数目相等。为MaxRoundRobinCount选择数值取决于指数遗忘因子λ。通常,λ的数值被选择作为在RLS解的收敛精确性和跟踪速度之间的折衷。如果λ非常接近于1,RLS算法将获得非常精确的分支权重,并且只要没有东西移入近端空间内消除大部分回声。然而,如果的确某物或某人在移动,那么RLS算法不能在声音环境中迅速跟踪变化。MaxRoundRobinCount的数值应该被选择成以使扬声器信号的逆相关矩阵被足够经常地正则化来使λMaxRoundRobinCount不会达到一个太小的值。如果λMaxRoundRobinCount太小,在各循环更新之间,逆相关矩阵会变得奇异。在这种情况下,需要每帧正则化多子波段逆相关矩阵,来提高当正则化每个子波段的逆相关矩阵时的频率。
图12是一方框/流程图,示出了图8中所示的多信道循环正则化回声消除系统和方法的一示范性实现。这示例性实现使用了上述所提出的循环正则化方法。图12显示了使用每子波段一多信道滤波器,对一聚集的数据进行操作的实现方式。尤其,参照图12,来自多回放信道的子波段信号被聚集成一单向量(框1200)。使用这个聚集的向量,通过使用等式(7)和循环正则化来更新逆相关矩阵(框1210)。使用等式(4)将聚集的子波段信号和逆相关矩阵用于更新Kalman增益(框1220)。通过使用等式(6)来使用Kalman增益以更新滤波器系数(框1230)。这些滤波器系数发送给多信道滤波器(框1240),并被应用到聚集向量。该过程在每一步递归进行。在每一步,使用多信道滤波器的最新状态以减少在多信道信号中的回声。输出具有消减回声的被捕获的信号。
图13是一方框/流程图,示出了图8中所示的多信道循环正则化回声消除系统800和方法的另一示例性实现。这个示例性实现使用以上所阐述的循环正则化方法并将图12中的每个多信道自适应滤波器实现为多个单信道滤波器。尤其,参照图13,来自多回放信道的子波段信号被聚集成一单向量(框1300)。使用等式(7)和循环正则化来更新逆相关矩阵(框1310)。通过使用等式(4)来使用聚集好的子波段信号和逆相关矩阵以更新Kalman增益(框1320)。使用Kalman增益来更新滤波器系数(框1330)。这些滤波器系数包含左信道和右信道的系数。信道权重从聚集中分开(框1340),在此第一信道滤波器系数被发送到第一信道单信道滤波器(框1350),第二信道滤波器系数被发送到第二信道单信道滤波器(框1360)。该过程每一步都递归进行。在每一步,使用单信道滤波器的当前状态以减少在多信道信号中的回声。输出带有消减的回声的被捕获的信号。
在单声道回声消除和多信道回声消除之间的动态切换
多信道循环正则化回声消除方法和系统也包括在最适合单声道回放信号回声消除算法和最适合多信道回放信号回声消除算法之间的动态切换。当从多信道处理切换到单声道处理或从单声道处理切换到多信道处理时,在单声道AEC算法(诸如NLMS)和使用有效重新初始化使失真最小化的每个过程的多信道循环正则化回声消除方法之间发生动态切换。
在有单声道信号(诸如聊天)的周期和多信道信号(诸如音乐)的周期的信号中,使用动态切换算法来智能地确定信号是单声道(或几乎是单声道)还是多信道信号。如果是单声道信号,则使用带有标准最小均方(NLMS)算法的图1中所示的单声道AEC系统。如果是多信道信号,则使用图12中所示的多信道循环正则化RLS回声消除方法。切换是动态的,由于在从一算法转换到下一算法的期间NLMS和RLS算法的状态被有效重新初始化,所以很少或没有回声泄漏通过。这个可以通过共享状态变量和使用新的估计方法来估计对于RLS算法的相关矩阵来实现。这允许从NLMS(单声道)来回地在多信道循环正则化RLS之间切换而没有任何小故障。
尤其,如果发送到扬声器的回放信号被认为只是一纯粹的单声道信号,由于多个原因,使用带有单声道自适应滤波器(如图1所示)的标准最小均方(NLMS)要比使用带有循环正则化(如图8所示)的RLS算法运行得好。对于备份到多回放信道的单声道信号,带有循环正则化的RLS将最终发散,发散时间取决于遗忘因子λ。作为结果,AEC算法可以渐渐远离正确结果。然而,带有单个自适应滤波器的NLMS算法对于单声道信号能起良好的作用并且它被认为是稳定的。此外,相比较其他任何类型的多信道RLS,NLMS有非常低的CPU运行时间。
如同RLS,NLMS也可以被视为尝试解决标准等式
w°=R-1p.
对于NLMS,以使用最速下降方法的统计方式来解标准等式,然而对于RLS,使用最小平方来确定性地解决标准等式。两种方法本质上都计算R-1的估量。对于RLS,通过P来估计逆相关矩阵。对于NLMS,R-1可以被视为一对角矩阵,其值为,
作为结果,当从单声道切换到多信道AEC时,可以简单的初始化逆相关矩阵估值的状态。当从NLMS转移到RLS时,能以等式(10)中所示的方式来初始化对角元素。类似的,当从多信道循环正则化回声消除方法和系统(图8中所示)切换到使用NLMS的单声道AEC(图1中所示)时,由于状态只来自于数据历史,没有状态需要被明确地初始化。
混合的循环正则化RLS和NLMS处理
为了降低中央处理单元(CPU)运行多信道循环正则化回声消除方法所需要的资源,使用新的混合的RLS/NLMS处理算法。首先,信号被分解成较低的子波段(包含多信道回放信号的较低频率)和较高的子波段(包括信号的较高频率)。在较低的子波段,使用采用RLS的多信道循环正则化回声消除方法。在较高的子波段,使用NLMS算法。NLMS算法使用较少的CPU资源,并且使用在较高子波段,这是由于在这些频率,立体声效果被衰减了。在较低的频率中立体声效果是最显著的,花费较高的CPU处理成本以使用高级的多信道循环正则化回声消除方法。
图14示出了使用在此描述的多信道循环正则化方法的混合的较低/较高子波段处理。一般地,为了减少处理需求,使用在RLS中执行的多信道循环正则化方法来处理较低的子波段,使用NLMS来处理较高的子波段。示出混合的较低/较高子波段回声消除系统1400,它使用了多信道循环正则化回声消除方法。如图14中所示,至少使用两个回放信号x(0)和x(1)。回放信号x(1)通过右扬声器1410播放,x(0)通过左扬声器1420播放。
麦克风1430捕获来自麦克风所在空间(图中未示)内的不想要的回声。通过第一分析滤波器组1440来处理麦克风信号y,通过第二分析滤波器组1450和第三分析滤波器1460组来处理回放信号x(0)和x(1),以使信号x(0)、x(1)和y从时域分别变换为相应的频域信号X(0)、X(1)和Y。分析滤波器组1440、1450、1460可以是加窗的快速傅立叶变换(FFT)、已调制复数重叠变换(MCLT)、或一些其他的频域变换。
变换好的回放信号X(0)和X(1)被发送到一混合的处理分离模块1470。该模块1470使用一分离处理把左回放信号X(0)分解成左较低子波段信号1475和左较高子波段信号1480。类似地,右回放信号X(1)被分解成右较低子波段信号1478和右较高子波段信号1483。类似地,混合的处理分离模块1445把被捕获的信号Y分解成较高的子波段信号1448和较低的波段信号1447。多个NLMS处理器1485处理接收到的变换后的麦克风信号Y的较高子波段、左较高子波段信号1480和右较高子波段信号1483,用于处理。每个NLMS处理器1485使用等式(1)和等式(2)中所阐明的算法对信号进行处理,其中等式(3)中的单声道输入扬声器信号由等式(8)中的多信道扬声器信号所取代。使用多个使用多信道循环正则化回声消除方法的RLS处理器1490(有关该处理器的实例在图13中所示)来处理左较低回放子波段信号1475、右较低回放子波段信号1478和较低子波段捕获信号1447。处理后的较低子波段和较高子波段信号发送到一合成滤波器组1495,该滤波器组输出带有减少的回声的时域信号z。
为了说明和描述的目的,给出以上有关本发明的描述。它不是非常详尽或把本发明限制成在此公开的精确的形式。可以根据以上的教义作出许多可能的修改和变化。想要说明的是本发明的范围不被有关本发明的详尽描述所限制,而是被下文附加的权力要求所界定。