一种用于通信系统的改进的回声消除器的制作方法

文档序号:7580474阅读:256来源:国知局
专利名称:一种用于通信系统的改进的回声消除器的制作方法
背景本发明涉及通信系统,更具体而言,涉及在双向通信线路中回声消除。
在许多通信系统中,如陆地线路的与无线的电话系统,话音信号通常通过双向通信线路在两个系统使用者之间传送。在这样的一些系统中,近端使用者的谈话一般情况下是由通信线路一端上的一个近端话筒检出,然后在线路上传送到远端扬声器供再生并提供给远端使用者。相反,远端使用者的谈话由一个远端话筒检出,然后通过通信线路传送到近端的扬声器供再生并提供给近端使用者。在通信线路的任一端上,由最接近的话筒检出的扬声器的输出可能被不经心地在通信线路上送回,结果从使用者观点看,可能成为不可接受的破坏性的回授或回声。而且,如果在任何声频上的回路增益大于1,那末系统将出现技术上众所周知的“啸声”。
因此,为了避免这样的不希望的回声信号的传输,话筒声频输入应该尽可能地与扬声器输出隔离。使用传统的电话手机,其中手机的话筒位于靠近人的嘴,而手机的扬声器基本上盖住使用者的耳朵,所要求的隔离是容易实现的。然而,随着便携式电话的物理尺寸的减小和非手持扬声器-耳机电话已比较普及,制造商已经把设计改为指向从扬声器到话筒的声频通路不靠使用者的头或身体隔断的办法。结果,使在现代系统中对更精巧的回声压制技术的需要成为头等重要的事。
这种需要在非手持汽车电话的情况下特别被提出来了,其中紧凑的车辆环境使扬声器信号的多重反射返回到高增益非手持话筒上。在车辆中使用者的移动,回声信号相对方向和强度的变化,例如,当窗被打开与关闭或者使用者在驾驶时移动他的头,使汽车环境中回声压制的任务更为复杂化。另外,最近开发的数字电话通过声码器处理语音信号,这种方法引入较大的信号延时及产生非线性信号畸变。正如众所周知,这些加长的延时从使用者观点看,趋向于扩大信号回声的问题,并且当语音信号通过声码器时附加的非线性畸变使回声压制变得困难。
传统上,回声压制已经采用回声抵消电路实现了,这种方法应用自适应滤波器从话筒输出估计并除去回声信号,这样只有近端语音和噪声在通信线路上传送。这样的系统被描述在以下的专利文献中,例如美国专利No.5,475,731,标题是“采用回波估算来改变误差信号的回波消除系统和方法”“Echo-Canceling System and MethodUsing Echo Estimate to Modify Error Signal”,发布于1995年12月12日,和美国专利申请序号为No.08/578,944,标题是“自适应滤波器的测量收敛”“Ganging Convergence of AdaptiveFilters”,提交于1995年12月27日,以上每个文献都引入于此作为参考。虽然在所引用的文件中描述的系统一般来说在抵销或压制回声信号方面是有效的,然而这些系统的某些特性使其在某些方面不切实际。
例如,正如以下要详细描述的那样,这样的系统并不适合于双重谈话的场合,在其中近端使用者和远端使用者同时谈话。此外,以上提到的系统也不太适合这样的场合,其中周围的噪声,例如道路与交通噪声大量地出现在话筒的输入。因此,存在着对一种改进的回声压制系统的需要。
发明概述本发明通过提供一种回声消除器满足了以上描述的以及其它的需要,在这种回声消除器中自适应回声消除滤波器的有效传递函数的系数是被周期性地调节的,以跟踪变化着的系统条件。有效系数的周期性调节是通过一组较经常调节的修正系数及修正增益实现的,它们根据策略和系统参数测量的新组合而改变的。关键性的系统参数测量,在此称为系统状态规范,包括峰值修正系数值与基线修正系数值之比。尤其是,系统状态规范指明在其它事件中系统收敛的程度并展示出许多有益的特性,使其在动态调节修正系数与修正增益中极其有用。
常规的回声抵消设备提供自适应滤波器,其中有效滤波系数是连续的或者在样本对样本的基础上修正的,而根据本发明讲授做成的一种回声抵消设备提供一种自适应滤波器,其中有效滤波系数不经常被修正,例如在样本块对样本块的基础上进行,通过周期性地而非连续地修正有效滤波系数,通过利用系统状态规范进行相对于修正增益幅度的软的、模糊逻辑类型的决策,本发明的实施方案使系统速度与适应性最佳而不破坏稳定性。
一般而言,本发明的实施方案在只有一个远端使用者在谈话而近端信号是噪声相当低的情况下应用比较大的修正增益。然而,在近端单独谈话,双重谈话和高的近端噪声的场合,采用比较保守的办法,使得自适应滤波器不成为不稳定或者在近端语音与噪声信号中产生畸变。在任何情况下,修正增益随着自适应滤波器收敛而降低以便匹配普遍的稳态回声环境,这样使已经正确调节的自适应滤波器的错误扰动减至最少。关于在非收敛期间采用高的还是低的修正增益的决策部分地依据系统状态规范,部分地依据在各种系统信号中存在的能量的测量。
在示范性实施方案中。在不收敛,远端单独谈话的情况下通过采用众所周知的归一化最小二乘方(NLMS)方法的修改形式,应用比较高的可变修正增益。在其它不收敛的情况下,修正增益根据系统状态规范的归一化类型作比较保守的调节。通过动态地提供比较大的修正增益,同时小心不产生系统的不稳定,该示范性实施方案迅速与牢固地适应于在系统条件和环境广泛多样性的情况下成功地消除回声。
在第一实施方案中,一种回声消除设备用于估计输入信号的回声组分并从输入信号中减去所得的回声组分估值以提供回声消除的输出信号,该回声消除设备包括一种自适应滤波器,用于过滤回声引起的信号,以提供回声组分估值。该自适应滤波器的自适应滤波器传递函数的修正与回声引起的信号和回声消除的输出信号有关。该回声消除设备还包括连到自适应滤波器的存贮设备,用于存贮与自适应滤波器传递函数中的变化相对应的修正值;一个连到该存贮设备的处理器,用于计算状态指针,其中将该状态指针作为第一值和第二值的函数来计算,第一值是修正值的第一部分的函数,第二值是修正值第二部分的函数。
在第二实施方案中,一种回声消除设备包括用于过滤回声引起的信号的自适应滤波器和用于存贮修正值的存贮设备,其中根据回声消除设备的回声引起的信号与回声被消除的输出信号来调节该修正值,其中根据该修正值调节自适应滤波器的自适应滤波器传递函数。
在第三实施方案中,一种回声消除设备包括用于过滤回声引起的信号的数字滤波器以提供回声组分估值,和一个连到数字滤波器的存贮设备,用于存贮多个轮廓系数。在示范性设备中,根据轮廓系数中相应的值来调节数字滤波器的滤波器系数中每一个的影响。另外,轮廓系数被初始化是通过设置轮廓系数为第一值,设置其余的轮廓系数为通过第一值的二进制表示的移位得出的值来实现的。
在第四实施方案中,一种回声消除设备包括用于过滤回声引起的信号的自适应滤波器,以便提供回声组分估值,其中根据回声引起的信号,回声被消除的输出信号以及可变的修正增益来修正自适应滤波器的自适应滤波器传递函数。该示范性设备还包括一个处理器,用于计算输入信号中测量的能量等级的函数,在回声消除输出信号中测量的能量等级以及根据被计算的函数设置可变修正增益。
以下将参考示于附图中用作说明的例子详细解释本发明上述及其它的特征。本领域的技术人员将明白,所描述的实施方案是作为说明与理解被提供的,其中可预料有许多等效实施方案。
附图简述

