一种用于通信系统的改进的回声消除器 背景
本发明涉及通信系统,更具体而言,涉及在双向通信线路中回声
消除。
在许多通信系统中,如陆地线路的与无线的电话系统,话音信号
通常通过双向通信线路在两个系统使用者之间传送。在这样的一些系
统中,近端使用者的谈话一般情况下是由通信线路一端上的一个近端
话筒检出,然后在线路上传送到远端扬声器供再生并提供给远端使用
者。相反,远端使用者的谈话由一个远端话筒检出,然后通过通信线
路传送到近端的扬声器供再生并提供给近端使用者。在通信线路的任
一端上,由最接近的话筒检出的扬声器的输出可能被不经心地在通信
线路上送回,结果从使用者观点看,可能成为不可接受的破坏性的回
授或回声。而且,如果在任何声频上的回路增益大于1,那末系统将
出现技术上众所周知的“啸声”。
因此,为了避免这样的不希望的回声信号的传输,话筒声频输入
应该尽可能地与扬声器输出隔离。使用传统的电话手机,其中手机的
话筒位于靠近人的嘴,而手机的扬声器基本上盖住使用者的耳朵,所
要求的隔离是容易实现的。然而,随着便携式电话的物理尺寸的减小
和非手持扬声器-耳机电话已比较普及,制造商已经把设计改为指向
从扬声器到话筒的声频通路不靠使用者的头或身体隔断的办法。结
果,使在现代系统中对更精巧的回声压制技术的需要成为头等重要的
事。
这种需要在非手持汽车电话的情况下特别被提出来了,其中紧凑
的车辆环境使扬声器信号的多重反射返回到高增益非手持话筒上。在
车辆中使用者的移动,回声信号相对方向和强度的变化,例如,当窗
被打开与关闭或者使用者在驾驶时移动他的头,使汽车环境中回声压
制的任务更为复杂化。另外,最近开发的数字电话通过声码器处理语
音信号,这种方法引入较大的信号延时及产生非线性信号畸变。正如
众所周知,这些加长的延时从使用者观点看,趋向于扩大信号回声的
问题,并且当语音信号通过声码器时附加的非线性畸变使回声压制变
得困难。
传统上,回声压制已经采用回声抵消电路实现了,这种方法应用
自适应滤波器从话筒输出估计并除去回声信号,这样只有近端语音和
噪声在通信线路上传送。这样的系统被描述在以下的专利文献中,例
如:美国专利No.5,475,731,标题是“采用回波估算来改变误差信
号的回波消除系统和方法”“Echo-Canceling System and Method
Using Echo Estimate to Modify Error Signal”,发布于1995年
12月12日,和美国专利申请序号为No.08/578,944,标题是“自适
应滤波器的测量收敛”“Ganging Convergence of Adaptive
Filters”,提交于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 = 0 n - 1 h i x ( 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 = 0 n - 1 h i x ( 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的内容调整如下:
h i ′ ( n + 1 ) = h i ′ ( 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中,标题为“Resolution
Enhancement & 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位数字信号处理器中的回声消除系统。本领域的技术人员将
理解,这样码本质上是示范性的用各种各样的硬件配置可以实现适当
的系统。
的变量名称之间的关系):
%MATLAB变量 在详述中所用的变量名称
%————— ———————————
%Sample
n(当前的样本号)
%BLOCK_SIZE
1(每块样本数)
%TAPS
m(滤波器系数数目)
%aecIn
s(n)(近端输入)
%aecRefIn
x(n)(远端输入)
%aecout
c(n)(误差信号/回声消除器输出)
%aecEchoEst
(在s(n)中回声的估值)
%nlpGain
c(n)(残余压制器控制)
%nlpout
y(n)(回声被消除/残余被压制输出)
%aecRef
x(n)…x(n-m+1)(样本排队)
%aecCuef
ho(n)…hm-1(n)(滤波器系数)
%aecUpdate
ho(n)…hm-1’(n)(修正系数)
%aecGain
μVAR(每块系数修正增益)
%profile
profile(每个系数增益调节向量)
%aecInenergy
gIN(s(n)中每块的能量)
%aecOutEnergy
gOUT(在e(n)中每块的能量)
%aecRefEnergyo
gREF1(在第一样本排队位置中每块的能
量)
%aecRefEnergyN
gREFJ(在第j个样本排队位置中每块的能
量)
%aecRefEnergyLow
gREFLO(在每块末的gREF1和gREFJ的较小
者)
%aecRefEnergyHigh
gREFHI(在每块末的gREF1和gREPJ的较大
者)
%aecUpdateNoise
gBASE(每块的基线修正系数值)
%aecUpdatePeak
gpeak(每块的峰值修正系数值)
%aecPeakToNoise
gRATIU(每块的修正峰值对基线之比)
%aecUpdateGauge
gSTATUS(回声消除器状态规范)
%aecSuppHigh
gCANCEL(表明回声消除程度的标志)
%aecSupp
gSUPP(整个回声压制水平的量度)
%在运行此文本以前,设置以下变量:
%inFile=输入文件名称,left=远端,right=近端。
%OutFile=输出文件名称,letf=nlp输出,right=aec输出。
%所有文件使用DAT-link的原始格式。
%分数表示的最大正值。
ONE=32767/32768;
fidIN=fopen(inFile,‘r’);
if fidIn=-1
error([‘Error Opening file’inFile])
end
fidout=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 the
Last values
nlpRefEnyelope=0;
nlpRefFloor=0;
aecSupp=ONE;
aecSuppLast=ONE;
nlpGaim=2*ONE;%Comment out this Line to use the Last
values
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=1:NBLOCKS,
block %显示块数指示过程
%清除块累加器
aecInEnergy=0;
aecOutEnergy=0;
aecRefEnergyO=0;
aecRefEnergyN=0;
aecUpdate=Zeros(TAPS,1);
%复位块浮点变量
aecShiftPending=0;
aecErrorShift=0;
%执行基于样本的处理
for K=1:BLOCK_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):-1:2;
%aecEchoEst=aecEchoEst+aecRef(m*64-63:m*64)*
% aecCoef(m*64-63:m*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(1:128)Λ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 Last
output。
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+1:
Sample))]’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_SC
ALE)])
%disp([’aecRefEnergyN=’dec2hex(aecRefEnergyN*ENERGy
_SCALE)])
%disp([’aecErrorShift=’dec2hex(aecErrorShift+(aecError
Shift<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,ONE])。
%在下游处理中使用的规范是相同的,尽管峰值对噪声比随块尺
%寸改变并且噪声阈值可能改变。
%对于近端话音/噪声或远端周期性信号(元音),规范=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 &…
%((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’),Pause
end
Clear LRmatrix MAX_GAIN_THRESH NOISE_THRESH UPDA
TE_GAUGE_SCALER Profile k Clear aecOut nlp Out Sample aecRef
nlpRef Envelope nlpOut Last block m Clear aecRef Energyo aec
RefEnergy N aecRefEnergyLow aecInEnergy aecOut Energy Clear
aecUpdate aecEchoEst aecIn nlpIn nlpRef nlp Ref Envelope nlp
Delta Clear aecUpdateNoise aecUpdatePeak aecPeakToNoise
aecUpdate Gauge aecSuppHigh
Clear aecSupp aecGain aecRefIn aecUpdate Peak2
UPDATE_GAUGE_SCALER Clear aecShift Pending aecError Shift ASM
T BLOCK_BITS ONE ENERGY_SCALE Clear aecReakSupp aecSuppLast
nlpGain aecRefEnergyHigh
fclose(fidIn);
fclose(fidOut);
Clear fidIn fidOut
]]>