图1是一种回声压制系统的高水平的方框图,可用于,例如,实现本发明的讲授内容。
图2描述一种通常的最小二乘方回声消除设备,应用自适应滤波器消除信息信号的回声组分。
图3描述一种已知的应用双自适应滤波器的回声消除器。
图4描述依据本发明讲授的内容制作的回声消除设备第一示范性实施方案。
图5描述依据本发明的讲授内容制作的回声消除设备的第二示范性实施方案。
详述一般来说,本发明讲授在通信线路中消除回声的示范性方法与设备。例如,本发明讲授的内容可应用于一个汽车驾驶员用非手持移动电话与另一个移动电话的使用者或陆地线路的使用者谈话的场合。有利的是,本发明讲授的内容既可用于声频型的回声消除器(即它们被设计来压制在话筒与位于近处的扬声器之间的反馈引起的回声)也可用于网络型回声消除器(即它们被设计来压制由使用者之间实际线路引起的回声)。本领域的技术人员将发觉在此所包括的讲授内容的某些方面可比较直接地用于特定类型的回声消除器中,而其它的讲授内容同样可应用到任何类型的消除器中。本领域的技术人员也将理解,虽然在移动电话系统中描述的实施方案是用作说明的,本发明的讲授内容很容易应用到所有类型的通信线路上。
采用车载非手持的附属设备,典型情况下近端话筒离近端使用者的嘴大约12时。由于话筒检测使用者的谈话是足够灵敏的,因而它也足够灵敏容易地拾取来自扬声器的声音和在耳中的任何噪声。如果没有声频回声压制,远端使用者听见返回到近端话筒中他或她自己的话音,因为在从扬声器传播出以后。在汽车内来回反弹。如上所述,未压制的声频回声对远端使用者来说是如此令人烦恼,以致使他或她不可能交谈。
这样,一个理想的声频回声压制器防止远端使用者听到他或她自己话音的回声,同时允许进行自然的,全双工的谈话。然而,因为汽车环境对于满足这个目的的声频回声压制器来说是特别具有挑战性的,以前的技术方法已被证明很不理想。由于许多原因,汽车环境是特别困难的。首先,双重谈话的情况经常发生。因为人们在听的同时要逐字的返回。另外,典型的与数字系统有关的信号处理延时要求回声压制是非常高的。(例如,对于单独谈话是45dB,对于双重谈话是25dB)而且在汽车内的回响典型情况下大约50ms衰减45dB。装置在话筒相对于扬声器的位置是变化的。
在非手持汽车电话中声频回声压制特别困难的其它原因包括移动电话使用者谈话的信噪比可能低至0dB;从扬声器到话筒的回声可能要比移动使用者话音进入话筒声音大;在非手持对非手持呼叫中或者在使用者之间射频接收是质量很差时,远端信号可能是非常嘈杂的;在扬声器与话筒之间的回声路径一直是变化的,因为移动使用者在来回移动,并且这样的变化是很大的,因为移动使用者的头在典型情况下是扬声器与话筒之间主要障碍物或主要反射表面;由于扬声器的畸变回声路径是非线性的;并且用来训练回声压制器的话音信号在元音中具有周期性组分,这就产生了一种临时性的回声路径的相位含糊。
尽管有这些障碍,本发明讲授制造一种声频回声消除器的方法与设备,提供较大的回声压制而没有过分地降低语音的质量。这样一种声频回声消除器的性能目标包括在所有条件下避免啸声;避免在单独谈话期间使用者语音的启始被截断,例如不再需要以后由于连续回声压制造成的截止;不论是数字还是模拟呼叫都满足IS-55A回声压制推荐值单独谈话期间45dB和双重谈话期间25dB;在双重谈话期间使移动使用者的语音畸变为最小,允许在谈话期间自然地表达逐字回送信号并避免在下行信号上噪声脉冲群期间截断移动使用者;在回声路径中较大改变以后遵守IS-55A标准,但允许在双重谈话期间移动使用者话音信号上有较大畸变以及在远端单独谈话期间汽车噪声上有较大畸变;压制有尽可能大的幅度的移动使用者语音进入话筒的回声;尽可能快地调节回声消除器使由于移动使用者移动汽车座位或者拍打遮阳板的状态下恢复回来;尽可能快地跟踪回声路径的改变;在汽车静止条件下非常快的调节回声消除器并且当噪声增加时慢慢地调节,即使在最高的噪声电平下也未完全停止适应过程;归一化适应增益以补偿在远端信号幅度中的改变;在双重谈话期间冻结适应过程,在双重谈话之间的简短时间内恢复适应过程;在周期性的远端信号期间冻结适应过程,例如DTMF音调,铃声返回,或者在远端语音中长元音声音,将引起虚假的互相关峰值,在下行语音或噪声期间在上行发送的汽车噪声的畸变最小;避免在扬声器路径中的切换衰减以及任何其它只是为了回声压制产生的畸变;当远端是静止时以及当汽车是有噪声或静止时提供高的性能;当远端是有噪声时提供良好的性能,包括非手持对非手持的情况;为实现回声压制所需要的RAM,MIPS和ROM为最小;容易在TDMA电话中实现;使信号延时最小以致网络回声的可觉察性最小并且允许在其它使用者可打断的足够时间内,一个使用者的语音暂停这样的自然交谈可以进行。
除了声频类型的回声压制外,网络类型的回声压制在移动电话领域中也是希望的,这样,例如,一个移动使用者在模拟(如AMPS)呼叫中听不到他或她自己的通过扬声器返回的语音回声,换句话说,与数字系统(如DAMPS与GSM)不同,许多模拟系统并不消除由4到2线混合线路的阻抗不匹配引起的回声,典型情况下这种混合线路位于一种公共交换电话网(PSTN)的中央办公室。另外,非手持附属系统的规则可以引入附加的4-10msec延时,数字电话可以引入附加的4msec的回路延时。因此,网络回声采用车用非手持附属设备时特别明显。
在移动电话领域中,网络型回声压制多少要比声频型回声压制少挑战性。例如,网络回声路径不包括混响,并且当使用者在一个蜂窝内驱车时仍保持不变。而且,回声路径典型情况不小于16msec,由于较短的回路延时,只需要大约10-20dB的压制。因此,典型情况下,可运行一种严格线性的消除方案。而且,网络回声在典型情况下不可能大于-6dB,回声被压制的陆路线路信号典型情况下具有平静的背景(虽然有噪背景同样也必须被处理)。然而,网络型回声消除在移动电话领域中确实有问题。例如,因为网络回声对每次呼叫是不同的,自适应滤波器系数不应该再次使用。并且适应过程应该极其快速。另外,网络回声压制器在蜂窝转交给模拟呼叫以后应该迅速重新适应,在转交到数字蜂窝以后应该非使能。有利的是,本发明的讲授可用来构成这样一种网络回声消除器。
图1是一种回声压制系统100的高电平方框图,可用来,例如,实现本发明的讲授内容。正如所示,回声压制系统100包括一个话筒110,扬声器120,回声消除器130,残余回声压制器160,发送接收机170,天线180。回声消除器130包括相加设备140和自适应滤波器150。在图1中,话筒110的输出连接到相加设备140的相加输入。相加设备140的输出连至自适应滤波器150并作为回声消除器130的第一输出。回声消除器130的第一与第二输出分别连至残余回声压制器160的第一和第二输入。残余回声压制器的输出连至发送接收机170的一个输入,发送接收机170是双向地连到天线180。发送接收机170的输出被连至残余回声压制器160的第三输入,回声消除器130的输入,和扬声器120的输入。自适应滤波器150的输出连至相加设备140的减法输入。
在运行中,在话筒110的输出上产生的近端信号s(n)通过回声消除器130和残余回声压制器160处理,产生回声消除的近端信号y(n),通过发送接收机170和天线180传送到远端使用者。在发送接收机170上通过天线180接收到的远端信号x(n)输入到扬声器120用于再现给系统的近端使用者,虽然图1的配置是适应于在移动电话中使用(即,信号发送与接收到和来自远端使用者是通过发送接收机170和天线180),将会认识到图1的实施方案的回声消除方面的内容同样可应用于任何双向通信线路。另外,如上所述,虽然实施方案示出的只是一种声频型回声消除器,实施方案的回声消除方面的内容也可用到网络型回声消除器。
而且,将会认识到,图1的系统在性质上可是模拟也可是数字的,取决于系统用于特定的应用。因此,图1的各种信号(例如,s(n),y(n),和x(n))实际上可是时间的连续函数(即,s(t),y(t)和x(t))也可是离散时间样本序列(即,s(nT),y(nT)和x(nT)),其中T代表采样周期)。然而,为了清楚起见,所有的信号在本讨论中假定是数字的,因而信号被简明地写成只是样本数的函数(即,s(n),y(n)和x(n))。虽然没有明显地示出,模拟到数字和数字到模拟的转换器假定适当地位于所描述的电路内。(例如,在话筒110的输出和在图1中扬声器120的输入)。本领域的技术人员将会认识到,数字信号假定的结果并不损失通用性,因为对于在此描述的数字实施方案的模拟等效品可很容易被导出。
如图1中所示,近端信号s(n)可以包括n个组分,包括近端噪声组分w(n),近端话音组分v(n),和近端回声组分u(n)。噪声组分w(n)可以,例如,由道路和交通的声音引起的,其中回声压制系统100实施在汽车移动电话中,回声组分u(n)是作为来自扬声器120的声频输出引起的,被反射回话筒110。正如众所周知,回声组分u(n)的幅度和形状将取决于有效的系统传递函数H(z),或者存在于扬声器120和话筒110之间的声频回声路径。此外,系统传递函数H(z)将取决于近端环境以及扬声器120和话筒110的相对物理位置。因此,传递函数H(z)通常是不知道的,并将随近端环境中的变化而改变(例如,当一个近端使用者改变他或她的汽车座位)。
通常,回声消除器130采用自适应滤波器150处理远端信号x(n),产生近端信号s(n)的回声组分u(n)的估值
自适应滤波器150的传递函数被设置为近似系统传递函数H(z),估值
利用相加设备140从近端信号s(n)中减去,产生回声消除器输出信号e(n)。假定只有远端使用者在谈话,近端是无噪的(即,v(n)和w(n)为零),那末输出信号e(n)将代表近端回声信号u(n)和回声信号估值
之间的差值。因此,回声消除器输出信号e(n)通常被称为“误差信号”。因为系统传递函数H(z)随时间变化,误差信号e(n)被用来调整自适应滤波器150的传递函数,如以下将描述的那样,这样一来它将跟踪真实的系统传递函数H(z)。
当系统100第一次安装或上电,或者当系统传递函数H(z)突然地改变时,将存在一个有限的时间周期,在此期间自适应滤波器150的传递函数与真实的传递函数H(z)的近似程度是相当差的。然而,当滤波器150对误差信号e(n)作出响应进行调整时,自适应滤波器150的传递函数将向真实传递函数H(z)收敛。因此,说到回声消除器130是收敛,或未收敛,分别取决于自适应滤波器150的传递函数是与真实系统传递函数H(z)良好近似还是近似很差。
当回声消除器130被收敛时,误差信号e(n)代表近端信号s(n)的回声已消除类型,这正如所希望的那样。然而,当回声消除器130未被收敛时,近端信号s(n)将可能包含不可接受的大回声组分。另外,持续的使用者移动以及在近端信号s(n)中的非线性,例如,由扬声器120或其它非线性系统组分(未示出)所产生,可以妨碍回声消除器非常充分的收敛以便更好地压制超过12-20dB。因此,某些形式的残余回声压制对于获得例如,45db的改进水平来说可能是必需的。
如图1所示,一种残余回声压制器160可放在回声消除设备130的输出以提供这样的额外回声衰减。例如在美国专利No.5,475,731中描述了一种通常的残余回声压制器,引入于此作为参考。此外,一种改进的残余回声压制器被描述在美国专利申请序号No.08/775,797中,本申请是其部分的继续。
一般来说,残余压制器160衰减误差信号e(n)的回声组分是利用具有可调限幅阈值的中心限幅器通过处理误差信号e(n)实现的,残余回声压制水平的变化与限幅阈值的幅度成比例,因为在任何近端设备上引入的畸变或在误差信号e(n)中可能出现的噪声组分的水平是变化的。如图1中示意地示出(即,用虚线画出),在示范性实施方案中残余回声压制器160的限幅阈值是依据控制信号c(n)进行调节的,该信号是基于由回声消除器130达到的相对消除水平的量度。换句话说,当回声消除器130收敛时由回声消除器130提供的回声消除有效水平增加,残余回声压制器的限幅阀值被降低,反过来也一样,采用这种方法,残余回声压制器160只被激活到必要的程度,并且由残余压制器160引入的任何畸变被降至最小。
因为本申请是针对回声消除器130的示范性实施方案,残余回声压制器160操作的详细讨论被略去。对于本申请的目的来看,如果由回声消除器130达到的普遍的消除水平的适当量度可被算出,这样的一种残余回声压制器可随同本发明的实施方案有效地被使用就够了。有利的是,本发明讲授用于计算与利用这样一种量度的示范性方法。
虽然以下的详细讨论部分地针对提供一种对残余回声压制器的控制信号c(n),如在美国专利中请序号No.08/775,797中描述的那样,本发明是部分地延续,将会认识到,这样一种控制信号c(n)可适应于与任何形式的残余回声压制器工作。也将认识到残余回声压制器160的使用是可选择的,以下描述的回声消除器130的示范性实施方案单独使用是极其有用的。然而,在示范性实施方案详细描述以前,要描述两种已知的回声消除方法,以便阐述本发明的特点与优点。
图2是一种通常回声消除系统200的方框图,其中最小二乘方(LMS)算法被用于调节一种自适应回声消除滤波器的系数。正如所示,通常的系统200包括一个话筒110,扬声器120,和回声消除器230。回声消除器230包括第一,第二,和第三相加设备205,215,255,第一,第二,和第三乘法器245,235,225,系数寄存器210,和样本排队器220,为方便起见,为理解图2系统200的操作不必要的部件(例如,发送接收机,天线,可选的残余回声压制器,等等)未示出。在图2中,细线被用于表示串联,或标量,连接,粗线被用于表示并行,或向量,连接。
正如所示,话筒110的输出s(n)被连到第一相加设备205的相加输入,第一相加设备205的输出被连到第一乘法器245的第一输入,并作为回声消除器230的输出e(n)。标量调节增益因数μFIXED被连到第一乘法器245的第二输入,第一乘法器245的输出被连到第二乘法器235的第一输入。第二乘法器235的并行输出被连到第三相加设备255的第一输入,第三相加设备255的并行输出被输入到系数寄存器210。系数寄存器210的并行输出被连至第三相加设备255的第二输入和第三乘法器225的第一输入。第三乘法器225的并行输出被连接到第二相加设备215的输入,第二相加设备215的输出
被连至第一相加设备205的减法输入。远端信号x(n)被连到扬声器120的输入以及样本排队器220。样本排队器220的并行输出被连到第二乘法器235的第二输入和第三乘法器225的第二输入。
在运行中,远端信号最近的m个样本x(n)…x(n-m+1)存贮在样本排队器220中,一组普遍性的LMS滤波器系数ho(n)…hm-1(n)存贮在系数寄存器210中。误差信号e(n)的回声组分u(n)的估值
作为系数寄存器210以及存贮在样本排队器220中的远端信号的内容的卷积被计算如下u^(n)=Σi=0n-1hix(n-i)----(1)]]>此外,LMS滤波器系数ho(n)…hm-1(n)被利用固定的修正增益μFIXED,误差信号e(n),和样本排队器220的内容被修正如下hi(n+1)=hi(n)+μFIXEDe(n)x(n-i),i=0...m-1,(2)其中误差信号e(n)利用第一相加设备205算出,如e(n)=s(n)-
因此,当估值
改进时,LMS滤器系数ho(n)…hm-1(n)收敛于真实系统传递函数H(z)的系数并且误差信号e(n)减小。系数ho(n)…hm-1(n)的收敛速度将取决于固定修正增益μFIXED的幅度。换句话说,固定修正增益μFIXED越大,滤波器收敛越快。
然而,采用固定修正增益μFIXED,为在双重谈话和近端噪声状态中的稳固性,系统设计者对快速收敛要有所权衡,其中稳固性包括近端使用者话音的低畸变和回声评估滤波器系数的扰动最小。固定修正增益μFIXED不可能设置得太高而毫不担心自适应滤波器将太快地跟踪误差信号e(n)的非回声组分。有利的是,本发明讲授,如果回声消除滤波器的修正增益对于在普遍的系统环境中的变化以及滤波器收敛程度的变化能自适应,则不需要折衷考虑。一般而言,本发明的示范性实施方案在非收敛的远端单独谈话情况下采用高修正增益,否则采用低修正增益。为了做到这样,示范性实施方案测量一个回声消除系统的普遍状态,其中,指明自适应滤波器收敛的程度。然而,在描述测量系统状态的示范性方法以前,考虑一种已知的测量系统收敛的方法是有益的。
图3是一种回声消除系统300的方框图,采用双自适应滤波器以提供一种测量系统收敛的机制。这样的一种系统描述在,例如,美国专利申请序列号No.08/578,944之中,引入在上以供参考。在引用的申请中,系统收敛的近似程度被用来控制残余回声压制器的限幅阈值以及控制系统的自适应速率。如图3中所示,双重滤波器回声消除系统300包括一个话筒110,扬声器120,和回声消除器330。回声消除器330包括第一和第二相加设备305,315,和第一与第二自适应滤波器310,320。而且,为了便利,对于理解图3的系统不必要的部件未示出,粗线用来指明并行连接。
在图3中,话筒110的输出s(n)被连到第一相加设备305的相加输入,第一相加设备305的输出被连至第二相加设备315的相加输入。第二相加设备315的输出被连至第二自适应滤波器320并作为回声消除器330的输出e(n)。第二自适应滤波器320的第一输出
被连至第二相加设备315的减法输入,第二自适应滤波器320的第二(并行)输出被连至第一自适应滤波器310的第一输入。第一自适应滤波器310的输出
被连至第一相加设备305的减法输入。远端信号x(n)被连至第二自适应滤波器320的第二输入,第一自适应滤波器310的第二输入,和扬声器120的输入。
在运行中,LMS系数修正值在第二自适应滤波器320的一个修正存贮器(未示出)中的一个L个样本的块上被积累。修正值存贮器的内容被用作第二滤波器320的滤波器系数,它们象以上关于存贮在图1的系数寄存器210中的系数所描述的那样被修正。当第二滤波器320的系数被积累时(即在L个样本的块上),第一滤波器310的系数仍然不变。如图3中所示,第二滤波器直接贡献于回声评估,使得修正立即生效。换句话说,第一滤波器310的输出
以及第二滤波器320的输出
都被从近端信号s(n)中减去以产生误差信号e(n)。因此,从概念上讲,第一和第二滤波器310,320如同串联起作用的一个单独的,组合的自适应滤波器,产生一个组合的回声估值
。然而,因为第二滤波器320的修正系数提供一种L样本的块上系统活动性的指示,它们可以如以下所描述的那样,被用于提供一种系统收敛程度的指示。
在每个L样本的块的结束,第二滤波器320的修正系数被加上第一滤波器310的滤波器系数,第二滤波器320的修正系数被复位为零,算出系统收敛的量度。在引用的专利申请中,收敛量度是作为在块的结束处修正系数中存在的能量与在此块上远端信号x(n)中测得的能量之比算出的。比值接近1表明相当低的收敛程度和比值接近零表明相当高的收敛程度。换句话说,在修正系数中高的能量等级表明第二滤波器(因而此组合滤波器)在L样本的块上活跃地进行修正,或变化,因此,此系统至少是远未收敛。相反,在修正系数中低的能量等级表明此滤波器在L样本的块上并未活跃地变化,因而它至少是相当收敛的。在系数中的平均能量被在远端信号中测得的能量除,以便将在远端信号幅度中的变化的收敛测量归一化,所得到的收敛量度被用于控制残余回声压制器和控制系统自适应的速率。
虽然上述的收敛测量,或者规范,理论上提供某些系统收敛的指示,近来的经验性估计已经表明,因为双重谈话或高的近端噪声将产生高的修正系数能量而不管系统收敛的程度如何,这样的一种收敛规范只在平静的,单独谈话的情况下有用。有利的是,本发明讲授系数修正向量的峰值和形状是更有用的系统状态指针。
更具体而言,本发明讲授,一种系统状态更有用的指针可以根据峰值修正系数幅度的量度与基线修正系数幅度的量度之比计算出。固为一个收敛的系统的修正系数在一个样本块上变化相当小,这样一种收敛的系统将具有有限的峰值对基线幅度之比。相反,很不收敛的系统将具有相当高的峰值对基线幅度之比,因为峰值将发生在分支(即,系数)上的修正向量中,其中曾存在老的优势回声,现存在新的,普遍的优势回声,经验研究已经表明,对于一个长度为L=1024样本的修正块,一种示范性的峰值对基线幅度之比对于收敛系统将高达6,对于一个未收敛系统将高达32。因此,其中,峰值对基线的比是系统收敛的质量指针。
而且,峰值对基线的比显示所希望的特性曲线,使其在收敛与不收敛之外,作为整个系统状态的一种指针是极其有用的。例如,研究表明,近端噪声适度地降低峰值对基线之比,近端语音大大地降低此比例。另外,周期性的信号,如DTMF音调,或者在远端语音中的元音声音,大大地降低峰值对基线的比。如下所述,这些峰值对基线之比的特点可被用于在为自适应滤波器的修正增益作调节及动态控制残余压制器方面作出智能化决策。计算有效的峰值对基线之比的示范性方法,以及以此为基础的一种更精细的状态规范也将详细描述于下。
本发明的示范性实施方案的一种重要的附加的优点涉及一个回声消除滤波器的有效系数被修正的方式。回想一下关于图3所描述的系统在过程中使用修正向量(即,第二滤波器320的修正系数),以便在计算回声估值(因而同样为一个块的剩余部分的修正系数)中使用普遍性系数(即第一滤波器310的静态系数)。在图3的系统中也是这么做的,例如使系统收敛速率最大。
然而,本发明讲授,在策略上改变滤波器修正增益时利用峰值对基线之比,如果修正系数并不是在每样本上被应用,而是在一个样本块的结束时采用,则就可以构成一种较快修正并比较稳固的回声消除器。如在以下将要详细描述的那样。如果一个依据本发明讲授的内容构成的系统突然迅速从收敛变成不收敛,通过在一个块的末端上应用具有相当高修正增益的修正系数可以实现快速重新收敛。另外,因为修正系数被应用在一个块的末端上,通常,可以利用较高的修正增益而不产生系统不稳定。换句话说,因为在一个块上的远端信号中的能量已经在块的末端就知道了,修正增益可以利用远端信号能量归一化而不担心远端信号电平将突然增加并且因为普遍性的修正增益设置太高(即以以前的较小远端信号电平为基础)而使系统不稳定。
因此,本发明讲授至少两种对现有技术系统的重大改进。第一,本发明提供一种改进的系统状态规范,不只是收敛,可以作出模糊逻辑决策控制残余回声压制器以及调节自适应滤波器的修正增益。第二,本发明讲授,在一块接一块的基础上修正滤波器系数,而不是一个样本接一个样本的基础上进行,这在系统速度与稳定性方面有重大的优越性。这些与其它的本发明的优点通过以下参考图4与图5的实施方案的详细描述将很清楚。
图4是一种革新的示范性回声消除系统400的方框图,指望用于说明本发明的某些基本的讲授内容。正如所示,回声消除系统400包括一个话筒110,扬声器120,和回声消除器430。回声消除器430包括第一至第四相加设备405,475,425,435,第一,第二和第三乘法器465,415,4lO,滤波器系数寄存器455,修正系数寄存器450,样本排队器445,比例设备420,标度一偏置一限制设备440,峰值对基线设备495,和峰值检测器460。如上所述,对于理解图4的实施方案不必要的部件未示出,并且粗线被用于指明并行连接。
在图4中,话筒110的输出s(n)被连至第一相加设备405的相加输入。第一相加设备405的输出被连至第一乘法器465的第一输入并作为回声消除器430的第一输出e(n)。第一乘法器465的并行输出被连至第二相加设备475的第一输入,第二相加设备475的输出被输入到修正系数寄存器450。
修正系数寄存器450的并行输出被连到第二相加设备475的第二输入,峰值对基线设备495,和第三乘法器410的第一输入。峰值对基线设备495的输出gSTATUS被连到标度一偏置与限制设备440,标度一偏置与限制设备440的输出gSTATUS被连到峰值检测器460的输入和比例设备420的输入.峰值检测器460的输出作为回声消除器430的第二输出c(n),比例设备420的输出μVAT被连到第三乘法器410的第二输入。
第三乘法器410的并行输出被连到第四相加设备435的第一输入,第四相加设备435的并行输出被输入到主要系数寄存器455。主要系数寄存器455的并行输出被连接到第四相加设备435的第二输入和第二乘法器415的第一输入。第二乘法器415的并行输出被连到第三相加设备425的输入,第三相加设备425的输出
被连到第一相加设备405的减法输入。远端信号x(n)被连到扬声器120的输入和样本排队器445的串联输入。
在工作中,远端信号最接近的m个样本x(n)…x(n-m+1)被存贮在样本排队器445中,一组普遍性的LMS滤波器系数ho(n)…hm-1(n)被存贮在系数寄存器455中。误差信号e(n)的回声组分u(n)的估值
作为样本的内容和系数寄存器445,455的卷积被算出如下u^(n)=Σi=0n-1hix(n-i)----(3)]]>
LMS滤波器系数ho(n)…hm-1(n)在每个L个样本的块上保持不变。然而,一旦在每块的结束,存贮在修正寄存器450中的一组修正系数ho’(n)…hm-1’(n)被可变的修正增益μVAR相乘并加到系数寄存器455的内容中。修正系数ho’(n)…hm-1’(n)在每块结束复位为零,它们利用误差信号e(n)和样本排队器220的内容调整如下hi′(n+1)=hi′(n)+e(n)x(n-i),i=0...m-1,----(4)]]>其中误差信号e(n)利用第一相加设备405被算得为e(n)=
。因此,LMS滤波器ho(n)…hm-1(n)当估值
改进与误差信号减小时,以块的方式向真实系统传递函数H(z)收敛,系数ho(n)…hm-1(n)收敛的速度将部分地取决于可变修正增益μVAR的幅度。
可变修正增益μVAR及增益信号c(n)在每块结束时根据修正寄存器450的内容利用峰值对基线设备495,标度-偏置和限制设备440,和比例设备420进行调节。一般而言,标度-偏置和限制设备440的输出gSTATUS是上述的峰值对基线幅度之比的精细版并且代表系统状态的规范,其中指明滤波器收敛的相对水平并提供关于可变修正增益μVAR作出智能决策的机制以及残余压制器控制器信号c(n)。用于计算峰值对基线之比的测量峰值对基线修正值的示范性方法参考图5详细描述于下。为讨论图4的实施方案的目的,实现这点就足够了,即在每个L个样本的块结束,峰值对基线设备440提供峰值,或最大修正系数值对基线修正系数值之比gRATIO,然后标度-偏置与限制设备495改进峰值对基线之比gRATIO以提供归一化系统状态规范gSTATUS。
特别是,标度-偏置与限制设备440输出一个在0到1范围内的状态规范gSTATUS,其中1表明在远端单独谈话期间大体上未收敛的系统,其中0表明或者滤波器是高度收敛,远端使用者未在谈话,或者存在相当高程度的近端话音或噪声。为了产生gSTATUS,标度偏置与限制设备495将峰值对基线值乘以适当的比例因数,将偏置加到所得的积上,对所得的和限幅以产生输出,当峰值对基线之比落在预定最小阈值以下时输出为0,当峰值对基线之比超过预定的最大阈值时输出为1。
最小与最大阈值由经验确定。例如,如上所述,数据示出,对于L=1024的一个块的规模来说,峰值对基线之比对于收敛系统不超过约6,不管近端噪声与近端话音。另外,对于相同的块规模,数据示出,大体上未收敛系统展示出峰值对基线之比高达32,一般来说,未收敛系统产生峰值对基线之比超过理论最大峰值对基线的值的一半。正如以下将较详细描述的那样,理论最大峰值对基线值等于块大小的平方根。因而,对于L=1024的一个块的规模,最小与最大峰值对基线阈值可以设置为,例如,分别是6与16。
因为通常在带有低近端噪声的远端单独谈话期间状态规范gSTATUS是一个系统收敛的良好指针,在这样时期,可被用于直接调节可变修正增益μVAR,并提供用于残余回声压制器的控制信号c(n)。这样一种状态规范gSTATUS将参考图4的实施方案描述如下。然而,实际地讲,我们不可能假定低的近端噪声,肯定不可能假定近端使用者并不在谈话。因此,图4的实施方案或多或少是一种理想化的配置,对于实际实现近端语音与噪声并不是最佳的考虑。况且,本发明的某些优点,已得到最好的解释,至少是参考图4的革新过的实施方案开始解释。一种更加详细的实施方案参考图5在以下描述,这种方案适合于更有效地处理近端语音,远端语音以及近端噪声的各种等级及组合。一般来说,图5的实施方案使用状态规范gSTATUS以及其它的系统参数测量以便提供已改进的可变修正增益μVAR和一种已改进的用于残余回声压制器的控制信号c(n)。
然而,在图4的实施方案中,比例设备420被用于仅仅依据状态规范gSTATUS产生可变的修正增益μVAR。特别是,当状态规范gSTATUS是1时,采用预定的最大修正增益,当状态规范gSTATUS为0时,采用预定的最小修正增益。预定的最大修正增益采用经验方法设置,在保持系统稳定性的情况提供最快的系统收敛。预定的最小修正增益也采用经验方法设置,使得由于近端语音和噪声引起的滤波器系统扰动为最小。这样的扰动趋于降低由系统提供的有效回声压制和使近端话音信号畸变。
当状态规范gSTATUS在0与1之间时,比例设备420在预定的最小与最大修正增益之间以对数方式调节可变修正增益μVAR。如果最小与最大增益是以2的幂相关,则对数规律变化可容易通过将状态规范gSTATUS定标为修正增益μVAR的二进制表示式左移的位数。换种说法,1减去状态规范gSTATUS可被定标,产生右移这样一种二进制表示式的位数。
如果基线修正系数值(即,由于计算峰值对基线之比gRATIO的值)不包括系统峰值,峰值对基线之比gRATIO,以及状态规范gSTATUS和修正增益μVAR可使收敛对不收敛更灵敏。换句话说,如果基线系数值计算时峰值系数值不考虑,那末峰值(即,指明在一个块上系统适应性程度的值)和基线值(即,指明输入信号能量水平的值,不管适应如何)之比的真正的差异将更精确地在峰值与基线之比中反应出来。
对于一种声音回声消除器,通过包括许多自适应滤波器抽头(即系数寄存器455中的系数数目)可以除去峰值,抽头足够大,至少某些较长延时抽头真正被保证与回声信号不相关(因此,真正被保证不包括峰值)。对于一种网络回声消除器,通过将修正向量(即,修正系数寄存器450)分为子向量,将峰值除去,并且利用子向量的最小值平均以计算峰值对基线的值。因为一个回声路径峰值可以覆盖两个子向量(即,几个相邻系数相对于基线系数值可以很大),则修正向量被分为至少三个子向量以保证至少一个子向量不包括峰值,精细的分割通过消除由基线计算引起的次生回声路径峰值将进一步增强峰值与基线值之间的区别。可是,分割未做得太精细,因为所计算的基线由于样本较少而变得很不精确。而且,分割数的设置等于2的幂数简化基线的计算,使得通过二进制移位可实现乘法与除法。通过折衷办法,典型情况下修正向量被分割为四个子向量。
注意,块尺寸L的选择也是一件要折衷的事。特别是,特定的块尺寸的选择代表在峰值对基线之比的精确度(和修正系数分辨率)与系统反应速度之间的交换。为了看到这点,注意,修正峰值随块尺寸按比例增加(即,系数值被积累在一个块上),并且修正基线值随块尺寸的平方根增加(即,系数平方根被积累在一个块上,如下所述)。因此,峰值对基线幅度之比随着块尺寸增加变得对不收敛更灵敏。另一方面,块尺寸越小,系统可修正自适应滤波器及响应系统回声路径中的变化越快。研究已经表明,块尺寸在1024的量级上对于8000Hz系统样本速率是适应的。这样一种块尺寸导致每块128ms的颗粒性。实际上,块尺寸可被设置为一个标准参考帧最接近的方便的倍数(例如,块尺寸960对于标准TDMA帧处理是有用的)。
因为上述的块修正方案在对附加到滤波器的系数逐步减小以前将一个样本块的修正系数集合在一起,滤波器系数的有效分辨率与现有系统相比是被增强了。与系数分辨率不够有关的问题详细描述在,例如,美国专利申请序号No.08/578,941中,标题为“ResolutionEnhancement & Fixed-Point Digital Filters”,提交日期为1995,12,27,引入于此作为参考,虽然典型情况下16位滤波器系数对于达到60dB回声压制是足够的,当修正增益低时,为了积累小而重要的修正需要多于16位。有利的是,以上描述的系统的集成系数的分辨率相对于具有平坦的16位系数的系统增加log2L位。例如,块尺寸是L=1024时,分辨率被增加10位。
如上所述,在图4的示范性实施方案中,对于残余回声压制器的一个控制信号c(n)只是根据状态规范gSTATUS产生的。研究表明,虽然状态规范gSTATUS是开始不收敛的一个精确指针,当存在相当高的近端噪声时,它趋向于零要比系统实际收敛来得快。因此,在图4的实施方案中,状态规范gSTATUS被通过峰值检测器460滤波。峰值检测器460被设计为提供一种指数衰减率,大体上跟踪系统的误差衰减率。因此,峰值检测器的输出c(n)精确地指明在远端单独谈话期间系统收敛(和不收敛)。结果,控制信号c(n)在远端单独谈话期间可用于控制一个残余回声压制器的限幅阈值,正如以上描述的那样。
总而言之,图4的示范性实施方案展示本发明的某些核心的有益的原理。特别是,它展示利用一个系统状态规范,根据峰值对基线之比改变一个自适应滤波器修正增益以及控制一个残余回声压制器的好处。它也展示一块一块地修正有效自适应滤波器系数的优点。一旦一个系统设计师意识到这些关键性原理的重要性,他或她可以利用这些原理以各种各样的方法构成稳固的且实用的回声消除系统。这样一种系统的示范性实施方案将被详细地参考图5进行描述。然而,本领域的技术人员理解,本发明的讲授决不限于所描述的实施方案,所描述的实施方案各个方面实际上数量无限的组合是可能的和可以想象的。
图5描述依据本发明的讲授构成的一种回声消除系统500的替代的示范性实施方案。正如所示,回声消除系统500包括一个话筒110,扬声器120,和回声消除器530。回声消除器530包括第一至第四相加设备515,570,520,540,第一至第五乘法器585,560,525,535,565,第一至第五平方和设备505,510,595,575,580,第一与第二平方根设备503,508,相除设备518,比较器590,滤波器系数寄存器555,修正系数寄存器550,样本排队器545,最大平方设备598,最小-最大设备513,和增益控制设备523。对于理解图5的实施方案不必要的附加的部件未示出。在图中,粗线被方便地指明并行连接,阴影块用来指明每块一次而不是每样本一次进行的操作。
在图5中,话筒110的输出s(n)被连到第一相加设备515的相加输入和第一平方和设备505的输入。第一相加设备515的输出被连到第二平方和设备510的输入和第二乘法器560的第一输入,一种清除设备输入被示出,连到第一平方和设备505,本领域的技术人员将理解,类似的输入被连到第二平方和设备510,虽然为了方便并未明显地示出。第一相加设备515的输出也作为回声消除器530的第一输出e(n)。第二平方和设备510的输出gOUT被连到第一乘法器585的第一输入,比例常数K被连到第一乘法器585的第二输入。第一平方和设备505的输出gin被连到比较器590的第一输入,比较器590的输出gCANCEL被连到增益控制设备523的第一输入。
第二乘法器560的并行输出被连到第二相加设备570的第一输入,第二相加设备570的并行输出被输入到修正系数寄存器550。修正系数寄存器550的并行输出被连到第二相加设备570的第二输入,第三平方和设备595的输入,最大平方设备598的输入,和第五乘法器565的第一输入。第三平方和设备595的输出被连到第一平方根设备503的输入,最大平方设备598的输出被连到第二平方根设备508的输入。第一平方根设备503的输出gBASE被连到增益控制设备523的第二输入,第二平方根设备508的输出gpeak被连到增益控制设备523的第三输入以及相除设备518的第一输入。相除设备518的输出gSUPP被连到增益控制设备523的第五输入,增益控制设备523的第二输出作为回声消除器530的第二输出c(n)。
远端信号x(n)被连到扬声器120的输入和样本排队器545的串联输入,样本排队器545的并行输出被连到第三乘法器525的第一输入和第二乘法器560的第二输入。采样排队器545的并行输出的一个抽头被连到第四平方和设备575的输入,和样本排队器545的并行输出的第二抽头被连到第五平方和设备580的输入。第四和第五平方和设备575,580的输出gREFI,gREFJ被分别连到最小-最大块513的第一和第二输入。一种清除设备输入被示出,连到第五平方和设备580,本领域的技术人员将理解,类似输入被连到第四平方和设备575和最大平方设备598,虽然为了方便它们未明显示出。最小-最大块513的第一输出gREFHI被连到增益控制设备523的第四输入以及第二输出gREFLO被连到相除设备518的第二输入。
增益控制设备523的第一输出μVAR被连到第五乘法器565的第二输入,第五乘法器565的并行输出被连到第四相加设备540的第一输入。第四相加设备540的并行输出被连到滤波器系数寄存器555,滤波器系数寄存器555的并行输出被连到第四相加设备540的第二输入以及第四乘法器535的第一输入,外形向量被连到第四乘法器535的第二输入,第四乘法器535的并行输出被连到第三乘法器525的第二输入。第三乘法器525的并行输出被连到第三相加设备520的输入,第三相加设备520的输出
被连到第一相加设备515的减法输入。
在工作中,图5实施方案的核心自适应滤波方面非常类似于图4的实施方案。为了简明起见,系数寄存器555的内容与样本排队器545的内容卷积,产生近端信号s(n)回声组分的估值
。修正系数寄存器555使用修正寄存器550的内容和可变增益μVAR在块的基础上作修正,修正寄存器550。利用误差信号e(n)和样本排队器545的内容作调节,使系数寄存器555的内容朝真正的系统传递函数H(z)收敛。注意,在图5的实施方案中,滤波器系数在与样本排队器545的内容卷积以前,利用第四乘法器535与外形向量相乘。
因此,外形向量代表一个附加的,整个系数的修正增益因数。外形向量典型情况下,在系统工作以前,被设置为大体上与真正的系统传递函数H(z)的系数预期范围相匹配(即,使幅度从较短延时的系数至较长延时的系数逐渐减小)。在较长延时的滤波器分支(系数)上应用较低增益降低由修正引起的噪声并允许应用较高修正增益而不产生系统不稳定。理论上讲,外形向量可动态地设置为等于普遍性的有效滤波器系数,然而这么做在计算上强度太大。正如以下将详细描述的那样,本发明讲授一种效率高的技术,用于采用数字信号处理器中的简单指令快速计算外形向量,而此数字信号处理器可被用来实施整个的回声消除器注意,外形向量在典型情况下并不适合于网络回声消除器。这是由于这样的事实,在典型情况下人们不可能事先预测网络回声脉冲的位置(即,在自适应滤波器系数内)。
在图4与图5实施方案之间的主要区别涉及到在系统运行期间被监测的系统参数的数目与类型以及这些参数被用来调节可变修正增益μVAR及残余压制控制信号c(n)的方法,如图5中所示,多重系统测量被用来产生五个增益控制信号gCANCEL,gBASE,gPEAK,gREFHI,gSUPP,它们依次被增益控制设备523用来调节可变修正增益μVAR以及残余压制器控制信号c(n)。以下将详细描述五个增益控制信号gCANCEL,gBASE,gPEAK,gREFHI,gSUPP中每一个的产生与使用。
第一增益控制信号gCANCEL被产生是通过使用第一与第二平方和设备505,510,第一乘法器585,和比较器590实现的。第一平方和设备505将近端信号s(n)的样本在一个块的过程中平方与积累以产生在块期间近端信号中能量水平的一个指针gIN。同样地,第二平方和设备510将误差信号e(n)的样本在一个块的过程中平方与积累以产生在块期间误差信号中能量水平的一个指针gOUT。第二平方和设备510的输出gOUT然后被乘以常数K,所得的产物利用比较器590与第一平方和设备505的输出gIN作比较。这样,比较器的二进制输出指明是否输入能量gIN至少要比输出能量gOUT大K倍,并提供第一增益控制信号gCANCEL。
从概念上讲,第一增益控制信号gCANCEL提供系统达到的回声消除水平的一个量度以及近端信号中噪声水平的指针。换句话说,输入能量远大于输出能量表明自适应滤波器正在除去近端信号(即,回声)的主要部分,并且近端信号相对来说,是无噪的(即,在近端信号中的噪声对输入与输出能量水平的贡献是相等的,并趋向于压制在能量中过于回声压制引起的任何差别)乘法常数K由经验方法设置,以达到所希望的鉴别水平。例如,采用一个K=16的乘法器要求输入能量大于gCANCEL以前的输出能量12db,表明一种高回声抵消与低近端噪声的状态,如下所述,gCANCEL被用于作出关于可变修正增益μVAR的控制的决策。
第二增益控制信号gBASE利用第三平方和设备595和第一平方根设备503算出,提供对于一个样本块的基线修正系数幅度的量度。换句话说,在每块的终了,第三平方和设备595将修正系数平方并积累以提供修正系数能量的量度,第一平方根设备503计算系数能量的平方根以提供RMS修正系数基线,RMS基线表示第二增益控制信号gBASE并与第三增益控制信号gpeak一同使用以计算以上描述的峰值对基线幅度之比。
第三增益控制信号gpeak利用最大平方设备598和第二平方根设备508算得。在工作中,最大平方设备598计算在每个样本终了的峰值修正系数值的平方,并且在每块的终了第二平方根设备508计算最大平方设备598输出的平方根以提供在该块的过程中峰值系数值的指针。该指针代表第三增益控制信号gpeak并被用于计算峰值对基线之比以及提供合适的控制信号c(n)给可选的残余回声压制器。
注意,在理论上,gpeak可利用在每块终了的修正系数的绝对值更直接地算出。换句话说,不是在每个样本计算峰值修正系数的平方,最大平方设备598可被构成为一个计算最大值设备,用于在每块的终了直接确定峰值(绝对值)修正系数。在这样的情况下,第二平方根设备508是不必要的。然而,由最大平方设备598执行的每样本计算在实际上被用于块浮点算术。换句话说,当图5的实施方案在数字信号处理器中实现时最大平方设备598的输出被用于防止修正系数寄存器550溢出。另外,对许多数字信号处理器来说,即使需要在每块终了计算平方根值,计算平方值要比计算绝对值有效。
第四与第五增益控制信号gREFHI,gSUPP是利用第四与第五和-平方设备575,580以及最小-最大设备513算出的。特别是,第四与第五和-平方设备575,580在一个块的过程中分别将样本排队器545的第一与第j位置的内容平方与积累。因此,在每块的终了,第四与第五和-平方设备575,580提供在该块的过程中,样本排队器545的第一与第j位置中看到的能量水平的量度gREFI,gREFJ。样本排队器545的第一与第J位置代表样本排队器545一个部分的末端,相应于外形向量为最大时外形向量的一个部分。在每块的末了,最小-最大设备513选择第四与第五和-平方设备575,580输出的最小与最大以分别产生第一和第二输出gREFLO,gREFHI。第二输出gREFHI直接用作第四增益控制信号。第一输出gREFLO在相除设备518上被分为第三增益控制信号gpeak,相除设备的输出被作作第五增益控制信号gSUPP。如下所述,第四增益控制信号gREFHI被用作将可变修正增益μVAR归一化的参考,第五增益控制信号gSUPP被用于计算残余压制控制信号c(n)。
在每个样本块的末了,增益控制设备523利用五个增益控制信号gCANCEL,gBASE,gPEAK,gREFHI,gSUPP来调节可变修正增益和控制信号c(n)。例如,增益控制设备将第三增益控制信号gPEAK除以第二增益控制信号gBASE以产生峰值对基线之比,然后被转变为在0与1范围中的一个状态规范,正如以上关于图4的标度-偏置和限制设备440所描述的那样。研究表明,给出图5实施方案中描述的测量技术,这样一种收敛参数可有效地应用于预测各种条件下系数的状态。例如,在远端单独谈话情况下,一个非收敛系统产生状态规范为1,一个高度收敛系统产生状态规范近乎0。在从非收敛向收敛状态过渡期间,规范从1逐渐衰减为0,在存在近端噪声的情况下衰减得很快。在双重谈话的情况下,状态规范的典型值小于0.2,在近端单独谈话的情况下规范为0。另外,周期性的远端信号(例如DTMF音调和远端语音中的元音声音)使规范降为零。因此,从第二与第三增益控制信号gBASE,gPEAK得到的状态规范可与第一增益控制信号gCANCEL连用作出关于可变修正增益μVAR以及残余压制控制c(n)的智能决策。
例如,如果状态规范大于0以及第一增益控制信号gCANCEL为1(表明为远端单独谈话,低近端噪声,和一个至少中等程度的非收敛回声消除器),那末可变修正增益μVAR按照修改的NLMS算法相当积极地进行调节。换句话说,可变修正增益μVAR在远端信号中所测得的能量水平的倍数上被设置为1。正如以上所述,第四增益控制信号gREFHI提供一种远端信号中能量的适当量度。理论上,每个滤波器系数的修正增益可利用在样本排队器545中相应位置的参考能量独立地进行归一化。然而,为了计算简单,如上所述,参考能量是基于样本排队器545的第一与第J位置中产生的最大能量算出(保守地)。
如果以上的测试并不确切(即,如果第一增益控制信号gCANCEL在状态规范大于0的相同时间上不是1),如果状态规范大于0.5(表明主要是辅音声音的远端单独谈话,近端噪声数量不详,滤波器收敛程度不知),那末可变修正增益μVAR利用状态规范的归一化版作较保守的调节。特别是,可变修正增益μVAR被设置为等于状态规范除以远端信号(gREPHI)所测得的能量水平的倍数,如上所述,状态规范的行为(例如,随滤波器收敛及近端噪声减小)使其适于用作在这样情况下可变修正增益μVAR的基础。
如果以上测试中任一种都不确切(表明,消除器被良好收敛,没有大的远端信号,在近端信号中有重要的周期性组分,和/或有重要的近端话音和/或噪声),那末可变修正增益μVAR被设置为状态规范除以与块长度L成比例的一个常数。而且,如上所述,状态规范的行为(例如,随着收敛,近端语音与噪声,以及周期性远端信号减小)使其适于用作在这样情况下的可变修正增益μVAR。因此,图5的实施方案提供了一种稳固的系统,在适当的情况下尽可能快地收敛没有产生其它情况下的不稳定。
在图5的实施方案中,第三与第五增益控制信号gpeak,gSUPP被用于控制一种可选的残余回声压制器。例如,在远端单独谈话的情况下(例如,由状态规范大于0.5所表明的场合),压制器控制信号c(n)被设置为等于回声峰值的普遍性压制估值的已滤波型。因此,残余压制器可以移去残余回声而没有通过移去多于必要时产生的过分畸变。在其它情况下,控制信号c(n)以小的增量向适当的最大值增加。这种潜在的原因隆低了在回声压制不可能被测量的时期内由回声消除器提供的回声压制。因此,图5的实施方案提供一种控制信号c(n),残余回声压制器可在必要的情况下利用此信号而得以应用,没有过分地畸变在近端信号x(n)中可能存在的任何近端语音或噪声。
通过举例的方法,对图5示范性实施方案的以上已描述的各个方面用以下提供的伪码作进一步详尽的描述。伪码已被写出来模拟实施一个32位数字信号处理器中的回声消除系统。本领域的技术人员将理解,这样码本质上是示范性的用各种各样的硬件配置可以实现适当的系统。
<pre listing-type="program-listing"><![CDATA[%用于MATLAB的AEC和NLP仿真文本。  %AEC=声音回声消除器  %(例如,扬声器回声消除器)  %NLP=非线性过程  %(即,残余回声与噪声压制器)  %(例如,AC-中心限幅器)  %变量表(即在以上的详细描述及以下MATLAB码%中使用的变量名称之间的关系)  %MATLAB变量在详述中所用的变量名称  %————— ———————————  %Sample<paragraph id="d96"></paragraph>n(当前的样本号)  %BLOCK_SIZE<paragraph id="d97"></paragraph>1(每块样本数)  %TAPS <paragraph id="d98"></paragraph>m(滤波器系数数目)  %aecIn <paragraph id="d99"></paragraph>s(n)(近端输入)  %aecRefIn <paragraph id="d100"></paragraph>x(n)(远端输入)  %aecout<paragraph id="d101"></paragraph>c(n)(误差信号/回声消除器输出)  %aecEchoEst<paragraph id="d102"></paragraph><paragraph id="d103"></paragraph>(在s(n)中回声的估值)  %nlpGain <paragraph id="d104"></paragraph>c(n)(残余压制器控制)  %nlpout<paragraph id="d105"></paragraph>y(n)(回声被消除/残余被压制输出)  %aecRef<paragraph id="d106"></paragraph>x(n)…x(n-m+1)(样本排队)  %aecCuef <paragraph id="d107"></paragraph>ho(n)…hm-1(n)(滤波器系数)  %aecUpdate <paragraph id="d108"></paragraph>ho(n)…hm-1’(n)(修正系数)  %aecGain <paragraph id="d109"></paragraph>μVAR(每块系数修正增益)  %profile <paragraph id="d110"></paragraph>profile(每个系数增益调节向量)  %aecInenergy <paragraph id="d111"></paragraph>gIN(s(n)中每块的能量)  %aecOutEnergy <paragraph id="d112"></paragraph>gOUT(在e(n)中每块的能量)  %aecRefEnergyo <paragraph id="d113"></paragraph>gREF1(在第一样本排队位置中每块的能量)  %aecRefEnergyN <paragraph id="d114"></paragraph>gREFJ(在第j个样本排队位置中每块的能量)  %aecRefEnergyLow <paragraph id="d115"></paragraph>gREFLO(在每块末的gREF1和gREFJ的较小者)  %aecRefEnergyHigh <paragraph id="d116"></paragraph>gREFHI(在每块末的gREF1和gREPJ的较大者)  %aecUpdateNoise<paragraph id="d117"></paragraph>gBASE(每块的基线修正系数值)  %aecUpdatePeak <paragraph id="d118"></paragraph>gpeak(每块的峰值修正系数值)  %aecPeakToNoise<paragraph id="d119"></paragraph>gRATIU(每块的修正峰值对基线之比)  %aecUpdateGauge<paragraph id="d120"></paragraph>gSTATUS(回声消除器状态规范)  %aecSuppHigh <paragraph id="d121"></paragraph>gCANCEL(表明回声消除程度的标志)%aecSupp<paragraph id="d122"></paragraph>gSUPP(整个回声压制水平的量度)%在运行此文本以前,设置以下变量%inFile=输入文件名称,left=远端,right=近端。%OutFile=输出文件名称,letf=nlp输出,right=aec输出。%所有文件使用DAT-link的原始格式。%分数表示的最大正值。ONE=32767/32768;fidIN=fopen(inFile,‘r’);if fidIn=-1error([‘Error Opening file’inFile])endfidout=fopen(0utFile,‘W’);[LRmatrix,Wordcount]=fread(fidIN,[2,int],‘int16’);%使用范围-1到ONE的比例输入。LRmatrix=LRmatrix/32768;TAPS=512;%在FIR滤波器中的抽头数和修正向量的长度;%FIR延时线需要至少通过噪声压制器延时那样长。%这使远端信号能与非线性处理器(NLP)延时匹配。%修正向量需要足够长,使最后25%的抽头大多%数与远端信号不相关,并只具有近端能量。BLOCK-SIZE=960;%在修正积分周期中的样本数。%较大的块尺寸对双重谈话及近端噪声有较大%的稳固性,因为它们使积分趋于零。%较大尺寸也改进检测收敛的能力,因为相关%的修正随块尺寸按比例增加而不相关的(噪声)%随块尺寸平方根增加。%较小尺寸改进对于变化(回声路径,单独-双重谈话)%的反响时间及加速收敛。%在此设置标准TDMA帧尺寸的方便的倍数。BLOCK_BITS=Ceil(log2(BLOCK_SIZE));%指明对积累在一个样本块上的右移值的位数;NBLOCKS=flour((WordCount/2)BLOCK_SIZE);%处理的块数clear wordCount  NSAMPLES=NBLOCKS/BLOCK_SIZE;%供查错用基于样本的向量长度。  %计算在修正向量峰值对噪声之比的阈值,用于确定最大修正增%益,为了在[-1,1]的范围中噪声均匀,期望的峰值修正幅度是%g*BLOCK_SIZE/3,期望的对于不相关抽头的修正向量RMS是%g*sqrt(BLOCK_SIZE)/3,其中g是回声路径增益。因此,最大修正向量峰值对噪声之比为  %sqrt(BLOCK_SIZE),  %为了确定单独谈话存在于噪声之中,大约此值的一半作为阈值经验确定是最好的。  MAX_GAIN_THRESH=sqrt(BLOCK_SIZE)/2;  %峰值对RMS对于噪声来说是与块尺寸独立的。  %为了排除近端噪声与远端周期性信号,此阈值由经验得出。  NOISE_THRESH=5.5;  %预计算常数用作修正规范的一个乘法器。  UPDATE_GAUGE_SCALER=floor(32768/(MAX_GAIN_THRESH_NOISE_THRESH))32768;  %建立用于FIR系数的增益外形,此外形粗略地与汽车中系数%的预期范围匹配。这种方法,含有周期性组分(元音)的修正被%增强,遵循正确的指数衰减特性并使发散最小。在较高衰减抽头%上的较低增益也降低修正噪声对系数的贡献。整个外形的影响使得%较高修正增益没有不稳定。%因为所有的系数具有16位的动态范围,较高衰减的抽头作%为外形的结果也具有较好的量化。此外形是通过右移计算在一个时%刻上FIR64抽头实现的。  %Profile=ones(TAPS,1);  for k=2;(TAPS/64),  Profile((K*64-63)(k*64))=ones(64,1)*2Λ(1-k);  end  %分配查错向量以加速执行  aecUpdateFactor=zeros(1,NBLOCKS);aecSuppHistory=zeros(1,NBLOCKS);  hlpDelta History=zeros(1,NSAMPLES);  hlpGainHistory=zeros(1,NBLOCKS);  %分配块尺寸向量以加速第一块的执行。  aecOut=zeros(1,BLOCK_SIZE);  nlpOut=zeros(1,BLOCK_SIZE);  %初始化变量  Sample=0;  aecRef=Zeros(1,TAPS);  aeccoef=Zeros(TAPS,1);%Comment out this line to use theLast values  nlpRefEnyelope=0;  nlpRefFloor=0;  aecSupp=ONE;  aecSuppLast=ONE;  nlpGaim=2*ONE;%Comment out this Line to use the Lastvalues  nlpOutLast=0;  %disp([’aecCoef(1)=’dec2hex(aecCoef(1)*32768+  % (aecCoef(1)<0)*65536)])  %disp([’aecCoef(2)=’dec2hex(aecCoef(2)*32768  % +(aecCoef(2)<0)*65536)])  %disp([’aecSupp=’dec2hex(aecSupp*32768)])  %disp([’nlpGain=’dec2hex(nlpGain*16384)])  for block=1NBLOCKS,  block%显示块数指示过程  %清除块累加器  aecInEnergy=0;  aecOutEnergy=0;  aecRefEnergyO=0;  aecRefEnergyN=0;  aecUpdate=Zeros(TAPS,1);%复位块浮点变量aecShiftPending=0;aecErrorShift=0;%执行基于样本的处理for K=1BLOCK_SIZE,  sample=sample+1;%总的样本计数器%%AEC部分%aecRefIn=LRmaTrix(1,Sample);%输入远端(扬声器)样本%移位参考延时线并计算FIR输出。%在DSP中,两种操作在一条指令中。aecRef=[aecRefInaecRef(1,TAPS-1)];%测试码开始%以下的码很快地近似被建议的位精确码。aecEchoEst=aecRef*(aecCoef+profile);aecEchoEst=max(min(round(aecEchoEst*32768)/32768,  ONE),-1);%测试码结束%aecEchoEst=0;%for m=(TAPS/64)-12;%aecEchoEst=aecEchoEst+aecRef(m*64-63m*64)*%aecCoef(m*64-63m*64);%aecEchoEst=max(min(aecEchoEst,ONE),-1)/2;%对于S.31格式的量化%aecEchoEst=floor(aecEchoEst*2Λ31)/2Λ31;%end%aecEchoEst=max(min(aecEchoEst,ONE),-1)%加2Λ(-17)由于当分数精确地等于0.5时MATLAB突然弯曲。%aceEchoEst=round(aecEchoEst*32768+2Λ(-17))/32768;%aecEchoEst=max(min(aecEchoEst,ONE),-1);%计算AEC输出aecIn=LRmaxtrix(2,Sample);%输入近端(话筒)样本。  aecOut(K)=aecIn-aecEchoEst;  aecOut(K)=max(min(aecOut(K),ONE),-1);  %积累在AEC输入,输出中的能量,并且  %参考Profile-1端点,  ENERGy_SCALE=2Λ21;%对于S10.21格式的量化aecInEnergy=aecInEnergy+aecInΛ2;aecInEnergy=floor(aecInEnergy*Energy_SCALE)/ENERGY_SCALE;aecInEnergy=floor(aecInEnergy*ENERGY_SCALE)/ENERGY_SCALE;aecInEnergy=floor(aecOutEnergy*ENERGY_SCALE)/ENERGY_SCALE;aecRefEnergyo=aecRefEnergyO*aecRef(1)Λ2;aecRefEnergyo=floor(aecRefEnergyo*ENERGY_SCALE)/ENERGY_SCALE;aecRefEnergyN=aecRefEnergyN+aecRef(64)Λ2;aecRefEnergyN=floor(aecRefEnergyN*ENERGY_SCALE)/   ENERGY-SCALE;  %积累系数修正=误差(aecOut)与参考值的相关  %使用块浮点表示方法,其中aecError Shift是%指数,aecUpdate()是尾数。  T=aecOut(K)*2ΛaecErrorShift;  %对S.15格式量化。  T=floor(T*32768)/32768;  if aecShiftpending,  ASM=-1;  aecErrorShift=aecErrorShift-1;  aecShiftPending=0;  else  ASM=0;  end  aecUpdate=aecUpdate+T*aecRef’;  %对于S.15格式量化%加2Λ(-17)是由于当分数精确地等于0.5时MATLAB突然弯曲。  aecUpdate=round(aecUpdate*32768+2Λ(-17))/32768;  aecUpdate=max(min(aecUpdate,ONE),-1);  aecUpdate=aecUpdate*2ΛASM;  %在可能的右移以后按S.15格式量化。  aecUpdate=floor(aecUpdate*32768)/32768;  %求出修正向量(假定在第一个128个抽头中)的峰值平方;  %目的是得到峰值绝对值,但峰值平方在DSP中执行较少的循%环,即使在块的末端采用平方%也那样。  aecUpdatePeak2=max(aec(aecUpdate(1128)Λ2);  %Boolean指出如果修正需要在下个环路中用2除的话  %aecShift Pending=aecUpdate Penk 2>0.25;  %0.25=0.5Λ2  %NLP部分  %nlpIn=aecOut(k);%NLP输出被连到AEC输出。  %NLP远端ref=AEC ref用aecEcho Est替代并不给出更好的结%果,为了与噪声压制器延时匹配,需要附加的存贮器,AECref同样%工作得很好,因为它领先于包含在nlpIn中的最早的回声,在峰值%检测器中长的时间常数对NLP是一个关键点,它使nlpRef对残余%回声的紧密的延时匹配成为不必要。  nlpRef=aecRef(1);  %包络检测(峰值检测)nlpRef信号  %小于255/256的极点导致回声通过。  %大于255/256的极点导致对近端过分畸变。nlpRef Envelope=max(abs(nlpRef),255/256*nlpRefEnvelope);%nlpRefEnvelope应该是32位存贮。%nlpRefEnvelope被园整为16位,衰减不低于512/2Λ15。%nlpRefEnvelope被截短到16位,当低于256/2Λ15时每个样本衰%减1位,这就太快了(导致回声通过)对S.31格式量化。  nlpRefEnvelope=floor(nlpRef Envelope*2Λ31)/2Λ31;  %跟踪nlpRefEnvelope的低限作为nlpRef噪声底部的量度。漏%过趋于1的噪声底部值跟踪增长的噪声。执行指数规律的泄漏,使%时间常数与幅度无关。(1+1/65536)的乘法器这样被选取使它有%大约65536个样本,或8秒钟,用于使噪声底部加倍。也加上一个%常数,使得nlpRefFloor小于2Λ(-15)时泄漏仍然发生。常数%2Λ(-24)这样被选取,使得对于噪声底部从0开始达到2Λ(-8)%它有大约65536个样本,或8秒钟。  nlpRefFloor=2Λ(-24)+nlpRefFloor+nlpRefFloor/65536;  %对S.31格式量化。  nlpRefFloor=floor(nlpRefFloor*2Λ31)/2Λ31;  nlpRefFloor=min(nlpRefFloor,nlpRefEnvelope);  %NLP的Δ值是由AEC控制的增益并限于1。  %从包络中减去噪声底部,使得当远端信号只是噪声时近端话音%将不被畸变。虽然这有降低Δ值的效果并让回声通过的潜在可能,对%于大信号通过乘上近似(1+nlpRefFloor)的差值可被补偿。  nlpDelta=min(ONE,nlpGaim*…  floor((nlpRefEnvelope-nlpRefFloor)*32768)/32768);  %对S.15格式量化  nlpDelta=floor(nlpDelta*32768)/32768;  nlpDelta History(sample)=nlpDelta;%存贮历史供查错。  %NLP output=input beyond+/-delta-sized windowfrom Lastoutput。  nlpOut(k)=min(max(nlpOutLast,nlpIn-nlpDelta),   nlpIn+nlpDelta);  nlpout Last=nlpOut(k);%为下一次用存贮值。  end  %存贮以整数格式在一个块上收集到的文件输出。  %fwrite(fidout,[floor(aecOut*32768);…  %round(32768*LRmatrix(2,Sample-BLOCK_SIZE+1Sample))]’int16’);  fwrite(fidOut,(floor(nlpOut*32768);floor(aecOut*32768)),’int16’)  %执行块处理%AEC部分  %  %disp([’aecInEnergy=’dec2hex(aecInEnergy*ENERGY_SCALE)  ])  %disp([’aecOutEnergy=’dec2hex(aecOutEnergy*ENERGY_SCAL  E)])  %disp([’aecRefEnergyO=’dec2hex(aecRefENERGYO*ENERGY_SCALE)])  %disp([’aecRefEnergyN=’dec2hex(aecRefEnergyN*ENERGy  _SCALE)])  %disp([’aecErrorShift=’dec2hex(aecErrorShift+(aecErrorShift<0)*65536)])  %disp([’aecUpdatePeak2=’dec2hex(aecUpdatePeak2*2Λ31)])  %disp([’aecUpdate(1)=’  dec2hex(aecUpdate(1)*32768+(aecUpdate(1)<0)*65536)])  %disp([aecUpdate(2)=’  dec2hex([aecUpdate(2)*32768+(aecUpdate(2)<0)*65536]])  %实际的参考能量对于修正向量的每个部分是不同的。%aecUpdate(1)可以使用来自aecRef(1)的能量,aecUpdate(2)使用%来自aecRef(2)的能量,等等。为了减少复杂性,利用单独的号码表%示参考能量。  %当参考能量被用于将修正(NLMS)归一化时,使用太小的值可%能引起不稳定。当参考能量被用于测量回声压制时,太大的值可能%使回声通过NLP。在此实现的折衷解决办法是对于各自的目的利用%Profile=1时的末端的最大值与最小值。  aecRefEnergyHigh=max(aecRefEnergyO,aceRefEnergyN);  aecRefEnergyLow=min(aecRefEnergyO,aecRefEnergyN);  %cf S10.5格式量化  aecRefEnergyHigh=floor(aecRefEnergy High*32)/32;  aecRefEnergyLow=floor(aecRefEnergyLow*32)/32;  %从以前的25%的部分的RMS测量修正噪声。  %加1LSB到结果中以保证在量化后,aecUpdateNoise比较大%aecPeakToNoise比较小。这样就避免较高回声相关的虚假印象。  %在底部运算以后加1LSB产生像顶部运算相同的结果,当所有%的截短的位等于零这样的少有的情况例外。  aecUpdateNoise=Sum(aecUpdate((TAPS*75+1)TAPS)Λ2)*  4/TAPS  %用S.31格式将平方的中间结果量化  aecUpdateNoise=floor(aecUpdateNoise*2Λ31)/2Λ31;  aecUpdateNoise=sqrt(aecUpdateNoise);  %用S.15格式量化  aecUpdateNoise=floor(aecUpdateNoise*32768+1)/32768;  %求出修正向量的峰值幅度。  aecUpdatePeak=sqrt(aecUpdatepeak2);  %计算修正峰值对噪声之比。  aecPeakToNoise=aecUpdatepeak/aecUpdateNoise;  %用S11.4格式量化  aecpeakToNoise=floor(aecPeak To Noise*16)/16;  %从峰值对噪声比计算修正规范(范围=
)。  %在下游处理中使用的规范是相同的,尽管峰值对噪声比随块尺%寸改变并且噪声阈值可能改变。  %对于近端话音/噪声或远端周期性信号(元音),规范=0  %对于双重谈话,规范<0.2。  %对于远端单独谈话  %不管噪声如何,当消除器大体上不收敛时,规范=ONE。  %如果近端是平静的,规范=ONE直到接近完全收敛为止。  %当消除器收敛时,规范将衰减趋于零--当近端是有噪时衰减较快。  aecUpdateGauge=(aecPeakToNoise_NOISE_THRESH)*UPDATE_  GAUGE_SCALER;  aecUpdateGauge=max(min(aecUpdateGauge,ONE),O);%用S.15格式量化  %aecUpdateGauge=floor(aecUpdateGauge*32768)/32768设置%标志指明回声消除器压制是否为“高”。  %当输入与输出之间的能量比大于16时阈值为“高”。这意味%着压制优于12dB。  %并且近端噪声是低的。  %aecSuppHigh=(aecOutENergy*16)<aecINEnergy根据条件确定%修正增益。  %测试是否为远端单独谈话,低近端噪声,和至少中等程度的非%收敛消除器,规范的使用防止在包括元音的远端周期性信号期间发%散。例如,DTMP音调的第一块,频率为941Hz和1209Hz,求得%aecPeakToNoise=3.5,因而  %aecUpdateGauge=0  %如果aecSuppHigh与(aecUpdate Gauge>0),  %使用NLMS和最大修正增益。  %设置最小分母为1/ONE,限制增益到ONE。  %利用最大值函数导致比加1到分母更快收敛,因为所得的增益较高。  %乘数小于6导致较低的稳定性,使得在自适应过程中出现过%冲,在回声消除器输出中出现尖峰。  %乘数大于6降低扰动后的压制。  aecGain=1/max(aecRefEnergy High*6,1/ONE);  %为了查错,设置因数为2,指明最大增益被使用。  aecUpdateFactor(block)=2;  %测试是否是远端单独谈话(主要是辅音声音),  %带有未知噪声数量及未知的消除器收敛情况elseiq(aecUpdateGauge>0.5),  %使用NLMS以及稍低的最大增益,避免由于近端信号与远端周%期性组分引起的不稳定、利用aecUpdateGauge控制修正增益,因为%当回声消除器收敛时它减小,并且随着近端噪声的增加而减小。  aecGain=aecUpdateGauge/max(aecRefEnergyHigh*16,1);  aecGain=min(aecGain,ONE)  %为了查错,设置因数为1,指明高的增益被使用。  aecUpdateFactor(block)=aecUpdateGauge;else  %因为测试是失败的,回声消除器被良好地收敛,没有重大的远%端信号,在远端信号中有重要的周期性组分,和/或有重要的近端话%音和/或噪声,利用aecUpdateGauge控制修正增益,因为它随回声消%除器收敛而减小,在近端话音(有否远端话音)期间是低的,在远%端信号中有周期性组分时较低,并随着近端噪声增加而减小。  %因素1/BLOCK_SIZE保证aecUpdate Gauge=ONE时的稳定性。  %最坏情况的远端信号条件在-1和1之间交替。在这种情况下,aecRefEnergyHigh=BLOCK_SIZE aecGain=aecUpdateGauge*floor(32768/BLOCK_SIZE)/32768;%为了查错,设置因数等于规范值。  aecUpdate Factor(Block)=aecUpdateGauge;  end  %用S.15格式量化  aecGain=floor(aecGain*32768)/327768;  %利用自适应增益,将修正向量加到系数向量上。  %在用作FIR系数以前aecCoef被乘以Profile。  aecCoef=aecCoef+(aecUpdate*2Λ(-aecErrorShift)*aecGain);  %用S.15格式量化  %加上2Λ(-17)由于MATLAB当分数精确地等于0.5%时要弯曲。  aecCoef=round(aecCoef*32768+2Λ(-17))/32768;  aecCoef=max(min(aecCoef,ONE)-1);  %NLP部分  %测试aecRefEnergyLow避免在计算aecSupp中被零除。  if(aecRef EnergyLow>0),  %测量总的回声消除压制,包括从扬声器到话筒的回声路径。这%种测量在远端单独谈话期间是最有效的。控制NLP是需要的,因为%AEC参考被送到NLP。换句话说,  %(aecUpdatePeak/aecIn Energy)只适合于控制NLP增益,%如果aecIn被送到NLP参考输入的话。这种测量是相当精确的,即%使在存在近端噪声的情况下,由于这样的事实,aecUpdatePeak%将一个块上的噪声加在一起。  %测量精确度并不因远端信号中周期性组分而降低。  aecSupp=min(aecUpdatePeak*2Λ(-aecErrorShift)/  aecRefEnergyLow,ONE);  %用S.15格式量化  aecSupp=floor(aecSupp*32768)/32768  %aecSupp测量平均压制。估计峰值的压制,考虑到扬声器畸变%产生比线性互相关测量到的回声峰值要高。aecPeakSupp=min(2*ONE,4.5*aecSupp);  end  %当回声压制测量是可靠时,NLP的增益被修正。最好的条件是在%远端单独谈话期间,正如由修正规范所指出的那样%(aecUpdateGauge>=0.5)因为回声压制测量利用修正向量的峰值,%它相当少影响近端话音和噪声,只要有足够能量来自远端。一种告%知是否有足够来自远端能量的方法是回声压制测量,要比从最近的%过去(aecPeakSupp<nlp Gain)测量要好。利用来自远端的少量能%量,所测量的回声压制是相当差的,因为是由修正峰值除以参考(远%端)能量得来的。然而,如果aecRefEnergyLow为零,跳过所有条%件下NLP增益修正值。  if(aecRefEnergyLow)>0 &amp;…  %((aecUpdate Gauge>=0.5)/(aecPeakSupp<nlpGain)),利用aecSupp供查错。  aecSuppLast=aecSupp;  %设置NLP增益等于被估计的回声峰值压制的已滤波版。  %这样,NLP将移去AEC的残余回声,然而并不移去多于需要,%因为这将增加畸变  %nlpGain具有慢的上升与快的衰减的特性。因为初始上升,并%不考虑在系数修正以后改进回声压制,初始上升趋势是太高。这种%滤波器根据近端信号减少畸变。  nlpGain=min(aecPeak Supp,0.5*nlp Gain+0.5*aecPeakSupp);  else%因为它不是远端单独谈话,将NLP增益泄漏趋于2。  %在不可能被测量的时刻,回声压制将变坏nlpGain=min(2*ONE,511/512)*nlpGain+2/512);  end  %按S1.14格式量化  nlpGain=floor(nlp Gain*16384)/16384;  %存贮aecSupp和nlpGain供查错。  aecSuppHistory(block)=aecSuppLast;  nlpGainHistory(block)=nlpGain;%disp([’aecRefEnergyHigh=’dec2hex(aecRefEnergyHigh*32)])%disp([’aecRefEnergyLow=’dec2hex(aecRefEnergyLow*32)])%disp([’aecUpdateNoise=’dec2hex(aecUpdateNoise*32768)])%disp([’aecUpdateGauge=’dec2hex(aecUpdateGauge*32768)])%disp([’aecSuppHigh=’dec2hex(aecSuppHigh)])%disp([’aecGain=’dec2hex(aecGain*32768)])%disp([’aecCoef(1)=’dec2hex(aecCoef(1)*32768+(aecCoef(1)  <0)*65536)])%disp([’aecCoef(2)=’dec2hex(aecCoef(2)*32768+(aecCoef(2)  <0)*65536)])%disp([’aecSupp=’dec2hex(aecSupp*32768)])%disp([’nlpGain=’dec2hex(nlpGain*16384)])%pause%plot(abs(aecUpdate)/aecUpdateNoise)%axis([O TAPS O aecPeak To Noise])%xlabel(’Coefficient number’),ylabel(‘Normalized   Update magnitude’),Pause%plot(20*log10(abs(aecCoef*profile))),axis([O TAPS-100 1]);%xlabel(’Coefficient number’),ylabel(‘magnitudeindB’),Pauseend  Clear LRmatrix MAX_GAIN_THRESH NOISE_THRESH UPDATE_GAUGE_SCALER Profile k Clear aecOut nlp Out Sample aecRefnlpRef Envelope nlpOut Last block m Clear aecRef Energyo aecRefEnergy N aecRefEnergyLow aecInEnergy aecOut Energy ClearaecUpdate aecEchoEst aecIn nlpIn nlpRef nlp Ref Envelope nlpDelta Clear aecUpdateNoise aecUpdatePeak aecPeakToNoiseaecUpdate Gauge aecSuppHigh  Clear aecSupp aecGain aecRefIn aecUpdate Peak2UPDATE_GAUGE_SCALER Clear aecShift Pending aecError Shift ASMT BLOCK_BITS ONE ENERGY_SCALE Clear aecReakSupp aecSuppLastnlpGain aecRefEnergyHighfclose(fidIn);fclose(fidOut);Clear fidIn fidOut]]></pre>本领域技术人员将理解,本发明并不限于在此用作说明已经描述的特定的示范性实施方案。例如,注意到在某些应用中,第一增益控制信号gCANCEL可被用来直接设置可变修正增益μVAR。换句话说,如果gCANCEL为1,μVAR被设置为第一值,如果gCANCEL为0,μVAR被设置为一个交替值。另外,μVAR可依据在近端信号s(n)和误差信号e(n)中相对能量更精确的测量来设置。换句话说,图5的乘法器585和比较器590可被补充用以提供在s(n)与e(n)中相对能量的步进式或连续指示,如果合适的话可依次用于设置μVAR。
也注意到,虽然状态规范已经作为峰值修正系数值与基线修正系数值之比进行描述,通常,状态规范可以作为第一和第二值的函数(不一定是简单的比值),其中第一和第二值分别是修正向量第一和第二部分的函数,换句话说,如上所述,本发明一般性地讲授修正向量的形状和峰值提供关于系统状态的有用信息,任何试图区分修正向量以查明其形状或/和峰值的努力的操作由本发明考虑。
另外,虽然远端信号参考能量gREFHI,gREFLO(分别用于设置NLMS修正增益和残余压制器控制信号)在图5的实施方案中是根据在远端样本排队内特定的位置上测量到的能量计算的,它们也可以作为第一和第二值的一个函数(例如,一个比值)来计算,其中第一值与回声估值中测得的能量成比例,第二值与滤波器系数的幅度成比例。正如所希望的那样,这样一种函数提供一种在远端信号中能量的精确指针。
而且,虽然可变修正增益在图4与5的实施方案中是在每块的终了调节的,本领域的技术人员将注意到,如果希望的话,可变修正增益也可不要这么频繁地调节。例如,在每块的终了可以作出决定(例如根据状态规范),调节应该立即进行还是推到下一次。
也注意到,在图4与5中描述的各种操作方框在性质上是概念性的。这样的方框的功能的实际实现可以采用各种各样的技术来达到。而且,每种示范性系统可以,例如,应用多个标准数字信号处理器芯片,一种单独的专用集成电路,或者一个适当配置的计算机来实现。因此,本发明的范围由所附的权利要求来限定,而不是以上的描述,与权利要求的意义一致的所有等效物均被认为是包括在内。
权利要求
1.一种回声消除设备,用于估计输入信号的回声组分以及从输入信号中减去所得的回声组分估值,提供回声消除的输出信号,其中输入信号的回声组分是由回声引起的信号得到的,回声消除设备包括一种自适应滤波器,用于对回声引起的信号滤波,提供回声组分估值,其中所述的自适应滤波器的自适应滤波器传递函数是依据回声引起的信号以及回声消除的输出信号作修正的;一种存贮设备,连到所述的自适应滤波器上,用于存贮与自适应滤波器传递函数中的变化相应的修正值;和一种处理器,连到所述的存贮设备上,用于计算状态指针,其中状态指针是作为第一值与第二值的函数被计算的,第一值是修正值第一部分的函数,第二值是修正值的第二部分的函数。
2.依据权利要求1的回声消除设备,其中所述的自适应滤波器是一个数字滤波器,其中自适应滤波器传递函数包括多个离散时间滤波器系数,其中修正值包括相应的离散时间修正系数。
3.依据权利要求1的回声消除设备,其中所述的自适应滤波器是一个模拟滤波器,其中自适应滤波器传递函数及修正函数是时间的连续函数。
4.依据权利要求1的回声消除设备,其中修正值是根据回声引起的信号以及回声消除的输出信号作调整,其中自适应滤波器传递函数是根据修正值作周期性的调节。
5.依据权利要求4的回声消除设备,其中所述的自适应滤波器是一个数字滤波器,并且其中一个输入信号样本块是在自适应滤波器传递函数调整前由所述的回声消除设备作处理。
6.依据权利要求4的回声消除设备,其中所述的自适应滤波器是一个模拟滤波器,并且其中一个固定长度的,连续时间间隔的输入信号在自适应滤波器传递函数调节以前由所述的回声消除设备进行处理。
7.依据权利要求1的回声消除设备,其中状态指针提供修正值形状的一个量度。
8.依据权利要求1的回声消除设备,其中用于计算状态指针的第一和第二值中至少一个是与修正值的峰值幅度成比例。
9.依据权利要求1的回声消除设备,其中用于计算状态指针的第一和第二值中至少一个是与修正值的RMS值成比例。
10.依据权利要求1的回声消除设备,其中用于计算状态指针的第一和第二值中至少一个是与修正值的模方成比例。
11.依据权利要求1的回声消除设备,其中用于计算状态指针的第一和第二值中至少一个是与修正值的能量值成比例。
12.依据权利要求1的回声消除设备,其中用于计算状态指针的第一和第二值中至少一个是与修正值绝对值之和成比例。
13.依据权利要求1的回声消除设备,其中用于计算状态指针的第一和第二值中至少一个是由按对自适应滤波器传递函数的贡献程度的次序排列的修正值的部分算得的。
14.依据权利要求1的回声消除设备,其中状态指针是作为修正值的峰值与修正值的基线值之比算得的。
15.依据权利要求1的回声消除设备,其中用于计算状态指针的第一与第二值中至少一个是基于修正值的短延时部分算得的。
16.依据权利要求1的回声消除设备,其中用于计算状态指针的第一与第二值中至少一个是基于修正值的长延时部分算得的。
17.依据权利要求1的回声消除设备,其中所述的处理器对状态指针标度,偏置和限制以提供状态规范。
18.依据权利要求1的回声消除设备,其中当所述的自适应滤波器收敛时,状态指针趋于一个有限值。
19.依据权利要求1的回声消除设备,其中当输入信号噪声组分增加时,状态指针趋于一个有限值。
20.依据权利要求1的回声消除设备,其中当输入信号的语音组分增加时,状态指针趋于一个有限值。
21.依据权利要求1的回声消除设备,其中当回声引起的信号的周期性组分增加时,状态指针趋于一个有限值。
22.依据权利要求1的回声消除设备,其中所述的处理器按状态指针调节可变修正增益,其中可变修正增益确立所述的自适应滤波器被调节的速率。
23.依据权利要求22的回声消除设备,其中所述的处理器对状态指针标度,偏置及限制以提供状态规范,并且其中状态规范在计算可变修正增益中被用作一个乘数。
24.依据权利要求23的回声消除设备,其中可变修正增益通过在回声引起的信号中指明能量水平的值进行归一化。
25.依据权利要求23的回声消除设备,其中可变修正增益与指明在回声组分估值中的能量水平的值除以指明自适应滤波器传递函数的幅度的值成比例。
26.依据权利要求22的回声消除设备,其中状态指针及回声压制值合起来用于设置可变修正增益,其中回声压制值是作为在输入信号中测得的能量水平以及在回声消除的输出信号中测得的能量水平的函数被算得。
27.一种用于消除输入信号回声组分的方法,其中输入信号的回声组分是由回声引起的信号得到的,包括以下步骤利用自适应滤波器将回声引起的信号滤波以提供回声组分的估值;将回声组分的估值从输入信号中减去以提供回声消除的输出信号;依据回声引起的信号及回声消除的输出信号调节自适应滤波器的自适应滤波器传递函数;计算与自适应滤波器传递函数中的变化相应的修正值;和计算作为第一值与第二值的函数的状态指针,第一值是修正值的第一部分的函数,第二值是修正值的第二部分的函数。
28.一种依据权利要求27的方法,其中所述的计算状态指针的步骤包括计算修正值一个部分的峰值的步骤。
29.依据权利要求27的方法,其中所述的计算状态指针的步骤包括计算修正值的一个部分的RMS值的步骤。
30.依据权利要求27的方法,其中所述的计算状态指针的步骤包括计算修正值的一个部分的模方的步骤。
31.依据权利要求27的方法,其中所述的计算状态指针的步骤包括计算修正值的一个部分的能量值的步骤。
32.依据权利要求27的方法,其中所述的计算状态指针的步骤包括计算修正值绝对值之和的步骤。
33.依据权利要求27的方法,包括附加的对状态指针标度,偏置与限制的步骤以提供具有在0到1范围内一个值的状态规范。
34.依据权利要求27的方法,包括以下的附加步骤根据状态指针调节可变修正增益。
35.一种回声消除设备,用于对输入信号的回声组分估值并从输入信号中减去所得的回声组分估值以提供回声消除的输出信号,其中输入信号的回声组分来自回声引起的信号,该回声消除设备包括一种具有自适应滤波器传递函数的自适应滤波器,用于对回声引起的信号滤波以提供回声组分估值;一种连到所述的自适应滤波器的存贮设备,用于存贮修正值;依据回声引起的信号以及回声消除的输出信号调节修正值的装置;和依据修正值周期性地调节所述的自适应滤波器的自适应滤波器传递函数的装置。
36.依据权利要求35的回声消除设备,进一步包括对修正值复位的装置。
37.依据权利要求35的回声消除设备,其中所述的自适应滤波器是数字滤波器并且其中一个输入信号样本块是在自适应滤波器传递函数调节以前由所述的回声消除设备进行处理。
38.依据权利要求35的回声消除设备,其中所述的自适应滤波器是一个模拟滤波器,并且其中一个固定长度的,连续时间间隔的输入信号在自适应滤波器传递函数调节以前由所述的回声消除设备进行处理。
39.依据权利要求35的回声消除设备,进一步包括一个连到所述的存贮设备的处理器,用于计算状态指针,其中状态指针是作为第一值与第二值的函数算得的,第一值是修正值的第一部分的函数,第二值是修正值的第二部分的函数。
40.依据权利要求39的回声消除设备,其中所述的处理器根据状态指针调节可变修正增益,其中可变修正增益确立所述的自适应滤波器被调节的速率。
41.一种用于消除输入信号回声组分的方法,其中输入信号的回声组分来自回声引起的信号,包括以下步骤利用自适应滤波器对回声引起的信号滤波以提供回声组分的估值;从输入信号中减去回声组分估值以提供回声消除的输出信号;根据回声引起的信号及回声消除的输出信号调节修正值;和根据修正值周期性的调节所述的自适应滤波器的自适应滤波器传递函数。
42.一种回声消除设备,用于对输入信号的回声组分进行估值及从输入信号中减去所得的回声组分估值,以提供回声消除的输出信号,其中输入信号的回声组分来自回声引起的信号,该回声消除设备包括一种用于对回声引起的信号滤波的数字滤波器以提供回声组分估值;一种连到所述的数字滤波器的存贮设备,用于存贮多个外形系数,其中每个外形系数相应于所述的数字滤波器的一个滤波器系数;根据外形系数中相应的一个系数调节所述的数字滤波器的滤波器系数中每一个的作用的装置;和用于对外形系数初始化的装置,其中第一外形系数被设置为等于第一值,并且其中其余的外形系数被设置为等于由第一值的二进制表示方式移位得出的值。
43.一种回声消除设备,用于对输入信号的回声组分估值并从输入信号中减去所得的回声组分估值以提供回声消除的输出信号,其中输入信号的回声组分产生于回声引起的信号,该回声消除设备包括一种用于对回声引起的信号滤波的自适应滤波器,提供回声组分估值,其中所述的自适应滤波器的自适应滤波器传递函数按回声引起的信号,回声消除的输出信号及可变修正增益进行调节;一种处理器,用于计算在输入信号中所测得的能量水平以及在回声消除的输出信号中所测得的能量水平的函数和根据此函数设置可变修正增益。
全文摘要
一种回声消除器,其中一个自适应回声消除滤波器的有效传递函数的系数被周期性地调节以跟踪变化着的系统条件。周期性的调节有效系数是利用一组比较频繁地调节的修正系数与修正增益实现的,它们是根据一种策略及系统参数测量的新组合来改变。通过周期性的而不是连续的调节滤波系数并且作出关于修正增益幅度的软的,模糊逻辑类型的决策,示范性实施方案使系统速度及适应性达到最佳而未牺牲稳定性。通常,比较大的修正增益用于只有一个远端使用者正在谈话并且近端信号近乎无噪声的场合。然而,在近端单独谈话,双重谈话,和高的近端噪声的场合采用一种比较保守的方法,使得自适应滤波器不致于不稳定或者在近端话音及噪声信号中引起畸变。在任何一种情况下,修正增益随着自适应滤波器收敛而减小以匹配普遍性的稳态回声环境,这样已经正确调整的滤波器的错误扰动被减小。在非收敛期间关于应用高的还是低的修正增益的决策部分地依据系统状态规范,它包括峰值修正系数值与基线修正系数值之比。其中,系统状态规范指明系统收敛的程度。在示范性实施方案中,比较高的可变修正增益通过采用修改的归一化的最小二乘方(NLMS)算法被应用在非收敛的,远端单独谈话情况下。在其它的非收敛情况下,修正增益根据系统状态规范的归一化版比较保守地进行调节。通过动态地提供比较大的修正增益,同时小心地不让产生系统不稳定,示范性实施方案快速,稳固地进行调节以成功地在多种多样的系统环境和条件下消除回声。
文档编号H04M1/60GK1262012SQ98806901
公开日2000年8月2日 申请日期1998年4月30日 优先权日1997年5月7日
发明者E·D·罗梅斯布尔格 申请人:艾利森公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1