通信系统及其方法

文档序号:7863476阅读:481来源:国知局
专利名称:通信系统及其方法
技术领域
本发明涉及音调(tone)指示,更具体地说,涉及通信系统中的音调指示方法和设备。
背景技术
在通信网络(例如在公共交换电话网(PSTN)或分组电话(PT)网)中使用回波消除,通过消除或减少来自电信网络的电回波或线路回波,来确保语音质量。这种电回波或线路回波的来源可能是混合电路的阻抗失配,混合电路是一种用于将来自四线通信网络接口的信号转换到二线用户环路,以及将来自二线用户环路的信号转移到四线通信网络接口的装置。通信网络中延迟较长的回波值得注意,它会在电话语音通信中产生显著或者甚至无法忍受的干扰。于是,需要一种回波消除器,所述回波消除器能够完全消除电信网络内的回波,或者将其降低到能够接受的水平。另外,需要一种能够在保持稳定性的同时,检测通过电信网络接收的音调的回波消除器。


下面举例说明本发明,本发明不受附图限制,附图中,相同的附图标记表示相同的部件,其中图1图解说明根据本发明一个实施例的通信系统;图2根据本发明的一个实施例,图解说明图1的通信系统的回波消除器;图3根据本发明的一个实施例,图解说明图2的回波消除器的近端信号检测器;图4根据本发明的一个实施例,图解说明图2的回波消除器的自适应滤波器;图5根据本发明的一个实施例,图解说明图2的回波消除器的非线性处理器;图6-8根据本发明的一个实施例,图解说明图2的回波消除器的监视和控制单元的各个部分;图9根据本发明的一个实施例,以流程图的形式图解说明图2的回波消除器的操作;图10-13根据本发明的一个实施例,以流程图的形式图解说明图2的回波消除器的近端信号检测器的操作,和备份并恢复图2的回波消除器的自适应滤波器的滤波器系数的方法;图14根据本发明的一个实施例,以流程图的形式图解说明监视图2的回波消除器的增益的动态增益控制方法;图15根据本发明的一个实施例,以流程图的形式图解说明监视图2的回波消除器的自适应滤波器的滤波器系数的分布的滤波器系数监视方法;图16-19根据本发明的一个实施例,以流程图的形式图解说明图2的回波消除器中的非线性处理器的操作;图20-24根据本发明的一个实施例,以流程图的形式图解说明纯延迟的估计和稀疏窗口的位置;图25-27根据本发明的一个实施例,以流程图的形式图解说明音调检测的方法;图28-36根据本发明的一个实施例,以流程图的形式图解说明缩短回波路径扫描的方法;和图37-38根据本发明的一个实施例,图解说明脉冲响应的例子。
本领域的技术人员会认识到出于清楚简单的目的,图解说明了附图中的部件,并且附图中的部件不必按比例绘制。例如,相对于其它部件,可放大附图中的一些部件的尺寸,以帮助理解本发明的实施例。
具体实施例方式
这里使用的术语“总线”指的是可用于传送一种或者更多的各种信息,例如数据、地址、控制或状态信息的多个信号或导体。可关于是单一导体,多个导体,单向导体或双向导体,举例说明或描述这里讨论的导体。但是,不同的实施例可改变导体的实现。例如,可使用独立的单向导体,而不是双向导体,反之亦然。另外,可用连续地或者以时分多路复用方式传送多个信号的单一导体替换多个导体。同样地,传送多个信号的单个导体可被分离成传送这些信号的子集的各个不同导体。于是,存在传送信号的许多选择。
当涉及使信号、状态位或者类似设备分别变成其逻辑真状态或逻辑假状态时,使用术语“断言”和“否定”。如果逻辑真状态是逻辑电平1,那么逻辑假状态是逻辑电平0。如果逻辑真状态是逻辑电平0,那么逻辑假状态是逻辑电平1。符号“*”和“·”均表示乘法运算。可使用FIFO或其它类型的数据存储器提供在整个本发明文献内使用的延迟。
另外,注意在这里的描述中,通常与每个相关的附图一致地使用变量名。不过,一些变量名可被重复使用,指示不同组的相关附图中的不同事物。例如,关于特定的一组附图,M可能指的是测量周期,关于不同的一组附图,M可能被用作计数器值。不过,当使用下面的等式和附图中的每个变量名时,将提供它们的描述。
连接性图1图解说明通信系统10的一个实施例。通信系统10包括发射器/接收器12,接口13,混合电路16,回波消除器20,通信网络24,回波消除器22,接口15,混合电路18和发射器/接收器14。接口13包括混合电路16,接口15包括混合电路18。发射器/接收器12与混合电路16双向耦接(其中在一个实施例中,发射器/接收器12通过诸如双绞线之类的二线连接,与混合电路16耦接)。混合电路16与回波消除器20耦接,通过单向导体向回波消除器20提供发送信号Sin 37,并通过单向导体接收来自回波消除器20的接收信号Rout 40(在一个实施例中,Sin 37和Rout 40均通过线对提供和接收)。回波消除器20与通信网络24耦接,并将消除回波的发送信号Sout 42提供给通信网络24,接收来自通信网络24的Rin 43。
类似地,发射器/接收器14与混合电路18双向耦接(在一个实施例中,发射器/接收器14通过诸如双绞线之类二线连接,与混合电路18耦接)。混合电路18通过向回波消除器22提供信号的单向导体,和接收来自回波消除器22的信号的单向导体,与回波消除器22耦接(在一个实施例中,每组单向导体可以是双绞线)。回波消除器22可与通信网络24耦接,向通信网络24提供消除回波的发送信号,并接收来自通信网络24的接收信号。控制装置17可以是包括根据需要,可被提供给发射器/接收器12、混合电路16、回波消除器20、通信网络24、回波消除器22、混合电路18和发射器/接收器14的一个或多个控制信号的控制总线。于是,在一个实施例中,控制装置17与通信系统10内的每个单元耦接,而在备选实施例中,这些单元中只有一部分需要与控制装置17通信。
图2图解说明图1的回波消除器20的一个实施例(注意在参考图2说明的实施例中,回波消除器20被称为近端回波消除器,而回波消除器22被称为远端回波消除器。但是,应认识到在回波消除器22位于通信系统10的近端,而回波消除器20位于通信系统的远端的情况下,图2中图解说明的回波消除器也可以指的是回波消除器22)。回波消除器20包括DC陷波滤波器45,可选的非自适应滤波器31,加法器34,可选的非自适应滤波器35,增益控制器33,非线性处理器32,近端信号检测器26,自适应滤波器28,监视和控制单元30,DC陷波滤波器49,和加法器36。DC陷波滤波器接收Sin 37,将Sin 38输出给近端信号检测器26与监视和控制单元30。如果存在非自适应滤波器31,那么Sin还被提供给非自适应滤波器31,非自适应滤波器31被耦接,以便接收来自监视和控制单元30的控制,并将Sin 39输出给加法器34。但是,如果不存在非自适应滤波器31,那么Sin 38和输入加法器34的Sin 39相同。加法器34接收Sin 39和来自自适应滤波器28的回波估计信号48,并将误差信号46提供给增益控制器33,近端1信号检测器26及监视和控制单元30。增益控制器33与监视和控制单元30双向耦接,并被耦接成向非线性处理器32提供误差信号47。如果在回波消除器20中存在非自适应滤波器35,那么在一个实施例中,增益控制器33在同样接收误差信号46的非自适应滤波器35内,并且与监视和控制单元30双向耦接,并提供误差信号47。非线性处理器32与监视和控制单元30双向耦接,提供Sout 42。监视和控制单元30还与控制装置17耦接,接收Rin 43,向加法器36提供训练信号41,接收来自DC陷波滤波器49的Rin 44,并与自适应滤波器28和近端信号检测器26双向耦接。DC陷波滤波器49接收加法器36的输出(Rout 40),并将Rin 44提供给近端信号检测器26,自适应滤波器28及监视和控制单元30,加法器36接收训练信号41和Rin 43,并提供Rout 40。
图3图解说明图2的近端信号检测器26的一个实施例。近端信号探测器26包括近端信号电平估计器50,远端信号电平估计器52,Sin信号电平估计器54,背景处理器56,近端信号检测阈值选择器58,和近端信号检测器60。近端信号电平估计器50接收误差信号46,并与近端信号检测器60耦接。远端信号电平估计器被耦接成接收Rin 44,另外与近端信号检测阈值选择器58耦接。Sin信号电平估计器54被耦接成接收Sin38,另外与近端信号检测器60耦接。背景处理器56与监视和控制单元30,近端信号检测阈值选择器58和近端信号检测器60耦接。近端信号检测器60还与近端信号检测阈值选择器58及监视和控制单元30耦接。
图4图解说明图2的自适应滤波器28的一个实施例。自适应滤波器28包括自适应滤波器62,可选的非自适应滤波器64,和可选的延迟器66。假定非自适应滤波器64和延迟器66都存在于自适应滤波器28中,延迟器66接收Rin 44,并与非自适应滤波器64及监视和控制单元30耦接。非自适应滤波器64与延迟器66,自适应滤波器62及监视和控制单元30耦接。自适应滤波器62被耦接成接收误差信号46,并被耦接成提供回波估计信号48,另外还与监视和控制单元30耦接。如果不存在非自适应滤波器64,那么延迟器66直接与自适应滤波器62耦接。如果延迟器66不存在,那么非自适应滤波器64接收Rin 44。如果延迟器66和非自适应滤波器64都不存在,那么自适应滤波器62接收Rin 44。
图5图解说明图2的非线性处理器32的一个实施例。非线性处理器32包括信号电平估计器68,非线性处理器控制器74,和自适应背景电平估计器96,并与监视和控制单元30双向耦接。信号电平估计器68包括近端信号电平估计器70和远端信号估计器72。非线性处理器控制器74包括非线性处理器ON控制器76,非线性处理器OFF控制器78,舒适噪声发生器86,噪声电平匹配器82,和输出信号混频器84。自适应背景电平估计器96包括短期背景电平估计器88,背景噪声估计器控制器90,长期背景电平估计器92,和背景电平适配器94。近端信号电平估计器70接收误差信号47,并与非线性处理器ON控制器76和背景电平估计器控制器90耦接。远端信号电平估计器72接收Rin 44,并与非线性处理器ON控制器76,非线性处理器OFF控制器78,和背景电平估计器控制器90耦接。非线性处理器ON控制器76和非线性处理器OFF控制器78与噪声发生器86耦接,噪声发生器86与噪声电平匹配器82耦接。输出信号混频器84与噪声电平匹配器82耦接,接收误差信号47,并提供Sout42。短期背景电平估计器88与背景电平适配器94耦接,接收误差信号47。背景电平估计器控制器90与短期背景电平估计器88和长期背景电平估计器92耦接。长期背景电平估计器92接收误差信号,并与背景电平适配器94耦接,背景电平适配器94与噪声电平匹配器82耦接。
图6图解说明监视和控制单元30的一部分的一个实施例,它包括增益监视器100和滤波器系数监视器102。增益监视器100接收Sin 38,误差信号46,并与自适应滤波器28和增益控制器33耦接。滤波器系数监视器102与自适应滤波器28耦接。
图7图解说明监视和控制单元30的另一部分的一个实施例,它包括抽取滤波器104和108,抽取器106和110,近端信号检测器114,可选的比较器112,回波返回损耗增益值(ERLE)估计器116,功率估计器120和118,自适应滤波器系统128,和噪声发生器132。自适应滤波器系统128包括自适应滤波器122,最大值探测器124和延迟确定电路126。抽取滤波器104接收Rin 44,并与抽取器106耦接。抽取滤波器108接收Sin 38,并与抽取器110耦接。抽取器106与近端信号检测器114,功率估计器120和自适应滤波器122耦接。功率估计器120和近端信号检测器114与自适应滤波器系统128耦接。可选的比较器112(如果存在于监视和控制单元30中)接收误差信号46和Sin 38,并与自适应滤波器系统128耦接。抽取器110与功率估计顺118和自适应滤波器122耦接。功率估计器118与ERLE估计器116和自适应滤波器系统128耦接,自适应滤波器122与近端信号检测器114,ERLE估计器116和最大值探测器124耦接。最大值探测器124与向自适应滤波器28提供估计的延迟130的延迟确定电路126耦接。噪声发生器132接收Rin 43,并被耦接成将注入的信号41提供给加法器36。图7的该部分的监视和控制单元30也与控制装置17耦接。
图8图解说明监视和控制单元30的另一部分的一个实施例,包括存储器150,功率估计器134,平滑相关器152,和音调指示判定单元166。功率估计器134包括延迟器136,延迟器138,乘法器140和142,加法器144,幅度器(magnitude)146,和低通滤波器148。平滑相关器152包括延迟器154,乘法器156和158,低通滤波器160和162,和振荡器164。存储器150与延迟器136,延迟器138,低通滤波器148,延迟器154,低通滤波器160和162,和振荡器164耦接。延迟器136接收Rin 44或者Sin 38,并与延迟器138和乘法器142耦接。延迟器138与乘法器140和142,以及幅度器146耦接,幅度器146与低通滤波器148耦接,低通滤波器148与音调指示判定单元166耦接。延迟器154接收Rin 44或Sin 38,并与乘法器156耦接。乘法器158也接收Rin 44或Sin 38,并与低通滤波器160,振荡器164和乘法器156耦接。乘法器156接收延迟154,并与低通滤波器162和振荡器164耦接。音调指示判定单元166接收来自低通滤波器160的R0(n)和来自低通滤波器162的R1(n),并将音调指示器信号168提供给自适应滤波器28。
注意图1-8图解说明了通信系统10和回波消除器20内的各个块的一个实施例。备选实施例可包括不同于图示部件的各种部件,比图示部件更多的部件,或者比图标部件更少的部件,取决于所需的功能性。此外,图1-8内的各块可被不同地分组,或者不同地连接,仍然获得类似的结果。于是,图1-8只是意图提供用于图解说明将在下面讨论的原理的例子。另外,虽然图1-8中的连接被描绘成单一导体(单向或双向),或者被描绘成多个导体(单向或双向),不过可以使用各种不同的连接。例如,一个复接导体可由多个不同的单个单向或双向导体代替。类似地,单个导体可被扩展成多个单向或双向导体。信号可通过单个导体连续传送,或者可通过多个导体并行传送。另外,信号可通过单个导体或者多个导体被时分多路复用。于是,在仍然获得所需的功能性的时候,可用各种不同的方式实现图1-8中图解说明的连接。另外,如下进一步所述,图1-8的设计可用硬件、软件或者硬件和软件的组合来实现。
操作发射器/接收器12往来于混合电路16提供和接收数据。混合电路16提供发射器/接收器12和通信网络24之间的四线-二线转换。于是,发射器/接收器12可以是通过二线用户线路与混合电路16耦接,用于通过通信网络24执行通信的任意设备,例如电话机或者调制解调器。于是,混合电路16提供本地用户环路(具有发射器/接收器12)和通信网络(通信网络24)之间的接口。发射器/接收器14和混合电路18在功能上分别类似于发射器/接收器12和混合电路16。
在发射器/接收器12和发射器/接收器14之间的通信中,电回波或线路回波由混合电路16和混合电路18引入通信中。这种回波的来源是混合电路16内的阻抗失配,以及混合电路18内的阻抗失配。例如,如果混合电路16内的阻抗被完美匹配,那么来自接收信号Rout 40的所有能量将被传送给发射器/接收器12。但是,如果在混合电路16内存在任意阻抗失配,那么来自接收信号Rout 40的一些能量会通过发送信号Sin 37被反射回去。如果(就混合电路16引入的回波来说,从发射器/接收器)通过通信网络24的往返延迟足够长,那么在通信期间,发射器/接收器14从Sin 37接收的反射回波将是值得注意的。这会在电话语音通信期间导致显著的回波或者甚至不可忍受的干扰。在一个例子中,足够长的延迟指的是大于40毫秒的往返延迟。当往返延迟增大时,回波变得更坏,从而更显著和更具有破坏性(另一方面,如果往返延迟显著较小,那么由于回波与侧音难以区分,因此回波可能不是破坏性的)。往返延迟可包括各种不同的延迟或者各种不同延迟的组合,包括传输延迟,处理延迟,计算延迟等。根据通信系统,往返延迟可能足够大,足以破坏通信。于是,可使用回波消除器20和22来减少通信系统10中的线路回波。例如,借助回波消除器20处理混合电路16从通过Rout 40(自发射器/接收器14)接收的信号引入的,并通过Sin 37反射的回波,以便在通过通信网络24,将信号Sout 42发送回发射器/接收器14之前减少反射回波。
如上所述,线路回波由混合电路16内的阻抗失配和混合电路18内的阻抗失配引起。另外,通过发射器/接收器12和发射器/接收器14,声回波可被引入到通信中。例如,如果发射器/接收器12是扬声器电话,那么在通过扬声器输出之后,接收信号将环绕周围环境弹回,一些信号会被重定向到发射器/接收器12的麦克风,还被反射回发射器/接收器14。在一个实施例中,回波消除器20还起除了减少线路回波之外,减少声回波的一些特征的作用。
在一个实施例中,通信网络24可包括分组电话网(例如包括基于网际协议(IP)的话音,基于分组的数据,异步传输模式(ATM)等,并且可应用于无线或有线系统)或者公共交换电话网(PSTN)。在备选实施例中,通信系统10可以指的是任意类型的通信系统。任意通信路径可被用作接口13或接口15。
控制装置17提供发射器/接收器12和14,混合电路16和17,回波消除器20和22,以及通信网络24之间的控制路径。通过控制装置17传送的控制信号一般不是在线信号。例如,控制装置17可包括启用或禁用回波消除器20或22的启用/禁用信号。控制装置17还可包括指示电话机是挂机还是摘机的信号。
在这里说明的实施例中,发射器/接收器12将被称为相对于回波消除器20的近端,发射器/接收器14将被称为相对于回波消除器20的远端。于是,这里将参考回波消除器20说明实施例;但是应明白回波消除器22类似于回波消除器20工作。即,在备选实施例中,发射器/接收器14可被称为相对于回波消除器22的近端,发射器/接收器12可被称为相对于回波消除器22的远端。
图2图解说明回波消除器20的一个实施例,这里,如上所述,发射器/接收器12是近端,发射器/接收器14是远端。Sin 37是通过混合电路16,从发射器12发出的发送信号。回波消除器20通过通信网络24和混合电路18,向接收器14提供消除回波的发送信号Sout 42。Rin 43是通过混合电路18和通信网络24,从发射器14接收的接收信号。回波消除器接收Rin 43,并通过混合电路16,将该发送信号Rin 43作为Rout 40提供给接收器12。
如上所述,Sin 37可包括由混合电路16内的阻抗失配引入的反射回波。于是,回波消除器20减少(或消除)引入的反射回波,并提供消除回波的发送信号Sout 42。即,如果混合电路16中的阻抗被完美匹配,那么在混合电路16的输入端接收的信号(例如Rout 40)实际上不会导致源于混合电路16的任何响应(在Sin 37),因为不存在任何反射回波(在理想的,但是实际上不可能达到的情况下)。但是,如果混合电路处于不平衡状态(一种典型情况,例如阻抗被失配),那么通过Rout 40接收的信号导致如图37中所示的响应。图37中图解说明了从其输入(Rout 40)和输出(Sin 37)的观点来看,混合电路的对应脉冲响应(h)。回波消除器20内的自适应滤波器28试图模仿(对任意输入信号Rout 40)Sin 37的混合响应,并通过加法器34扣除所述混合响应。注意信号Rout40线性失真(包括其在时间上的纯移位,即,在时间上它被移动称为纯延迟的参数)。可在图37的混合电路16的脉冲响应中图解说明这种失真。注意脉冲响应包括纯延迟部分和发散时间。纯延迟指的是从起点到开始出现某些有效值为止的那部分脉冲响应,由图37中的T1表示。发散时间指的是从开始发生有效响应到响应几乎显示为止的那部分脉冲响应持续时间,由图37中的T4+T2表示。脉冲响应的形状(按照与发散时间段对应的部分)可被转换成混合电路的频率特性(从Rout 40/Sin 37输入/输出端口看来)。
Sin 37被提供给DC陷波滤波器45,以便从Sin 37除去DC分量。注意在备选实施例中,代替DC陷波滤波器45,可使用高通滤波器。类似地,加法器36的输出(Rout 40)被提供给DC陷波滤波器49,以便从Rout 40除去DC分量(但是在备选实施例中,可改为使用高通滤波器)。DC陷波滤波器的使用在计算上比高通滤波器更简易,另外不会导致波纹效应,这有助于在滤波器的通带内使增益保持平直。在备选实施例中,可使用单个共用DC陷波滤波器来实现DC陷波滤波器45和DC陷波滤波器49的功能。
注意加法器36接收Rin 43和训练信号41,并以输出Rout 40的形式,提供这两个信号之和;但是,如果训练信号41为0,那么输出Rout40完全与输入Rin 43相同。对于下面的讨论,将假定训练信号41为0,并且Rout 40等于Rin 43。另外,注意非自适应滤波器31和非自适应滤波器35是可选的,并将在下面进一步讨论。对于下面的讨论,将假定Sin38和Sin 39相等,误差信号47是调节增益后的误差信号46,不存在非自适应滤波器35的影响。
于是,Sin 39是包括发射器12传送的任意近端谈话者信号(Sgen)和混合电路16从Rout 40引入的任意反射回波的发送信号。于是,Sin 39可被表示成“Sgen+回波”。自适应滤波器28将反射回波的估计,回波估计信息48提供给加法器34,加法器34输出误差信号46。于是,误差信号46可被表述成“Sin 39-估计的回波48”,或者代入上面的Sin 39的表达式,表述成“Sgen+回波-估计的回波”。当估计的回波是准确的(即等于或基本等于实际回波),那么误差信号46将只包括Sgen,而不包括任意实质回波。这是理想的情况。但是,如果估计的回波不准确,那么误差信号46将包括Sgen和残留的回波分量。这种情况下,误差信号46可被表述成“Sgen+残留回波”,这里残留回波是“回波-估计的回波”。当不存在Sgen(即,当近端无声,意味着未从发射器12传送任何信号)时,误差信号46只代表残留回波。这种情况下,误差信号46可被用于执行自适应过程,以使残留回波降至最小,下面将更详细地说明。但是,如果存在Sgen,那么误差信号46不能被用于执行自适应过程,因为自适应滤波器28使用误差来修改,在存在Sgen的情况下,误差信号46不再只是误差。于是,必须检测Sgen,以便确定是否可执行自适应过程。被耦接成接收Sin 38(在本例中,它等于Sin 39)和Rin 44,使用误差信号46和来自监视和控制单元30的控制信号检测Sgen的存在(即,检测位于发射器12的近端谈话者的存在)。
在自适应滤波器28中,依据y(k)=XT(k)·H(k),这里X(k)=[x(k),x(k-1),…,x(k-N+1)]T,计算的回波估计信号48是在FIR滤波器跨距的持续时间内延伸的输入信号矢量;x(n)=Rin 44。H(k)是第k次迭代的滤波器系数矢量,这里H(k)=[h0(k),h1(k),…hN-1(k)]T。滤波器系数的实际更新由通用LMS型算法H(k+1+=H(k)+step_size·error(k)·X(k)控制,其中error(k)对应于误差信号46;step_size控制自适应率;H(k+1)是新的滤波器系数矢量。
借助非线性处理器32,可进一步减小或消除误差信号46中的任意残留回波。非线性处理器32接收误差信号47(本实施例中,它是增益调整后的误差信号46),并控制来自监视和控制单元30的信号,产生Sout 42,理想情况下,Sout 42不包括任何回波。除了减少或消除残留回波之外,非线性处理器32还试图保持或匹配近端谈话者信号(Sgen)的背景噪声。匹配背景噪声便于通过保持背景噪声的连续性,改进通信质量。在不存在这种连续性的情况下,当远端谈话时,远端收听者只能听到近端谈话者的无声。另一方面,当远端谈话时,可提供合成的背景噪声;但是,这会导致真实背景噪声(当近端谈话时)和合成的背景噪声(当远端谈话时)之间的破坏性(disruptive)转换。于是,匹配背景噪声有助于使这种破坏性转换降至最小。
监视和控制单元30包括用于确定是否存在真实的混合电路,以致自适应滤波器28不设法适应单个混合电路的滤波器系数监视器(例如后面参考图6进一步说明的滤波器系数监视器102)。监视和控制单元30还包括增益监视器,用于控制可选的自适应滤波器35内的增益控制器33。增益控制器33的一个用途是保持通信系统10的稳定性。监视和控制单元30还包括纯延迟确定器和稀疏窗口探测器(后面将参考图7更详细地说明这两者),以便提高自适应滤波器28的效率。监视和控制单元30还包括音调指示器和音调检测器(后面参考图8更详细说明)。音调指示器和音调检测器可被用于检测通信系统10内的信令音调。这些信令音调可包括,例如当在信令音调之后将发送数据时,具有禁用回波消除器的反相的2100Hz音调。于是,可根据需要禁用回波消除器。另一方面,如果使自适应滤波器28暴露于发射器12或发射器14传送的音调之下(例如,单频或多频正弦波),那么会导致通信系统10的不稳定。于是,音调的检测可用于防止自适应滤波器发散和导致不稳定性。
在上面说明的实施例中,回波消除器20不包括非自适应滤波器31和35。但是,在备选实施例中,耦接在DC陷波滤波器45和加法器34之间的非自适应滤波器31可被用于减小自适应滤波器28的长度(参考图4进一步说明)。在该实施例中,非自适应滤波器31接收Sin 38,和来自监视和控制单元30的控制信号,产生Sin 39。另外,在具有非自适应滤波器31的一个实施例中,回波消除器还可包括耦接在加法器34和非线性处理器32之间的非自适应滤波器35。非自适应滤波器35可包括增益控制器33或者可以是独立单元。在该实施例中,非自适应滤波器35补偿非自适应滤波器31的影响,从而近端信号Sgen不失真。非自适应滤波器35接收误差信号46,来自监视和控制单元30的控制信号,并将误差信号47提供给非线性处理器32(下面将参考图4,进一步说明非自适应滤波器31和35)。
监视和控制单元30还向加法器36提供训练信号41,以便将信号注入Rin 43中,产生Rout 40。训练信号41的注入可被用于估计混合电路回波路径(从Rout 40开始,通过混合电路16,返回Sin 37的路径)的纯延迟。纯延迟指的是从Rout 40到Sin 37的最小时间延迟。当开始通信(例如开始电话会话),缺少远端信号时,训练信号41的注入可被用于估计纯延迟。注意训练信号41是可选的。监视和控制单元30还接收控制17,以便启用或禁用全部或部分功能模块。
图9包括根据本发明的一个实施例,图解说明回波消除器200的操作的流程200。流程200是回波消除器,例如图2的回波消除器20提供的功能性的概述。后面将参考图3-8和10-38,更详细地提供流程200内的每个步骤的细节。流程200始于开始202,并进入方框204,对Rin和Sin执行DC陷波滤波。注意如果存在加法器36,或者存在训练信号41,那么对加法器36的输出(Rout 40),而不是对Rin 43执行DC陷波滤波。如上所述,DC陷波滤波器45从Sin 37除去DC分量,产生Sin 38。类似地,DC陷波滤波器49从Rin 43(或者Rout 40,取决于训练信号41)除去DC分量,产生Rin 44。流程200随后进入方框206,估计Rin44的长期功率和Sin 38的短期功率。注意长期功率和短期功率是相对项。即,长期功率指的是与短期功率相比,在较长的一段时间内测量的功率。这些功率可由回波消除器20的近端信号检测器26计算。
在方框206中计算的功率随后被用于确定近端谈话者信号检测(NESD)阈值。该NESD阈值随后将被用于确定近端谈话者信号(即Sgen)的存在。该确定也可由回波消除器20的近端信号检测器26完成。流程200随后进入方框210,监视和控制自适应滤波器28。方框210包括方框209、211和213。注意监视和控制自适应滤波器方框210内的功能是可选的。即,可执行方框209、211和213的任意组合,或者都不执行。在方框209中,执行音调指示处理。该音调指示处理可由监视和控制单元30执行,如上参考图2所述,并且将参考图8进一步说明。流程200随后进入方框211,检测延迟(在一个实施例中,检测纯延迟),并安置具有恰当大小的滤波窗口(稀疏窗口)。即,监视和控制单元30可检测延迟并安置稀疏窗口,以致减小自适应滤波器28的长度(即,抽头的数目)。
另一种缩短自适应滤波器长度的方式由方框213实现。一个实施例是结合自适应滤波器28使用非自适应滤波器31和33的组合,但是具有更短的滤波器长度。细节将在图28-35中提供。
在监视和控制自适应滤波器210之后,流程200进入方框212,自适应滤波器被用于产生回波估计信号。例如,这可对应于产生回波估计信号的自适应滤波器28,如上参考图2所述。流程200随后进入方框214,估计误差信号和误差信号的短期功率。即,方框214可对应于图2的加法器34,它通过从Sin 39减去回波估计信号48,估计误差信号46。监视和控制单元30随后可被用于估计误差信号46的短期功率。
之后,流程进入方框216,使用NESD阈值检测近端谈话者信号。即,在方框216中,检测Sgen是否存在(是否正从图1的发射器12传送信号)。这可由图2的近端信号检测器26执行。流程进入方框218,监视并选择性地调整增益控制器33的增益,以保持自适应滤清器28以及通信系统10的稳定性(其细节将在后面更详细地说明)。流程200随后进入判定菱形框220,确定是否需要更新滤波器系数。例如,如上所述,如果存在Sgen,那么误差信号46包括近端谈话者信号(Sgen)和残留回波分量。这种情况下,不应更新自适应滤波器28,因为误差信号46并不仅仅表示残留回波。流程随后进入判定菱形框224。但是,如果确定Sgen不存在(即,近端谈话者无声),那么可更新自适应滤波器28,流程进入方框222,在继续执行到判定菱形框224之前,更新自适应滤波器28的滤波器系数。
在判定菱形框224,确定是否需要任意背景处理。在一个实施例中,在回波消除器20的操作中,定期执行背景处理。在备选实施例中,可在不同的时间执行背景处理,例如响应各种自适应滤波器处理状态。如果将不执行背景处理,那么流程进入方框230,执行非线性处理。但是,如果要执行背景处理,那么流程进入方框226,备份滤波器系数。即,自适应滤波器28的滤波器系数可被保存(例如保存在可位于回波消除器20内,或者位于回波消除器20外的存储单元中)。流程随后进入方框228,监视滤波器系数,确定是否存在关于回波消除器稳定性控制的混合电路。
在背景处理(如果有的话)之后,流程进入非线性处理,减少或消除任意剩余的残留回波,如果需要的话,插入背景噪声。如果存在通过Rin 43和Sin 37接收的更多样本(在判定菱形框232),那么返回方框204继续处理下一样本,否则在结束方框234完成该流程。注意在电话应用中,信号的采样速率通常为8kHz,因为信号通常包括语音。于是,在一个实施例中,采样速率为8kHz,每00.125毫秒接收Rin 43和Sin 37的一个样本。但是,在备选实施例中,可使用不同的采样速率。例如,对于音乐应用来说,通常需要较高的采样速率。此外,在数字应用中,采样速率取决于数字信息的传输速率。
注意图9中的步骤代表本发明的一个实施例。备选实施例可按照不同的顺序执行这些步骤,甚至可更多地,更少地,或者与其它步骤同时执行一些步骤。另外,流程200中的一些步骤是可选的,而其它实施例可使用另外的或不同的步骤来完成任意所需的操作。于是,本领域的普通技术人员应认识到许多变化是可能的,流程200只是回波消除器的操作的一个例子。类似地,回波消除器20也仅仅举例说明一个可能的实施例。备选实施例可使用更多或更少的块或单元来执行图2中图解说明的全部,部分功能,或者甚至与图2中图解说明的功能不同的功能。于是,图2的回波消除器20只应被看作一个例子。另外注意图2中的块和图9中的步骤都可由运行于数据处理器(例如微处理器,数字信号处理器等)上的软件,硬件,或者硬件和软件的组合来实现。
图3图解说明近端信号检测器26的一个实施例。参考图10-13说明近端信号检测器26的操作。近端信号检测器26和图10-13的流程为不受回波路径延迟和回波返回损耗(ERL)影响的快速可靠检测创造条件,回波返回损耗(ERL)是由于回波路径中的传输损耗和混合电路损耗的缘故,从回波消除器的Rout端口到Sin端口的信号的衰减。当检测到近端谈话者信号时(即,当检测到Sgen的存在时),如上所述停止(影响自适应滤波器28的系数,以使残留回波的平均功率降至最小的)自适应过程,以防止自适应发散,因为近端谈话者信号的存在表示误差信号46并不仅仅是起因于回波的误差。注意当检测到近端信号时,停止自适应过程,而不管近端信号是在单方谈话情形内(即只存在近端谈话者)还是在双方谈话情形内(当存在近端谈话者和远端谈话者时)。除了停止自适应过程之外,可能需要从备份的滤波器系数恢复滤波器系数。此外,当近端和远端信号都不存在时,自适应过程也被暂停,防止回波消除器20适应通道噪声或者低误差信号,从而使计算降至最小。于是,当需要时,例如当远端信号相对强,并且不存在近端信号时,回波消除器20工作从而执行适应。这种情形下,自适应滤波器28可被适应,以便正确地估计回波作为回波估计信号48。另外,如下所述,根据自适应滤波器处理的状态,调节近端谈话者信号检测的阈值。
图10-13中讨论的实施例还提供一种备份和恢复自适应滤波器28的系数的方法。该过程可由状态机管理,如图13中所示,状态机使备份的次数和频率降至最小,并防止自适应滤波器28发散。
图3图解说明近端信号检测器26的一个实施例。信号电平估计器跟踪近端信号(Sgen),远端信号(Rin)和发送路径输入信号(Sin)的电平。于是,近端信号电平估计器50接收误差信号46,远端信号电平估计器52接收Rin,Sin信号电平估计器54接收Sin 38。信号电平估计器随后被用于控制近端信号检测(NESD)阈值选择器58和近端信号检测器60。背景处理器56监视自适应滤波器28的处理状态,并控制NESD阈值选择器58和近端信号检测器60。注意通常每个信号电平估计器可对要测量的信号应用一个低通滤波器,可在功率或者幅度方面执行估计。另外,下面的图3和10-13的说明假定以8 kHz的速率对信号采样(如上所述,8kHz是常规语音应用的常见速率)。
Sin信号电平估计器54的一个实施例利用下面的等式,获得Sin的功率(PSin)等式1PSin(n)=[(N-1)PSin(n-1)+(Sin(n))2]/N在上面的等式中,Sin(n)是在时间n,给回波消除器20的发送路径输入,PSin(n)是在时间n,估计的发送路径输入信号功率,N是平滑因子,在一个实施例中,N被假定为32。在备选实施例中,可使用一系列的N值。通常,N应被选择为足够大,以致关于Sin的功率估计不会对Sin的快速变化过于敏感。另一方面,N不应被选择为过大,以致Sin的功率估计足够敏感,足以跟踪语音信号电平的变化,并且功率估计的延迟最小。另一方面,可利用窗口尺寸为2*N-1样本的移动平均方法,估计功率。可证明该方法向按照等式1的功率估计器提供等同的带宽。
近端信号电平估计器50接收误差信号46,并获得时间n时的近端信号功率。不过如上所述,不存在对回波消除器20的近端信号(Sgen)的直接访问。即,Sin是Sgen和来自Rin 44的反射回波的混合物。于是,近端信号电平估计器50的一个实施例使用Sin 39(它是滤波后的Sin 38,假定在图2中的DC陷波滤波器45和加法器34之间存在一个滤波器)和回波估计信号48之间的差值。于是,误差信号46被提供给近端信号电平估计器50。误差信号46是回波消除器20可用的Sgen的最接近估计值,但是该估计的精度是自适应滤波器28的收敛状态的函数。理想地,当自适应滤波器完全会聚时,回波的估计值(回波估计信号48)是准确的。实际上,如上所述,回波估计信号48通常不等于来自Rin 44的反射回波,于是,误差信号46并不仅仅是Sgen,而是Sgen+残留回波。当自适应处理在某一时间窗口内继续时,残留回波引入的误差被最小化。于是,近端信号电平估计器50的一个实施例使用下述等式等式2Perror(n)=[(N-1)Perror(n-1)+(误差信号46)2]/N在上面的等式中,误差信号46是加法器34的输出端的,Sin 39和回波估计信号48之间的差值,Perror(n)是时间n的估计近端信号功率,N是估计器的平滑因子(本实施例中为32)。
远端信号电平估计器52的一个实施例获得Rin的短期功率,并用其计算覆盖回波路径的范围的Rin的一些过去的短期功率估计值的Rin平均功率。例如,一个实施例利用下面的等式确定Rin的短期功率等式3PRin(kN)=1NΣi=0N-1(Rin(kN-i))2,k=1,2...]]>在上面的等式中,Rin(kN-i)是在时间kN-i,给回波消除器20的接收路径输入,PRin(kN)是在时间kN的估计远端信号功率(注意每N个样本,而不是每个样本估计PRin(kN),以减少计算成本)。N是窗口尺寸(本实施例中为32)。于是,等式4每N个样本计算当前窗口(大小为N)内的Rin的功率,k记录窗口。即,第一个窗口(k=1)可由样本1-32定义,下一窗口(k=2)可由样本33-64定义等。随后可利用下述等式获得远端信号的平均功率等式4AVGPRin(kN)=1MΣi=oM-1PRin((k-i)N),k=1,2,...]]>在上面的等式中,PRin((k-i)N)是在时间(k-i)N,远端信号功率估计值的过去M个瞬象,这里i=M-1,M-2,…,0。AVG PRin(kN)是在时间kN,远端信号电平估计值的平均值,M是用于平均的窗口尺寸,这里对于用于覆盖高达64毫秒的回波路径延迟的回波消除器来说,M=16(即M*N=16*32=512个样本)。例如,如果当前窗口是第16个窗口(即,k=16),那么AVG PRin(kN)采取关于前16个(即M个)窗口计算的PRin(kN)的平均值,即PRin(16*N),PRin(15*N),…,PRin(2*N),PRin(N)的平均值。如果不存在足够的在先数据(即,已处理不到M个窗口),那么只有那些存在的值可被用于确定平均值,0可被用于还没有计算的值。例如,对于第3个窗口(即,k=3),只存在两个在先PRin(kN),于是,AVG PRin(kN)应是3个值的平均值,而不是M个值的平均值。另外注意每N个样本计算AVG PRin(kN),如参考图10中所示,并且在计算AVG PRin(kN)之后,递增k的值,以指示开始N个样本的下一窗口。
在备选实施例中,远端信号估计器52能够利用上面的等式1或2估计Rin的平均功率,N=256。如同等式4一样,也应每32个样本执行AVGPRin(kN)的测量。另外注意可利用幅度而不是功率执行所有上面的电平估计。另外注意上面的等式1和2以标称速率处理数据,而等式3和4对连续的大小为N的窗口执行子速率计算(从而每N个样本执行一次计算)。备选实施例可按照任意方式构成上述等式,并不局限于上面给出的那些等式。
近端信号(Sgen),远端信号(Rin)和发送路径输入信号(Sin)的电平估计被用于近端谈话者信号检测的控制。于是,图10表示了图9的确定近端信号检测阈值(NESD-Threshold)的方框206和208的一个实施例。每N个样本重新评估一次该阈值,这里在本实施例中,N是32。在方框250中,确定Rin的短期功率PRin(例如参见上面的等式3),这里当前时间n对应于正被分析的当前样本。在方框252中,样本计数器被递增,从而提供新的n值。于是在每次通过图9的流程200中(从而在每次通过方框206和208中),样本计数器被递增。
流程进入判定菱形框254,确定样本计数器是否已达到窗口尺寸N。如果否,那么流程进入方框270(注意NESD-Threshold不被更新)。在方框270中,计算Sin的功率(PSin)(例如参见上面的等式1)。如果样本计数器已达到N,那么流程进入方框256,计数器被重置,以致每N个样本才采用方框256-268的路径(在一个实施例中,在N为32的情况下,每32个样本重置计数器)。在样本计数器被重置(在一个实施例中,重置为0)之后,流程进入方框258,计算Rin的平均功率AVG PRin(例如参见上面的等式4)。之后,流程进入判定菱形框260,确定BACKUP_STATE是否为0或1(注意将参考图13更详细地说明BACKUP_STATE)。如果是,那么流程进入方框262,使用K1调整NESD_Threshold,如下面的等式5中所示等式5NESD_Threshold=K1*AVG PRin但是,如果BACKUP_STATE不为0或1,那么流程进入方框264,使用K2调整NESD_Threshold,如下面的等式6中所示等式6NESD_Threshold=K2*AVG PRin于是,每N个样本重新评估一次NESD_Threshold,并且根据自适应滤波器的状态(即BACKUP_STATE,对应于将参考图13进一步说明的状态机),NESD_Threshold可被确定为K1*AVG PRin或K2*AVGPRin。K1和K2是NESD_Threshold缩放因子。在自适应滤波器28的自适应过程的初始阶段中(即,当BACKUP_STATE为0或1时),NESD_Threshold可以相当大,向自适应滤波器28提供更多的适应机会。另一方面,当自适应滤波器28通过初始自适应阶段时(即,当BACKUP_STATE为3或4时),NESD_Threshold可被减小,以防止自适应处理发散。在一个实施例中,K1被设置成在1-2的范围内的值,而K2被设置成在0.25-1的范围内的值。例如,在一个实施例中,K1为1,K2为0.5,取决于混合电路情况。此外,在自适应处理中,K1和K2的这些值可被静态或者动态地设置。可以使用在上面给出的范围之外的备选值,除了使用具有4种状态(例如BACKUP_STATE 0-3)的状态机之外,可以使用其它方法来确定何时自适应过程仍然处于其初始阶段。
在方框262或264中调整NESD_Threshold之后,流程进入判定菱形框266,确定NESD_Threshold是否小于A。如果否,那么流程进入方框270,计算PSin。如果是,那么在方框268中NESD_Threshold被设置成A。即,在AVG PSin太小的情况下,NESD_Threshold局限于A的最小水平(在一个实施例中,A可能对应于在-40~-45dBm0范围中的一个值)。流程随后进入方框270。
在完成图10的流程之后,如果需要,那么执行自适应滤波器28的监视和控制(参见图9的方框210)(注意下面将参考图20-34更详细地说明方框209、210和211)。之后,自适应滤波器在方框212产生回波估计信号48,流程进入参考图11更详细说明的方框214和216。即,图11的流程图解说明图9的方框214和216的一部分,详细说明了近端谈话者信号检测(即Sgen的检测)的控制。
在方框276中,估计误差信号46的功率(Perror)(参见上面的等式2)。流程随后进入判定菱形框278,确定Perror和PSin中的较小者是否大于NESD_Threshold(即,是否MIN(Perror,PSin)>NESD_Threshold)。如果是,那么流程进入判定菱形框280,确定NESD_Hangover计时器是否已递减计数到0。如果是,那么检测到近端信号。即,只有当MIN(Perror,PSin)>NESD_Threshold,并且在过去的某一时间窗口内(对应于NESD_Hangover计时器)没有检测到近端信号时,才检测到近端信号。如果在判定菱形框278,MIN(Perror,PSin)不大于NESD_Threshold,那么流程进入方框290,NESD_Hangover计时器的值被递减,直到它达到0为止,从而引入由NESD_Hangover时间确定的暂停。如果在判定菱形框280,NESD_Hangover计时器不是0,那么在方框286中,NESD_Hangover计时器被设置成预定值。
如果检测到近端信号(Sgen),那么流程从判定菱形框执行到判定菱形框282,确定滤波器系数是否已被更新。如果是,那么假定由于近端信号的存在,该系数很可能被破坏。即,由于用于系数更新的信号不再是纯残留回波,而是残留回波和Sgen的混合物,因此系数不再代表估计的回波。这种情况下,流程进入方框284,滤波器系数被恢复或者由一组证明“良好”的滤波器系统替换。备份和恢复滤波器系数的方法将在下面参考图12和13说明。流程随后进入方框288,更新BACKUP_STATE。如果在判定菱形框282,滤波器系数还未被更新,那么不认为系数被破坏,因为没有利用残留回波和Sgen的混合物适应它们。这种情况下,流程进入方框286,将NESD_Hangover计时器设置成预定值。
选择用于NESD_Hangover计时器的NESD_Hangover时间的持续时间,以确保在开始滤波器系数适应之前,不再存在Sgen,以及避免任意不必要的滤波器系数适应和恢复。例如,在一个实施例中,NESD_Hangover时间为160个样本,或者20毫秒。于是,NESD_Hangover时间的持续时间防止近端信号检测器26过于敏感,从而使近端谈话者信号的检测和不存在近端谈话者信号的检测之间的转换降至最少。但是,如果NESD_Hangover时间被设置得过长,那么近端信号检测器26可能不够敏感,当需要时,不能准确地检测近端谈话者信号。
于是,在Sgen和Rin的信号电平(即功率)的不同组合下,采取关于滤波器系数(即自适应滤波器28的系数)的不同动作。例如,可利用下面的表格总结这些操作

表1由于Sin是Sgen和回波或Rin的混合物,因此上面列举的几个组合不是在正常操作模式下的有效组合(意味着连接未断开,或者没有额外的信号被注入电路中)。这些无效组合是项目3(由于当Sgen和Rin较低时,Sin不能高),项目5和6(由于当Sgen高时,Sin不能低)。三组操作被用于剩余的5种组合。首先,系数适应过程的条件是当Rin较高,而Sgen较低(在单一远端谈话期间,不管SiN是高还是低,即项目和4)。在这些条件下,误差(误差信号46)主要归因于残留回波(因此Sgen较低),Sgen对适应的影响极小。其次,停止滤波器系数适应过程,并恢复先前确定的“良好”的滤波器系数的条件是当Sgen较高时(在近端谈话期间,不管是单方谈话还是双方谈话,即项目7和8)。第三,当近端和远端谈话者无声时,不需要更新(项目1)。
上面说明的检测Sgen的方法允许当回波返回损耗接近或小于6dB时,消除回波的能力。于是,在接近或小于6dB时(例如在上面的表1的项目4中),上面的方法使用Sgen(如上所述,它可被确定为误差信号46,假定残留误差较小或可忽略)和Sin中的最小者,这导致在这些条件下不存在虚假检测,不同于会受到在这些较低电平(接近或小于6dB)下的回波返回损耗的变化严重影响,于是当实际并不存在Sgen时,会错误地检测到Sgen的存在的在先解决方案。此外,当回波返回损耗达到0dB(无混合电路衰减)时,上面的方法使适应过程能够继续执行,允许消除回波,不同于适应过程被停止在诸如6dB电平的在先解决方案。
另外,即使当与Rin相比,Sgen的电平相当低(对应于上面的项目8)时,上面参考图10和11说明的方法也能够快速检测Sgen。例如,现有的解决方案将双方谈话检测阈值设置成大于或等于Rin能量的Sin能量(即,对应于混合电路引入的6dB损耗)。如果混合电路衰减为10dB,那么检测阈值方面的4dB的差异足够大,足以允许显著数量的Sgen存在,而不会被检测成双方谈话。于是,这些现有解决方案不能始终检测近端谈话信号,或者过迟地检测到它们。上面描述的方法将与Rin相比,Sgen(如上所述,它可被估计为误差信号46,假定残留误差较小或可忽略)和Sin中的最小者用于近端信号检测,检测阈值(NESD_Threshold)设置与回波返回损耗无关,导致和现有的可用解决方案相比,更快更可靠的近端信号检测。
此外,上面参考图10和11说明的方法允许区分双方谈话(上面的表1中的项目8)和具有一定噪声的近端背景的单方远端谈话(上面表1中的项目4)的能力。当近端背景噪声电平相当高时,现有的解决方案将这种情形检测成双方谈话情形,停止适应过程。由于背景噪声可能持续较长的时间,甚至持续整个电话呼叫过程,自适应滤波器可能永远不发生变化实现会聚。于是,上面描述的将与Rin相对,Sgen和Sin中的最小值用于近端信号检测允许将检测阈值(NESD_Threshold)设置成即使当背景噪声电平相当高时,自适应过程仍将继续(注意唯一的真正的双方谈话条件是当Rin和Sgen信号电平都高时。但是,当检测到近端谈话者信号时,这里描述的适应过程应被停止,并恢复滤波器系数,而不管是在单方近端谈话期间,还是在双方谈话期间)。
图12图解说明图9的确定是否要执行背景处理,如果是,那么备份滤波器系数的判定菱形框224和方框226的一部分。图12的流程主要涉及(自适应滤波器28的)滤波器系数备份策略。备份策略的一个实施例确保良好的滤波器系数被定期备份,以使备份的次数降至最小,并使备份的频率降至最小。图12开始于方框291,递增背景1计数器。流程进入判定菱形框293,确定背景1计数器是否达到预定计数器值J。如果否,那么流程进入点H(在图9中的方框228之后)。如果是,那么流程进入方框298,背景1计数器被重置(为0),随后进入判定菱形框295,确定自适应滤波器28的滤波器系数是否已被更新。如果否,那么流程进入点H。如果是,那么流程进入方框292,递增背景2计数器。
流程随后进入判定菱形框294,确定背景2计数器是否达到预定计数器值L。如果否,那么流程进入点H。如果是,那么流程进入方框296,执行背景处理。即,在本实施例中,最多每J*L个样本执行背景处理,并且这些值,J和L,可被设置成有助于确定背景处理的频率的任意值。例如,在一个实施例中,J为160个样本,L为10,最多每J*L,或者说1600个样本执行背景处理。即在J个样本之后,如果自适应滤波器28的滤波器系数还未被更新,那么流程进入点H,背景2计数器不被递增。于是,只有当在当前窗口的J个样本内,系数已被更新时,背景2计数器才被递增并与L比较。在方框296中,背景2计数器被重置(本实施例中,被重置为0)。流程从方框296进入判定菱形框300。
在判定菱形框300,确定当前的BACKUP_STATE(将参考图13更详细地说明)是否为0或1。如果是,那么在方框304中递增BACKUP_STATE,流程进入方框308。如果BACKUP_STATE不为0或1,那么流程进入判定菱形框302,确定BACKUP_STATE是否为2。如果否,那么流程进入方框306(表示BACKUP_STATE为3),BACKUP_STATE被设置成2,流程进入方框310。如果在判定菱形框BACKUP_STATE为2,那么流程进入方框308,候选备份系数被复制到良好备份系数(注意下面将参考图13说明候选备份系数和良好备份系数)。流程随后进入方框310,当前的滤波器系数被复制到候选备份系数。即,在方框308中,候选备份系数变成良好备份系数,当前滤波器系数变成候选备份系数,当前备份系数,候选备份系数和良好备份系数都可被保存在回波消除器20中的一个存储单元或者独立的多个存储单元中,或者保存在回波消除器20外的存储单元中。之后,流程进入图9的方框228。
本发明的一个实施例使用标记为候选备份系数和良好备份系数的两个系数备份,并且具有4个不同的BACKUP_STATE(0-3)的组合。于是,图13图解说明了控制自适应滤波器28的滤波器系数的备份和恢复过程的状态机。
图13的状态机包括4种BACKUP_STATE 0-3。STATE 0指示既不存在候选备份系数,又不存在良好备份系数。STATE 1表示存在候选备份系数,但是不存在良好备份系数。STATE 2表示候选备份系数和良好备份系数都存在。STATE 3表示不存在候选备份系数,但是存在良好备份系数。注意图13的状态机实现图9的方框216和226的一部分。
在一个实施例中,当重置或初始化时,状态机开始于STATE 0。如果在背景处理的最后L输入项中没有检测到近端信号(Sgen),那么状态机转变成STATE 1。于是,滤波器系数的首次备份的最小时间窗口是J*L个样本(这里在本实施例中,L是10,于是J*K是1600个样本或者说200毫秒,假定采样速率为8kHz)。对于该状态转变,未检测到近端信号,通过将当前的滤波器系数复制到候选备份系数,实现首次备份。当检测到近端信号(Sgen)时,状态机转变回STATE 0,因为由于近端信号Sgen的检测方面的延迟,保存的候选备份系数可能被破坏。状态机保持STATE 0,直到在背景处理的最后L输入项中未检测到近端信号为止,此时,如上所述,状态机再次转变成STATE 1。
在STATE 1下,如果在背景处理的另外L个输入项中没有检测到近端信号,那么状态机转变成STATE 2,通过将候选备份系数复制到良好备份系数,并将当前滤波器系数复制到候选备份系数,执行第二次备份。这种状态下,候选和良好备份系数都存在,并且如果没有检测到近端信号,那么状态机将保持这种状态。注意在一个实施例中,即使状态未被改变,在第二次备份中,也按照顺序备份,更新候选备份系数和良好备份系数。另外,在一个实施例中,通过首先将候选备份系数标记成良好备份系数(例如通过使用指针),随后将当前滤波器系数复制到候选备份系数(它用于被标记成良好备份系数),利用一次复制完成当从STATE1转变到STATE 2时执行的两次复制。
在STATE 2下,当检测到近端信号时,状态机转变到STATE 3,候选备份系数再次被认为受到破坏,但是良好备份系数仍被认为是良好的,因为至少在J*L时间窗口之后,这些良好备份系数已被证明是良好的。只要近端信号持续存在,那么状态机就保持在STATE 3,或者如果近端信号不再存在,状态机将返回STATE 2。
注意在备选实施例中,可在每个样本上,而不是每J个样本出现背景处理的每个输入项(L)。另外,图13的状态机可用各种不同的方式实现,并且可包括和图13中所示的状态更多、更少或者不同的状态。
图6图解说明图2的监视和控制单元30的一部分的一个实施例,它结合图2的增益控制器33控制系统10和自适应滤波器28的稳定性。例如,如果由于明显不同于混合电路16的脉冲响应的(自适应滤波器28的)一组滤波器系数的缘故,系统10产生持续不变的非自然信号,那么认为系统10不稳定。如前参考图37所述,自适应滤波器28的系数试图“模仿”混合电路16的脉冲响应,并从输出信号中扣除模仿的脉冲响应,以试图消除反射回波。但是,如果自适应滤波器28的系数与脉冲响应差异太大,那么会出现非自然信号,例如话音或数据信号失真或者甚至系统啸叫。在下述两种情况下会出现系统10的不稳定性(1)回波消除器20和22处于闭环系统中,并且由某一类型的信号激励,从而导致系统10的大于1的增益,和(2)回波消除器20处于开环系统中。
图14图解说明监视回波消除器20的增益的动态增益控制方法的一个实施例,它可由与自适应滤波器28和增益控制器33耦接的增益监视器100执行。图14的动态增益控制方法确保闭环系统中的回波消除器20和22的稳定性。例如,如果误差信号46大于Sin 38(理论上这不应发生,但是实际上会发生),那么回波消除器20的增益大于或等于1。如果在回波消除器22中发生相同的情况(导致回波消除器22的增益也大于或等于1),那么具有回波消除器20和22的闭环系统的整个环路增益可能大于1,能够产生称为啸叫的非自然信号。于是,当某一时间窗口内,误差信号46的功率(Perror)与Sin38的功率(PSin)(参见上面的等式1和2)的比值大于自适应阈值时,图14的方法衰减误差信号46。另外,当Perror比PSin大许多倍时,图14的方法重置自适应滤波器28。于是,图14的方法防止闭环系统的整个环路增益随着时间的过去达到1以上,确保系统10的稳定性。此外,当混合电路特性突然变化时,图14的方法还加速自适应滤波器28的重新收敛。
于是,图14图解说明图9的方框218的一部分。即,在图9的方框216中,检测是否存在近端谈话者信号之后,流程进入方框218,监视并选择性地调整回波消除器20的增益。于是,流程开始于判定菱形框322,确定Perror与PSin的比值(Perror/PSin)是否大于重置阈值。如果是,那么流程进入方框330,自适应滤波器28的滤波器系数被重置(即,在一个实施例中,被设置成0)。另一方面,系数可被重置为任意值。于是,重置阈值可被用于确定Perror是否远远大于PSin,从而需要自适应滤波器28的重置,以防止不稳定性。于是,重置阈值可以是任意值,在一个实施例中,被设置成8。
如果Perror/PSin不大于重置阈值,那么流程进入判定菱形框324,确定Perror/PSin是否大于增益阈值。增益阈值一般小于重置阈值,在一个实施例中,被设置成1。该增益阈值是开始增益衰减的激活的阈值。如果Perror/PSin大于增益阈值,那么流程进入方框328,利用α调整增益,如下面的等式7中所示等式7增益=α*增益α通常小于1,以致误差信号46被衰减。于是,在一个实施例中,α为0.9996。流程进入判定菱形框328,确定增益是否小于增益限度。如果是,那么流程进入方框334,增益被设置成增益限度。这确保增益不会低于预定的水平,在一个实施例中,所述预定水平是0.5。例如,即使在一些异常情形下,例如混合电路在开环电路中,通常也不希望完全切断发送路径传输路径(即增益=0)。流程随后进入方框326。如果在判定菱形框332,确定增益不小于增益限度,那么流程进入方框326,计算误差信号47,如下面的等式8中所示等式8误差信号47=增益*误差信号46如果在判定菱定框324,确定Perror/PSin不大于增益阈值,那么流程进入判定菱形框336,确定增益是否小于1。如果否,那么流程进入方框326,衰减误差信号46;但是,如果增益小于1,那么流程进入方框338,调整增益,如下面的等式9中所示等式9增益=β*增益β通常大于1,因为由于增益先前已被衰减,因此它需要被恢复。于是,在一个实施例中,β为1.0004。流程随后进入判定菱形框340,确定增益是否大于1。如果是,那么流程进入方框326,衰减误差信号46,如果否,那么流程进入方框342,增益被设置成1。在方框342之后,流程进入方框326,误差信号46不被衰减,因为误差信号47仅仅等于误差信号46*1(因为在方框342中,增益被设置成1)。于是总之,如果Perror/PSin大于或等于重置阈值,那么自适应滤波器28的滤波器系数被重置。如果Perror/PSin小于重置阈值,但是大于或等于增益阈值,那么误差被减少增益值(例如在方框326中)。但是,如果Perror/PSin也小于增益阈值,那么误差被保持,不被减少(即,误差信号47=误差信号46)。于是,能够理解图14的流程如何帮助保持系统10的稳定性。
图15图解说明监视自适应滤波器28的滤波器系数的分布的滤波器系数监视方法的一个实施例,它可由在监视和控制单元30内,并与自适应滤波器28耦接的滤波器系数监视器102执行。图15的方法确保开环系统中回波消除器20的稳定性。监视方法检测具有相当均匀分布的自适应滤波器28的一组滤波器系数的形成。由于混合电路16的脉冲响应是预期的,因此自适应滤波器28的系数的均匀分布指示不存在任何混合电路,从而指示开环状态的可能性。于是,当检测到自适应滤波器28的系数的均匀分布时,滤波器系数被重置,使回波消除器20处理报警状态,以便进一步监视。当在某一时间窗口内,滤波器系数被反复重置时,认为回波消除器20处于开环状态,回波消除器20被绕过。即,只有当存在真实的混合电路时,自适应滤波器28才应修改。此外,具有通过Rin和作为Sin的非零信号的连续正弦波输入(例如正弦波音调)的开环系统中的自适应滤波器28可能很快发散,从而增大对开环系统的检测的需要。
于是,图15图解说明图9的方框228的一部分。即,在上面说明的图9的方框226中备份滤波器系数之后,流程进入方框228,监视自适应滤波器28的系数。于是,流程开始于方框344,在方框344,自适应滤波器28的滤波器系数被分成B个bin(B被选择为滤波器系/16的数字)。流程执行方框346,确定B个bin的最大和最小系数功率。即,如果滤波器系数被分成B个bin,每个bin将使该bin内的系数的功率值(例如该bin内系数的平均功率)与之相关,在方框346中,选择B个bin的最大功率值和B个bin的最小功率值。流程进入判定菱形框328,确定最大功率值和最小功率值的比值(即最大功率/最小功率)是否小于报警阈值。如果使滤波器适应真实混合电路,那么最大功率与最小功率的比值应远大于1。另一方面,如果最大功率与最小功率的比值接近于1,那么显然滤波器并不适应于真实混合电路。选择某一比值作为用信号通知不存在混合电路的可能性的报警阈值。根据在各种混合电路下,自适应滤波器行为的统计分析,选择报警阈值。在一个实施例中,报警阈值被选择成8。
在比较之后,流程进入方框350,自适应滤波器28的滤波器系数被重置为0(或者设置成任意其它预定的重置值)。流程进入方框352,报警状态被递增(报警状态指示在最大功率与最小功率的比值小于报警阈值的当前一段时间内,滤波器系数已被重置多少次。注意当前的一段时间是如上参考图12所述的相同J*L,因为当退出图12的方框310时,流程继续执行图15中描述的图9的方框228,方框228开始于图15的方框344。即,图15被看作如图9和12中所示的,最多每J*L个样本进入的背景处理的一部分)。在方框352之后,流程进入判定菱形框354,确定报警状态是否等于旁路阈值。如果否,那么不使回波消除器20处于旁路模式,于是,自适应滤波器28继续适应。但是,如果在判定菱形框354中,报警状态已达到旁路阈值,那么流程进入方框356,旁路模式被设置成1,指示检测到开环状态(即不存在任何混合电路),于是,回波消除器20将被绕过,以致不适应于不存在的混合电路。
在判定菱形框348,如果确定最大功率与最小功率的比值不小于报警阈值,那么流程进入方框358,报警状态被重置为0。流程进入判定菱形框360,确定旁路模式是否为1,如果是,那么在方框362,旁路模式被重置为0。于是,到方框358的分支允许混合电路16的重新连接,这种情况下,自适应滤波器28再次开始适应。
图5图解说明图2的非线性处理器32的一部分。如上所述,除了减少或消除残留回波之外,非线性处理器32还试图保持或匹配近端谈话者信号的背景噪声,以便改进通信质量。通常,非线性处理器32检测残留回波是否小于某一阈值,并用舒适噪声,而不是无声来替换残留回波,以避免电话线背景噪声的突然消失。背景噪声的这种突然消失会导致电话连接已被中断的印象。
目前使用的一种现有方法使用合成的背景噪声;但是,这会导致真实背景噪声和合成背景噪声之间的破坏性转换。例如,目前使用的一种现有方法使用白噪声作为舒适噪声。但是,白噪声远远不同于自然背景噪声,于是听起来是破坏性的。目前可用的一种备选解决方案反复输出预存背景噪声信号来匹配背景噪声。但是,这种方法需要额外的存储空间,并且导致显著的背景噪声的重复,对于通信来说,这也是破坏性的。
于是,图5和图16-19提供非线性处理器32的一个实施例,所述非线性处理器32保持或匹配回波消除器20中的自然背景噪声,以便减少由回波消除的非线性处理导致的非自然信号,例如在前一段中讨论的破坏性非自然信号。非线性处理器32利用短期电平估计器88和长期信号电平估计器92找出直接背景噪声信号的电平的可靠估计,并调整其阈值(NLP_ON和NLP_OFF阈值,后面说明)。呼叫开始时,短期估计器产生背景噪声信号的快速电平估计。另一方面,长期估计器本质上是自适应的,目的在于随着时间的过去,可靠地跟踪背景噪声信号电平。根据远端信号,近端信号和背景噪声信号的相对电平,作出激活非线性处理器32的判定。当背景噪声信号变得显著时,非线性处理器32通过使初始的背景噪声信号通过回波消除器20,保持初始的背景噪声信号。当背景噪声信号较低,残留回波变得听得见时,非线性处理器32用信号电平比估计的背景噪声信号电平低两三个dB的舒适噪声信号代替残留回波。产生的舒适噪声信号也逐渐被混合到初始的背景噪声信号中,以使转变可听性降至最小。
按照四个基本步骤执行回波消除器20中自然背景噪声的保持或匹配(1)估计背景噪声信号,远端谈话者信号和近端谈话者信号的电平;(2)确定非线性处理器32的阈值;(3)如果需要非线性处理器32,那么产生舒适噪声;和(4)如果需要非线性处理器32,那么将舒适噪声混合到背景噪声中。
图5的非线性处理器32包括自适应背景电平估计器96,它包括短期背景电平估计器88,背景电平估计器控制器90,长期背景电平估计器92和背景电平适配器94。背景噪声电平的估计由短期背景电平估计器88和长期背景电平估计器92完成。当开始呼叫时,短期背景电平估计器88提供初始的快速估计,长期背景电平估计器92随着时间的过去,逐渐适应背景噪声信号的电平。注意当背景噪声电平变化时,长期背景电平估计器92对较高噪声电平的适应速率慢于对较低噪声电平的适应速率。于是,当近端和远端谈话者信号的电平都低于预定阈值时,估计器88和92是活动的。即,如果数值适用于长期背景电平估计时,只使用估计器92。于是,当长期背景电平估计器92还不可用时,通常只在开始时(即,只在呼叫开始时)才使用短期背景电平估计器88(近端和远端谈话者信号的电平分别由近端信号电平估计器70和远端信号电平估计器72确定)。
打开非线性处理器32(由非线性处理器ON控制器76执行)的阈值不同于关闭非线性处理器32(由非线性处理器OFF控制器78执行)的阈值。当近端谈话者信号无关紧要,并且远端谈话者信号有效时,非线性重点ON控制器76启用(或打开)非线性处理器32。当近端谈话者信号相当高,或者背景噪声信号非常显著时,非线性处理器OFF控制器78禁用(或关闭)非线性处理器32。如下执行消除残留回波和保持实际的背景噪声之间的折衷。当背景噪声信号相当高,非线性处理器32被禁用,以允许背景噪声通过回波消除器20。这种情况下,由于掩蔽效应的缘故,可忽略的残留回波被显著得多的背景噪声信号掩埋。当背景噪声信号相当低时,非线性处理器32被启用,因为当残留回波与相当安静的背景噪声信号一起存在时,残留回波更可听。在这两种情况下,由于自适应滤波器28实现的良好的收敛深度的缘故,残留回波都较小。
当非线性处理器32被启用时,(舒适噪声发生器86)产生舒适噪声,(噪声电平匹配器82)匹配噪声电平,以使感知的语音的可听“噪声选通”(即,从一种背景到另一种背景,或者从一种背景到无声的噪声转换)降至最少。可选择数种舒适噪声信号以接近自然的背景噪声信号。另外,舒适噪声逐渐代替实际的背景噪声(最好由输出信号混频器84执行),以便实现平滑转变,舒适噪声的电平被设置成比估计的背景噪声电平低两三个dB。
图16图解说明根据本发明的一个实施例,执行自适应背景电平估计的方法。通常,只有当下述三个条件被满足(对应于图16的判定菱形框400、402和404)时,才能够估计背景噪声信号的电平(1)没有近端谈话者信号,(2)没有远端谈话者信号(即无残留回波),和(3)上述两个条件持续一段时间被满足。首先,在判定菱形框400中,确定近端谈话者信号的水平(Perror)是否小于误差功率阈值。误差功率阈值被定义为确定误差信号是被看作背景噪声信号还是近端谈话者信号的阈值。在一个实施例中,误差阈值为-39dBm0。该检查降低混淆近端谈话者信号和背景噪声信号的可能性,因为下面将说明的背景能量估计不能包括近端谈话者信号。如果Perror小于误差阈值,那么流程进入判定菱形框402,检查第二条件。在判定菱形框402中,确定远端谈话者信号的水平(PRin)是否小于Rin阈值,以便排除背景电平估计中的残留回波。Rin阈值被定义成足够显著,足以在非线性处理器之前产生明显的残留回波的Rin信号电平。在一个实施例中,Rin阈值为-27 dBm0。如果PRin小于Rin阈值,那么流程进入判定菱形框404,确定前两个条件是否持续某一时间窗口(即,背景拖尾时间)被满足。即,如果背景拖尾时间=0,那么前两个条件持续背景拖尾时间定义的时间窗口被满足,流程进入方框408。背景拖尾时间被用于确保持续某一时间窗口,不存在远端和近端谈话者信号。在一个实施例中,背景拖尾时间为160个样本,或者说20毫秒,假定采样速率为8kHz。
如果在判定菱形框400,Perror不小于误差阈值,或者如果在判定菱形框402,PRin不小于Rin阈值,那么流程进入方框406,将背景拖尾计时器设置成预定值,例如,前一段落中讨论的背景拖尾时间。随后流程进入点C(注意在点C,流程继续执行到后面说明的图18)。在判定菱形框404,如果背景拖尾计时器不为0,那么在方框410中,递减背景拖尾计时器,流程进入点C。
但是,当判定菱形框400、402和404的3个条件都被满足时,流程进入方框408,背景水平(Pbackground)被修改成在后面的步骤中确定的所需值(Pnew_background)(注意将参考图17中的方框426计算和讨论Pnew_background;于是在经过方框408的首次迭代中,Pnew_background可具有任意恰当的初始值,例如表示舒适噪声电平的初始值)。对每个样本执行适应,以使舒适噪声电平匹配中,从一个信号电平到另一信号电平的转变平滑。于是,如下面的等式10中所示执行所述适应。
等式10Pbackground(n)=[(R-1)Pbackground(n-1)+Pnew_background]/R在等式10中,Pbackground(n)是在时间n的估计背景功率水平;Pnew_background是要被修改的(并且在第四步中确定的)新的背景功率水平;R是控制适应速率的因子,它被设置成FAST_RATE或SLOW_RATE(注意可在图17的方框428,或者图19的方框480、472或476中设置R,如后更详细所述。另外,注意在一个实施例中,FAST_RATE的适应速率被设置成29,SLOW_RATE的适应速率被设置成211)。
在方框408之后,开始估计背景噪声信号的功率水平,它包括3个主要步骤。估计背景噪声信号的功率水平的第一步是计算窗口内的背景功率水平。于是,流程进入方框412,如下面的等式11中所示,计算开窗背景的功率(Pwindow_background)。
等式11 在等式11中,Pwindow_background是开窗背景功率水平估计值,误差信号46是图2的加法器的输出端的,Sin 39和回波估计信号48之间的差值,w_size是求平均值的窗口大小。在一个实施例中,w_size为64个样本。随后,流程进入方框414,背景样本计数器被递增。
第二步包括在一定数目的时间窗口w_count内找出最小的Pwindow_background(在一个实施例内,w_count是128个样本;但是,在备选实施例中,w_count可以是取决于计算最小Pwindow_background所需的时间窗口的数目的任意值)。于是,每w_size个样本执行一次方框418的计算(在下面的等式12中表示)。为了执行第二步骤,流程进入判定菱形框416,确定背景样本计数器是否为w_size。如果否,那么流程进入点C(在图18中)。如果是,那么流程进入方框418,如下面的等式12中所示,确定开窗背景的最小功率。
于是,通过选择旧的最小功率(在经过方框418的前一次迭代中确定的最小功率)和在方框412中确定的Pwindow_background之间的极小值,确定Pmin_window_background。流程随后进入方框420,Pwindow_background被重置为0。流程进入方框422,背景样本计数器被重置为0,并且窗口计数器被递增。流程随后执行到下接图17的点A(开始于判定菱形框424)。
自适应背景电平估计的第三步骤是确定参考方框408讨论的背景电平适应的Pnew_background,以及确定在方框408中使用的适应速率。根据是否是首次确定Pnew_background,存在两种不同的方法。于是,在判定菱形框424中,确定是否是初始估计(表示不存在长期数据,例如在呼叫开始时)。如果是,那么流程进入方框426,Pnew_background被设置成在第一步中计算的Pwindow_background。随后流程进入方框428,适应速率R被设置成FAST_RATE。但是,如果在判定菱形框424,确定不是初始估计(表示由于存在长期数据,例如N个在先样本,已可获得Pnew_background),那么流程进入判定菱形框430。注意如果不同初始估计,那么每w_count个窗口执行一次确定Pnew_background的过程。于是,在判定菱形框430,确定窗口计数器是否已达到w_count。如果否,那么流程进入点C(在图18中)。但是,如果是,那么流程进入方框43,计算Pnew_background。流程随后进入方框434,确定适应速率R(确定Pnew_background和R的细节将参考图19进一步说明)。流程进入方框436,窗口计数器被重置为0,随后进入方框438,Pmin_window_background被重置为0。流程随后进入点C。
图19图解说明了当可获得Pnew_background时,确定Pnew_background和R的方法。图19的方法避免具有从低电平到高电平的大跳跃的Pnew_background,但是当变化是从高电平到低电平时,不设置这样的限制,因为该变化更快。于是,在一个实施例中,Pnew_background被设定一个上限,以致不大于2倍的Pbackground。如果适应是从高电平到低电平,那么图19的方法还设置较快的适应速率(FAST_RATE),如果适应是从低电平到高电平,那么设置较慢的适应速率(SLOW_RATE)。由于就背景噪声电平来说,具有从低到高的缓慢变化,但是从高到低的相当快速的变化,通常将使背景噪声听起来更好,因此使用不同的速率。
在图解说明图17的方框432和434的一部分的图19中,流程开始于判定菱形框466,确定Pmin_window_background是否大于恒定倍数的Pbackground,即,是否“Pmin_window_background>常数*Pbackground”,在一个实施例中,所述常数为0.5。如果是,则流程进入方框478,Pnew_background被设置成“(常数*Pmin_window_background)+舒适噪声电平”。在一个实施例中,方框478中的常数为2(这里该2对应于前一句子中的0.5)。流程进入方框480,适应速率被设置成SLOW_RATE。流程随后进入图17的方框436。
如果在判定菱形框466,Pmin_window_background不大于“常数*Pbackground”,那么流程进入判定菱形框468,确定Pmin_window_background是否大于Pbackground。如果是,那么流程进入方框474,Pnew_background被设置成Pmin_window_background。流程随后进入方框476,适应速率R被设置成SLOW_RATE。流程随后进入图17的方框436。但是,如果在判定菱形框468,确定Pmin_window_background不大于Pbackground,那么流程进入方框470,Pnew_background被设置成“Pmin_window_background+舒适噪声电平”。流程随后进入方框472,适应速率R被设置成FAST_RATE,随后进入图17的方框436。
于是,注意舒适噪声电平(CNL)被添加(在方框478和470中),以便防止当Pbackground或Pmin_window_background正巧为0时,防止Pnew_background成为无声。例如,在一个实施例中,CNL被设置成-66dBm0。另一方面,CNL可在-60~-72dBm0的范围中。另外,虽然利用功率水平估计执行图19的流程,不过可利用幅度计算实现相同的流程。
图18根据本发明的一个实施例,图解说明利用上面获得的所有水平估计的非线性处理器控制方法。即,图18图解说明了执行非线性处理的图9的方框230的一部分。在图18中,流程开始于点C(可从图16的方框406、方框410或者判定菱形框416,或者从图17的方框438到达点C)。从点C开始,流程进入判定菱形框440,确定Perror是否大于非线性处理器OFF(NLP_OFF)阈值。如果是,那么流程进入方框452,设置NLP_OFF(表示非线性处理器32被关闭),随后进入方框454,噪声匀变因子被重置为预定值。噪声匀变因子被用于使从低电平到高电平的信号电平转变平滑(在方框454之后,流程进入图9的方框232)。在判定菱形框440,如果确定Perror不大于NLP_OFF阈值,那么流程进入判定菱形框442,确定Pbackground是否大于背景阈值。如果是,那么流程进入方框452,关闭非线性处理器32,随后进入方框454。于是,当Px大于NLP_OFF阈值时,或者当Pbackground大于背景阈值时,关闭非线性处理器32。在一个实施例中,NLP_OFF阈值被设置成-27dBm0,背景阈值被设置成-39dBm0。
如果在判定菱形框442确定Pbackground不大于背景阈值,那么流程进入判定菱形框444,确定Perror是否小于非线性处理器ON(NLP_ON)阈值。如果是,那么进入判定菱形框446,确定AVG PRin是否大于PRin阈值。如果是,那么流程进入方框448,设置NLP_ON(表示非线性处理器32被打开)。于是,当Perror小于NLP_ON阈值,并且AVG PRin大于PRin阈值时,非线性处理器32被打开。AVG PRin大于PRin阈值的条件确保只有当需要时,才打开非线性处理器32(因为只有当远端谈话者信号相对强时,显著的回波才是这种情况)。另一方面,Perror小于NLP_ON阈值的条件还确保残留回波必须较小,并且近端谈话者信号不被错误地当作要消除的残留回波。于是,在一个实施例中,PRin阈值被设置成-36dBm0,NLP_ON阈值被设置成-42dBm0。但是,在备选实施例中,它们可被设置成任意恰当的值。
注意在上述实施例中,NLP_OFF阈值和NLP_ON阈值之间的差异(在一个实施例中,它为-15dBm0)是非线性处理器32的帮助避免NLP_ON和NLP_OFF之间的快速转换的“死区”。
如果确定Perror不小于NLP_ON阈值(在判定菱形框444),或者AVG PRin不大于PRin阈值(在判定菱形框446),那么流程进入判定菱形框450,确定NLP_ON是否被设置(即,非线性处理器32是否打开)。如果未设置NLP_ON,那么流程进入图9的方框232;但是,如果设置了NLP_ON(或者在退出方框448之后),那么流程进入判定菱形框456,确定舒适噪声是否打开。如果否,那么流程进入图9的方框232;但是,如果舒适噪声打开,那么流程进入方框458,产生舒适噪声。在方框458之后,流程进入方框460,确定舒适噪声电平,随后进入方框462,混合舒适噪声与背景噪声。流程随后进入方框464,修改噪声匀变因子,随后进入图9的方框232。
于是,当非线性处理器32打开时,将产生舒适噪声信号。白噪声通常不是舒适噪声的优选选择,因为在频谱上,它明显不同于日常生活的真实背景噪声信号。于是,本发明的一些实施例使用粉红噪声,棕色噪声或Hoth噪声作为舒适噪声。例如,在一个实施例中,由于其较低的计算复杂性,选择了粉约噪声。如下面的等式13中所示,通过利用均匀分布的伪随机变量X的两个连续实现,(例如在方框458中)产生粉红噪声。
等式13Ypink(n)=C1*X(n)+C2*X(n-1)在上面的等式13中,X(n)是在时间n产生的伪随机变量(-1≤X(n)<1),C1和C2是用于修改两个随机样本和Ypink的幅度的混合物的常数。于是Ypink(n)是在时间n产生的粉红噪声样本。选择两个常数C1和C2,以确保粉红噪声信号的平均功率水平约比Pbackground小2dB。例如,在一个实施例中,C1和C2分别被选择为0.75和1。于是,在一个实施例中,与估计的背景噪声水平相比,舒适噪声匹配水平在0~4dB间变化。
随后如下面的等式14中所示(另外参见图18的方框462),将产生的舒适噪声(本实施例中Ypink)与背景噪声混合。
等式14Sout(n)=α(n)*(误差信号46)-(1-α(n))*A*Ypink(n)在上面的等式14中,A是要匹配的背景噪声电平的幅值(对应于方框460)。例如,在一个实施例中,A=(Pbackground)的平方根。在备选实施例中,如果Pbackground用幅度表示,而不是用功率表示,那么A=Pbackground。在等式14中,α(n)是时间n时的噪声匀变因子(0≤α<1),它允许在开始启动非线性处理器32时,从一个电平到另一电平的平滑过渡,Sout(n)是在时间n,非线性处理器32的最终输出(即,Sout(n)是图2的Sout 42)。如下面的等式15中所示,每个样本计算噪声匀变因子(在方框464中修改)。
等式15α(n)=b*α(n-1)在等式15中,b是选择成小于1的匀变常数。在一个实施例中近似0.9986,500毫秒之后,近似衰减到其半,因为0.9986500=0.496。在该匀变过程中,Sout(n)始于误差信号46(它为图2的Sin 39-误差估计信号48),并且如果匀变过程继续,当α(n)从1变成0时,Sout(n)逐渐转换成A*Ypink(n)。在打开和关闭非线性处理器32时都可应用匀变。但是,在一个实施例中,只对非线性处理器32的打开应用匀变。其原因在于当非线性处理器32被关闭时,它通常检测近端谈话者信号的显著电平,逐渐从舒适噪声(在一个实施例中,粉红噪声信号)转换回近端谈话者信号是不合乎需要的。但是,当打开和关闭非线性处理器32时,备选实施例都可应用这种匀变。
图7图解说明了监视和控制单元30的一部分,它用于估计纯延迟。纯延迟估计意图用于减少自适应滤波器28的抽头的数目,从而以较少的计算工作,获得更快和更深的收敛,如上所述。即,图7中图解说明的该部分监视和控制单元30和图20-24的流程图可被用于检测纯延迟和安置稀疏窗口(图9的方框211)。在一个实施例中,检测纯延迟,并安置具有恰当大小的滤波窗口(稀疏窗口),以致自适应滤波器28的长度(即抽头的数目)被减少。于是,将参考图20-24的流程说明图7。
图7和20-24提供用于为回波消除器20中稀疏窗口的动态安置,获得回波信号的纯延迟的估计值(即图37的T1)的一个实施例。如下更详细所述,执行纯延迟估计,以便通过用恰当布置的窄窗口自适应滤波器代替全窗口自适应滤波器,减少与覆盖较大的回波路径延迟跨距相关的计算成本。即,不是使用覆盖图37的整个脉冲响应,大到足以覆盖T1和T4+T2的全窗口自适应滤波器,而是使用并布置排除纯延迟部分的较小窗口,以便捕捉其间发生显著响应的T4+T2。另外,通过使用长度较短的自适应滤波器,纯延迟估计增大自适应滤波器28的收敛速度和深度。另外,纯延迟估计可被用于回波的监视动态变化的纯延迟(例如在电话呼叫期间),以及据此调整自适应滤波器窗口(例如稀疏窗口)。
这里将说明的实施例可包括被动方法(例如只利用语音信号的子速率滤波器适应)以及主动方法(例如,在呼叫开始时,注入短的,窄带极低电平噪声脉冲,同时执行子速率适应,以便确定始于双向静默的呼叫的纯延迟,这里,持续300毫秒的静默通常足够长,足以注入低电平探测信号和确定纯延迟)。这里要说明的实施例还包括处理纯延迟的两种情形。第一种情形涉及电话呼叫的开始,这种情况下服务质量(QoS)原理要求立即减少回波。第二种情形涉及电话呼叫中间,回波路径的变化。一般来说,在电话呼叫的持续时间内,稀疏窗口(以及相关的纯延迟)不发生变化。但是,对于一些呼叫(特别是‘呼叫转发’或‘会议呼叫’特征被激活的那些呼叫),纯延迟会显著变化。于是,这里讨论的各种实施例支持与高达每秒稀疏窗口变化一次对应的纯延迟的动态特性。注意,这里讨论的实施例可使用通过控制信号17提供的专有(非标准)信令来确定电话机是挂机还是摘机,以便确定呼叫的开始或结束。
图7和图20-24的实施例可使用子速率适应过程,它便于计算上高效地估计纯延迟。但是,备选实施例可不使用子速率过程。另外,在一个实施例中,为了对付纯延迟的固有的易变估计,在将纯延迟的原始测量结果返回给自适应滤波器28之前,纯延迟的原始测量结果可被非线性过滤(即,利用判定或限定过程处理,将参考图23说明其一个例子)。上面提及的子速率过程可将NLMS(归一化最小均方差)自适应滤波器(用于图7的自适应滤波器122)。但是,自适应滤波器122并不局限于这种自适应滤波。例如,可使用PNLMS、RLS或者其它自适应滤波器。注意NLMS自适应滤波算法一般较简单,并且具有可接受的收敛特性。其它自适应滤波器算法在计算上要求更高。PNLMS(比例归一化LMS)算法以适度的成本提供收敛性的确实改进。RLS(递归最小二乘)自适应算法通常明显更快(然而计算成本也明显更大)。但是,它对数字误差敏感,并且表现出数字不稳定性。从收敛性的观点来看,其它自适应滤波器(例如子带滤波器,仿射滤波器和它们的变形)可能更有吸引力;不过与NLMS相比,它们在计算上要求更高。但是,这里讨论的实施例并不局限于NLMS自适应滤波的使用。主速率自适应滤波器以及子速率自适应滤波器可以基于其它类型的自适应滤波解决方案。
可借助诸如短期子速率信号功率估计和子速率近端谈话者信号检测之类的机制,控制纯延迟估计,以便防止产生固有不可靠(因为受噪声或近端谈话影响),从而可能导致子速率自适应滤波器122发散的测量结果。注意如同上面参考当检测到Sgen时,停止自适应过程,以便避免形成虚假系数的自适应滤波器28说明的那样,相同的原理可应用于用来确定纯延迟的自适应滤波器122。
除了缩短自适应滤波器长度之外,纯延迟的估计可被用于解决其它情形,例如,当远端回波消除器被关闭时,当呼叫从本地转换到长距离时(例如通过呼叫转发特征,呼叫转移特征等),当会议呼叫操作涉及发散在较大的地理区域内的呼叫方/被叫方时。
图7以方框图的形式图解说明用于提供估计的延迟130的监视和控制单元30的一部分。在电话呼叫的持续时间内,自适应滤波器122(在一个实施例中,利用子速率处理的自适应滤波器122是子速率自适应滤波器)一直连续地提供带通脉冲响应的短期估计。利用限定过程或判定框(例如图23),脉冲响应的纯延迟测量结果被连续滤波,如上所述,限定过程或判定框可以是非线性滤波器。该滤波器允许快速确定呼叫开始时的纯延迟,并且允许在呼叫中间调整纯延迟或者选择新的纯延迟,只要新的纯延迟值通过与所述新值的确认相关的标准。即,为了使回波的出现降至最小,呼叫中从一个纯延迟到另一纯延迟的转换可基于纯延迟测量的适当核实。在一个实施例中,核实提供在呼叫中间改变纯延迟的稳健机制(例如通过分析子速率脉冲响应最大值的位置的三个或更多测量结果)。
在一种可选的形式中,如同参考图24所述,回波消除器20可按照监视模式工作。在该模式下,只有在电话呼叫开始时,图7的系统才是有效的(即估计纯延迟),从而如果某些条件被满足,那么它进入睡眠状态。在睡眠状态中,ERLE估计器对照阈值,连续检查与自适应滤波器28对应的ERLE,如果ERLE低于该阈值,并保持预定的持续时间,那么图7的系统返回有效模式,继续估计纯延迟。
图20的流程开始于判定菱形框482,确定纯延迟估计选项是否被激活。注意该选项可对应于编程到回波消除器20中的设置。这种情况下,不必如图20中所示,基于每个样本确定该选项是否被激活。在备选实施例中,可在电话呼叫开始时执行判定菱形框482的确定。但是,只有当纯延迟估计选项被激活时,流程才进入判定菱形框483。如果未被激活(或者在呼叫开始时确定,或者基于每个样本确定),流程进入图9的方框213,因为未执行纯延迟估计。
判定菱形框483确定呼叫开始时的可选训练是否被激活。如同纯延迟估计选项的情况一样,训练选项也可被编程到回波消除器20中,从而在电话呼叫开始时检查,而不是如图20中所示在每个样本执行检查。如果可选的训练未被激活,那么流程进入图21的判定菱形框484。但是,如果可选训练被激活,那么流程进入判定菱形框497。总之,如果可选训练未被激活,那么图20的流程是不需要的。类似地,如果纯延迟估计选项未被激活,那么图20和21的流程是不需要的。于是,回波消除器20可按照各种不同的方式工作,取决于选择的设置和选项。
另外注意在每个电话呼叫开始时,许多变量可被初始化,供图20-24的流程使用。例如,在一个实施例中,训练旁路标志被设置成FLASE,纯延迟样本计数器被重置,训练索引被重置,ERLE计数器被重置。这些变量将在图20-24的流程中说明。另外,一些值可在回波消除器20内编程或硬连线。例如,测量周期N可在开始每个呼叫时被初始化成特定的值,或者在回波消除器20内被硬连线。注意在本说明中描述的其它变量可在呼叫开始时被初始化,或者在回波消除器20中被硬连线或编程(永久地或者非永久地)。
如果在判定菱形框483确定呼叫开始时的可选训练被激活,那么流程进入判定菱形框497。可选训练允许在呼叫开始时估计纯延迟。由于在呼叫开始时,通常还不存在谈话,因此训练信号可被注入Rin 43,以产生Rout 40(参见图2的训练信号41,它可通过加法器36注入Rin 43中)。即,在缺少足够的Rin43能量的情况下,不能确定纯延迟;于是,训练信号41的注入可被用于确定纯延迟估计量。通常,训练信号41是在对话之前,在电话呼叫开始时注入的能量相当低的短脉冲串。即,训练信号41通常小于注入阈值,在一个实施例中,注入阈值在-30dBm0~-50dBm0的范围中。于是,如果可选训练被激活,那么流程进入判定菱形框497,确定训练旁路标记是否为TRUE。如果是,那么流程进入图21的判定菱形框484,绕过训练,继续图21的纯延迟估计,如下面所述。
如果在判定菱形框497确定训练旁路标记未被设置成TRUE,那么流程进入判定菱形框499,确定训练索引是否小于或等于2。训练索引确保训练信号(如果使用的话)只在呼叫开始时被注入。如上所述,训练索引可在呼叫开始时被重置,于是,当首次到达判定菱形框499时,训练索引应小于或等于1(因为最初它被重置为0)。不过如下所述,在第一测量周期(在一个实施例中,它为300毫秒)之后,训练索引将被递增为1(例如在图21的方框505中)。这仍然允许注入训练信号,因为训练索引仍然小于或等于1。但是,在随后的测量周期之后,训练索引将被递增为2(例如在图21的方框505中),并这时开始,在判定菱形框499,流程将进入图21的判定菱形框484,而不再存在注入训练信号41的可能性,因为为2的训练索引表示不再认为是呼叫的开始。在除开始呼叫之外的另一时间注入训练信号通常是不合乎需要的,因为呼叫双方可能听到注入的训练信号。
如果在判定菱形框,训练索引小于或等于1,那么流程进入方框489,指示仍然认为是呼叫的开始。在方框489,计算Sin的长期功率(PSIn)和Rin的长期功率(PRin)(可利用上面讨论的等式1、3和4来计算)。流程随后进入判定菱形框490,确定PSIn是否小于PSIn阈值,PRin是否小于PRin阈值。第一检查(PSIn是否小于PSIn阈值)确保不存在近端谈话者信号Sgen。在一个实施例中,PSIn阈值为-50dBm0。第二检查(PRin是否小于PRin阈值)确保不存在远端谈话者信号。在一个实施例中,PRin阈值为-50dBm0。如果这两个条件都被满足,那么流程进入方框492,表示对话还没有开始,可注入训练信号。于是,在方框492中,注入训练信号(例如图2的训练信号41),或者如果这是第二次通过方框492,那么继续注入训练信号。但是,如果在判定菱形框490,这两个条件都不被满足,那么流程进入方框495,训练信号标记被设置成TRUE。即,一旦PSIn或PRin超过它们各自的阈值,那么绕过训练(在判定菱形框497),而不考虑训练索引,从而防止在当前呼叫期间注入训练信号。在方框495和492之后,流程进入图21的判定菱形框484。
图21图解说明执行纯延迟估计的一个实施例。图21的流程使用子速率处理,例如仅仅每D个样本进入该流程,这里D对应于图7的抽取器106和110。例如,在一个实施例中,D为8,从而只处理Rin 44和Sin 38的每个第8个样本。但是在备选实施例中,D可以是任意值(包括1,它表示不使用子速率处理,因为每个样本都被处理)。于是,每个第D个样本被认为是子速率样本。纯延迟样本计数器被用于始终监视输入的Rin 44和Sin 38的样本,以便捕捉每个第D个样本。通常在每个样本之后,纯延迟样本计数被递增,并在每个第D个样本被重置。如上所述,还可在每个电话呼叫开始时重置纯延迟样本计数器。另外,延迟样本计数器可与这里讨论的其它流程的样本计数器共用,或者可以是只用于估计纯延迟的专用计数器。
在判定菱形框484,确定纯延迟样本计数器是否等于D-1。注意在纯延迟样本计数器被重置(即设置为0)的实施例中,到达D-1对应于到达第D个样本。但是,在备选实施例中,纯延迟样本计数器可被初始化为1,于是应对照D,而不是对照D-1来执行检查。另外,其它实施例可将纯延迟样本计数器初始化成D或D-1,并递减直到分别到达1或0为止。于是,抽取滤波器和抽取器的各种实施例可用于图7的抽取滤波器104和108,及抽取器106和110。另外注意抽取器106的输出是Rin 44的子速率样本,它可被称为RinSR,抽取器110的输出是Sin 38的子速率样本,它可被称为SinSR。
在判定菱形框484,如果确定纯延迟样本计数器还没有到达D-1,那么流程进入方框502,纯延迟样本计数器被加1,流程进入图9的方框213。但是,如果纯延迟样本计数到达D-1,那么流程从判定菱形框484进入方框491,表示已到达子速率样本。在方框491中,纯延迟样本计数器被重置,以便检测下一子速率样本,如上所述。
流程进入方框485,确定子速率Rin的功率(PRinSR),子速率Sin的功率(PSinSR),和子速率近端谈话者检测标记(sr_near_end_detect_flag)。例如,可使用下面的等式来确定PRinSR,PSinSR和PerrorSR(k)
等式16PRinSR(k)=(1-α)·PRinSR(k-1)+α·RinSR2(k);等式17PSinSR(k)=(1-α)·PSinSR(k-1)+α·SinSR2(k);等式18PerrorSR(k)=(1-α)·PerrorSR(k-1)+α·errorSR2(k);注意在上面的等式(等式16-18)中,k是信号子速率样本数,以致例如SinSR(k)=Sin(k·D)。等式18对应于子速率误差,errorSR,它对应于SinSR和下面参考方框494说明的,图7的子速率自适应滤波器122确定的子速率回波估计量y(k)之间的差值。于是,下面将更详细地说明errorSR(k)和PerrorSR(k)。另外,在上述等式的一个实施例中,α被设置成与在电话通道中观察到的人类语音的统计数字对应的1/280;注意1/280还近似对应于求滤波器带宽平均值的70毫秒滑动窗口。但是,备选实施例可使用α的不同值(注意上面的子速率功率计算可由图7的功率估计器210和功率估计器118计算)。
可类似上面参考图11说明的近端信号检测执行sr_near_end_detect_flag的确定。于是,比较PerrorSR(k)和PSinSR(k)的最小值与NESD子速率阈值(NESD_SR_threshold),以确定是否存在近端谈话者信号(Sgen)(注意这可由图7的近端信号检测器114执行)。如果是,那么sr_near_end_detect_flag被确定为真,并被设置成TRUE。该标记被用于绕过子速率滤波器122的滤波器系数的更新,因为如上所述,如果存在近端谈话者信号,那么Sin 38不再代表纯残留回波,而是代表Sgen和残留回波的混合物。于是,如上参考自适应滤波器28所述,只有当SinSR只包括子速率回波(即,当不存在近端谈话者信号时),子速率滤波器122才应适应。另外,如上参考自适应滤波器28所述,当PRinSR足够高,足以防止对通道噪声的自适应时,子速率自适应滤波器才应适应。
注意如上参考自适应滤波器28所述,在单方谈话和双方谈话情形下,都可检测到近端谈话者信号。即,利用上面的算法,只有当存在近端谈话者时,或者近端谈话者和远端谈话者都存在时,才能够检测到Sgen。另外注意备选实施例可使用其它方法来确定近端谈话者信号是否存在。例如,一个实施例可使用本领域公知的Geigel算法来检测近端谈话者信号。
在方框485之后,流程进入判定菱形框486,确定PRinSR是否大于子速率Rin的最小功率阈值。如果否,那么流程进入图9的方框213,绕过子速率自适应滤波器122的更新。如上所述,这防止子速率自适应滤波器122适应通道噪声。在一个实施例中,子速率Rin的最小功率阈值被设置成-45dBm0。如果满足最小阈值,那么流程进入判定菱形框487,确定sr_near_end_detect_flag是否为FALSE。如果最小阈值不被满足,那么流程进入图9的方框213,绕过子速率自适应滤波器122的更新,因为存在近端谈话者信号,如前一段落中所述。如果sr_near_end_detect_flag为FALSE,那么流程进入方框494,表示PRinSR足够,不存在近端谈话者信号。
在方框494,计算子速率回波估计量y(k),随后在方框496中,更新子速率自适应滤波器122的系数。在一个实施例中,可使用修改后的NLMS算法(为用在子速率处理中而修改)来计算y(k),并更新系数。
等式19y(k)=XT(k)·H(k)上面的等式19表示输入信号X的FIR滤波,这里X(k)=[x(k),x(k-1),…,x(k-N+1)]T是在FIR滤波器跨距内延伸的输入信号矢量(以子速率D)。于是,x(n)=RinSR(n)。另外,在等式19中,H(k)是第k次迭代的滤波器系数矢量(在子速率采样下),这里等式20H(k)=[h0k,h1k,…,hN-1(k)]T等式21H(k+1)=H(k)+step_size·errorSR(k)·X(k)上面的等式21代表根据NLMS算法的滤波器系数更新公式,这里NLMS子速率step_size可如下表示。
等式22step_size=β/[γ+PRinSR(k)]在等式22中,β是自适应常数,γ是“保护”项,它确保当PRinSR(k)临时变小时,自适应公式中的更新项不会变得过大,PRinSR(k)是在子速率采样下的输入信号功率(参见等式16)。
等式23errorSR(k)=SinSR(k)-y(k)(子速率下的自适应误差)在上面的等式中,RinSR对应于滤波并抽取的远端信号(它对应于图7的抽取器106的输出),SinSR对应于滤波并抽取的回波信号(在图7的抽取器110的输出端)。注意在不存在Sgen的时间内,Sin 38只包括残留回波,于是,位于抽取器110的输出端的SinSR可被用作滤波和抽取的回波信号。(参考图19说明的)变量H对应于代表子速率自适应滤波器122系数估计量的行矢量,H之后的“T”表示矢量转置。信号y表示自适应滤波器122提供的SinSR的估计量,errorSR是SinSR和y之间的差值。另外,在上述等式的一个实施例中,β被设置成2-9*2.5,α被设置成1/128。在一个实施例中,γ被设置成较小的值(与PRinSR(k)相比)。例如,如果PRinSR(k)被表示成16位的分数,那么γ的典型值为k·2-15,这里k是小整数。
流程随后进入判定菱形框498,确定n是否等于N,在本实施例中,N对应于单个测量周期的持续时间。在一个实施例中,N对应于300毫秒,于是,对应于300个子速率样本(假定D=8)。例如,如果以8kHz的速率对信号(例如Rin 44和Sin 38)采样,那么每125微秒收到一个样本。在本例中,D为8;于是,每个第D个样本对应于8*125微秒,这等于1毫秒。于是,每N个子速率样本后,流程进入方框503、500和501,这里在本实施例中,N为300,从而300*1毫秒为300毫秒。于是,N可被定义成具有预定持续时间的时间窗口,或者定义成在方框500和501中确定估计的延迟之间,必须被处理的预定数目的子速率样本。N的值可在回波消除器20内被编程或硬连线,并且可以是任意值,取决于计算新的估计延迟值所需的频率。注意N对应于子速率自适应滤波器122的收敛时间(即短期收敛时间)。例如,如果一个窗口的1024个样本(在本实施例中,它对应于与128毫秒窗口尺寸相等的1024*125微秒,假定基本采样速率为8kHz)被用于捕捉脉冲响应(例如图37中的T3),那么获得1024/D个子速率样本(例如,在本实施例中,1024/8=128个子速率样本)。即,本实施例允许300毫秒的收敛时间,以便获得通道的子速率脉冲响应的128个子速率样本的值(如同从回波消除器的Rin-Sin终端来看),并找出其最大值。不过如上所述,备选实施例可使用不同的收敛值(即,不同大小的测量周期N),不同的窗口尺寸(即,不局限于1024个基本速率样本,或者128毫秒),不同的子速率(D可以是任意值,包括1),以及不同于8kHz的不同采样速率。
如果在判定菱形框498,确定索引n(它可在呼叫开始时被初始化成诸如1或0之的起始值)还没有达到N,那么流程进入方框502,递增n,流程进入图9的方框213。但是,如果在判定菱形框498,确定n等于N,表示已处理了300个样本(对应于300毫秒的持续时间),那么流程进入方框503,n被初始化为1,其它测量周期变量也被初始化(例如,PRinSR,PSinSR和sr_near_end_detect_flag等)。流程随后进入判定菱形框504,确定训练索引是否为2。如果是,那么流程进入方框500,绕过方框504。但是,如果训练索引不为2,那么流程进入方框505,训练索引被递增。如上参考图20所述,训练索引由可选训练模式使用,这里只有在电话呼叫开始期间,才能注入训练信号。于是,训练索引被用于指示呼叫的开始。
流程从方框505或判定菱形框504进入方框500,计算单个的估计纯延迟。注意,如同将参考图22更详细说明的一样,单个的估计纯延迟对应于每个测量周期(即关于每N个子速率样本)估计的纯延迟。在估计单个纯延迟之后,流程进入方框501,利用几个(2个,3个或更多个,取决于特定的实现,以及取决于呼叫的阶段)有效的单个纯延迟估计量,确定估计的延迟130,如同将参考图23更详细说明的一样。
图22图解说明了确定单个估计延迟的图21的方框500的一个实施例。流程开始于方框506,确定子速率回波返回损耗增益量(SR_ERLE)。可使用下面的等式来确定SR_ERLE。
等式24SR_ERLE(k)=10*log10(PSinSR(k)/PerrorSR(k))于是SR_ERLE对应于PSinSR和PerrorSR之间的比值,该比值被用于验证纯延迟测量结果。SR_ERLE提供关于子速率自适应滤波器122的收敛性的“优良”(即多少回波被消除)的信息。即,较高的SR_ERLE(例如5dB或更大)表示在当前的测量周期内,自适应滤波器122已充分收敛(注意SR_ERLE可由以指定子速率工作的ERLE估计器116确定,参见图7)。于是,在方框506之后,流程进入判定菱形框508,比较SR_ERLE和子速率ERLE阈值,如果它不大于该阈值,那么流程进入方框514,表示由于其SR_ERLE较差,不应使用当前的测量周期。于是,(当前测量周期的)当前测量结果被丢弃,流程进入图21的方框501。但是,如果SR_ERLE超过子速率ERLE阈值,那么流程进入方框510,对子速率自适应滤波器122的收敛性执行另一检查。
在方框510中,确定子速率自适应滤波器122系数的峰值均值比(PAR)。参见图37,峰值对应于|h|的最大值(意味着峰值是沿着正向或负向,距离0轴的最大距离)。在图37中,峰值被标记。利用子速率自适应滤波器系数的绝对值计算平均值。如果PAR不大于PAR_Threshold,那么流程从判定菱形框512进入方框514,丢弃当前的测量结果,因为当前的测量周期并不提供子速率自适应滤波器122的足够收敛。但是,如果PAR大于PAR_Threshold,那么流程进入方框516,表示确保在当前测量周期内,子速率自适应滤波器充分收敛的两个条件被满足。在方框516中,查找子速率自适应滤波器122系数的最大值(对应于峰值)(这可由图7的最大值探测器124执行)及其对应的时间值(图37中的Tpeak)。流程随后进入将在图23中更详细说明的图21中的方框501。
图23图解说明图21的方框501的一个实施例,它确定纯延迟估计量(对应于图7的延迟确定电路126和估计的延迟130)。如上所述,通常在呼叫开始时估计纯延迟,如果某些条件被满足,可在呼叫中间改变纯延迟。一般来说,在呼叫中间改变纯延迟估计量的条件更稳健,因为(a)电话呼叫(PSTN呼叫和分组电话呼叫)的统计数字指示在呼叫中间,纯延迟并不经常改变,(b)从电话用户的观点来看,过于频繁地改变纯延迟估计量(由于试图过于密切地跟踪它们)会是破坏性的。于是,流程开始于判定菱形框528,确定这是否是首次通过该流程(即,表示电话呼叫的开始),或者以前估计的延迟是否等于0(它可对应于呼叫的开始,或者具有为0的先前估计延迟值的呼叫的中间)。如果这些情况中的任意之一为真,那么流程进入判定菱形框529,确定是否存在两个有效的测量结果。如上参考图22所述,利用SR_ERLE和PAR核实每个单个的估计延迟,只有当单个的估计延迟被核实之后,才保存对应的延迟测量结果。于是,每个测量周期(本实施例中每300毫秒),才存在获得另一有效测量结果的可能性。假定至少存在两个有效的测量结果(为了获得它们,至少需要两个测量周期),流程进入方框530,估计延迟的“快速跟踪”计算开始于方框530。
在方框530,将两个连续的有效测量结果填充到第一缓冲器中。流程进入方框532,获得这两个测量结果之间的离差和这两个测量结果的平均值。离差可以是这两个测量结果之间的差值。流程进入判定菱形框534,确定离差是否小于离差阈值1,平均值是否大于平均值阈值1。如果否,那么不计算新的估计延迟,流程进入图9的方框213。但是,如果这些条件被满足,那么流程进入方框542,计算新的估计延迟。于是,离差阈值1和平均值阈值1确保只有当这两个测量结果彼此足够一致时,才计算新的估计延迟。换句话说,如果脉冲响应达到其最大值时的后续测量结果相差太大,那么中断延迟的估计,直到后续的测量结果更一致为止(即相互更接近)。在方框542中,可使用下面的等式来计算新的估计延迟等式25新的估计延迟=平均值-偏移量在上面的等式中,平均值对应于在方框532获得的两个测量结果的平均值,偏移量是与在达到脉冲响应内的峰值之前,开始实质响应的时间的数量。即,参见图37,峰值对应于比T1(纯延迟)大T4的时间。于是必须从峰值处的时间(Tpeak)的值中扣除T4。偏移量对应于该T4值,可利用关于本领域中存在的不同但是典型的混合电路的脉冲响应的统计信息确定该偏移量,并且该偏移量可被编程到回波消除器20中。随后在方框544中应用新的估计延迟(对应于估计延迟130)。例如,应用估计的延迟130可对应于启用图解说明自适应滤波器28的一个实施例的图4中的可选的延迟块66。于是,通过使用纯延迟估计,自适应滤波器28所需的滤波器抽头的数目被减小,因为响应的纯延迟部分的系数可被认为为0。
注意备选实施例可能在判定菱形框529中需要多于两个或者少于两个的测量结果来继续“快速跟踪”计算。在一个实施例中,可能只需要一个有效测量结果,这种情况下,不计算离差和平均值(因为只使用一个测量结果)。另外,于是在确定是否进入方框542之前,能够对照平均值阈值1检查实际值,不需要离差计算。在需要两个以上的有效测量结果的备选实施例中,离差可对应于相对于有效测量结果获得的方差。于是,备选实施例可能需要任意数目的有效测量结果。
如果在判定菱形框528,确定这不是首次通过该呼叫(即,通常表示在呼叫的中间执行纯延迟的估计),并且在先的延迟估计量不为0,那么流程进入判定菱形框535,确定是否存在M个有效测量结果。在一个实施例中,M被选择为3或4或5(取决于回波消除器安装者选择的特定设置)。M的值可被选择成在更新(即改变)当前估计的延迟值之前,需要更多或更少的有效测量结果。M的值越大,那么流程越少进入方框536。于是,M可被选择为任意值,并不局限于3~5。如果不存在M个有效测量结果,那么流程进入图9的方框213,绕过改变估计延迟值的可能。但是,如果存在M个有效测量结果,那么流程进入方框536,用M个连续的有效测量填充第二缓冲器。
在方框538,计算离差,平均值,以及平均值和在先平均值之间的差值。如上所述,可按照各种方式计算离差。例如,如果M仅为2,那么离差可以只是差值。另一方面,离差可被计算成方差。在先平均值对应于在前一次通过方框538或532时计算的平均值。在方框538的计算之后,流程进入判定菱形框540,使用各种阈值来确定是否值得改变估计的延迟。于是,判定菱形框540的阈值可被用于建立在呼叫中间改变估计的纯延迟的更稳健标准。
在判定菱形框540,比较离差和离差阈值2,比较平均值和平均值阈值2,比较平均值与在先平均值的差值和差值阈值。如果离差小于离差阈值2,或者平均值大于平均值阈值2,或者如果差值小于差值阈值,那么流程进入图9的方框213,不计算新的估计延迟(即,保持当前的估计延迟)。但是,如果所有这些条件都被满足(离差小于离差阈值2,平均值大于平均值阈值2,和差值大于差值阈值),那么流程进入方框542,计算新的估计延迟(如同参考等式25所述),并在方框544中应用新的估计延迟,如上所述。和“快速跟踪”的情况一样,离差阈值2确保M个有效测量结果不会相互偏差过大,平均值确保M个有效测量结果足够大,足以保证改变纯延迟的必要性(例如,如果平均值相当小,那么可能不需要改变回波消除器的纯延迟,因为如果恰当地准备的话,自适应滤波器28能够容纳较小的纯延迟)。差值与差值阈值的比较防止当前的估计延迟被改变,如果差值过小(即,小于差值阈值),从而不值得改变的话。
图24图解说明可被回波消除器20用于减少MIPS(每秒百万条指令,数字信号处理器应用的一个常见量度)的可选监视模式的一个实施例。图24的流程是图9的方框211的一部分,它可被用于确定何时应执行图21的流程。该流程开始于方框518,计算回波返回损耗增益量(ERLE)。该ERLE对应于自适应滤波器28的收敛性的“良好性”(即,提供关于多少回波实际上未被自适应滤波器28消除的信息)。可使用下面的等式来计算ERLE等式26ERLE(n)=10*log10(PSin(n)/Perror(n))于是,ERLE对应于PSin和Perror之间的比值,n是样本数(注意可利用上面的等式1和2计算PSin和Perror)。于是在监视模式下,该ERLE值被用于进入图21的纯延迟调整过程。流程进入判定菱形框520,比较ERLE与ERLE阈值。ERLE大于或等于ERLE阈值,那么自适应滤波器28的收敛性足够,不需要执行纯延迟估计;于是,流程进入图9的方框213。但是,如果ERLE小于ERLE阈值,那么自适应滤波器28的收敛性不够,流程进入方框521,ERLE计数器被递增(注意该ERLE计数器可在每个呼叫开始时被初始化)。流程随后进入判定菱形框523,比较ERLE计数器与ERLE计数器阈值。如果ERLE计数器还没有达到ERLE计数器阈值,那么流程绕过方框522(对应于图21的流程),并进入图9的方框213。但是,如果ERLE计数器已达到ERLE计数器阈值,那么流程进入方框522,执行图21的整个流程(如上所述)。流程随后进入方框524,重置ERLE计数器,随后流程进入图9的方框213。
ERLE计数器和ERLE计数器阈值确保如果在方框518计算的ERLE是边界(过于频繁地发生从高于ERLE阈值到低于ERLE阈值的变化),那么不重新计算和更新纯延迟。即,在能够进入图21的流程之前,ERLE必须持续一段时间低于ERLE阈值(由ERLE计数器和ERLE计数器阈值控制)。这有助于避免纯延迟估计的快速和不必要的变化。
图8和25-27与可在回波消除器20内使用的音调检测的一个实施例相关,其中图8以方框图的形式图解说明了监视和控制单元30的一部分。图25-27以流程图的形式图解说明了图9的方框209的一部分。当给回波消除器20的至少一个输入(例如Rin 44或Sin 38)是音调时,自适应滤波器62的稳定性会受到影响,导致电信网络中令人不快的失真和服务质量的降低。音调是由在某一段时间内,具有恒定幅度、频率和相位的许多正弦波分量组成的信号。
试图使残留回波的平均功率降至最小的任意自适应算法(例如自适应滤波器(62)使用的自适应算法)都具有取决于Rin 44的自相关矩阵的动态行为。某些类别的接收路径信号可使这种矩阵成为奇异矩阵,这会暂时破坏自适应过程,使自适应滤波器62的滤波器系数偏离理想值。例如,正弦波信号(单频音调)会产生这种情况。这种情况下,正弦波信号Rin(n)=Acos(Ωn+φ)的自相关性r(k)由r(k)=A2cos(Ωk)/2给出,多数实际情况下这导奇异自相关矩阵(即,当其维数较大时)。当发生这种情况时,自适应算法的可能输出是具有正弦波形的一组滤波器系数(对于自适应滤波器(62)来说),这是实际的混合电路脉冲响应的不正确估计,图37中给出了其一个例子。
类似地,多频音调也会产生类似的问题,因为当分量的数目M不够大,或者矩阵具有较大维数时,它们的自相关性rM(k)=Σm=1MA2cos(Ωmk)/2]]>仍能产生奇异自相关矩阵。注意矩阵维数取决于用于估计混合电路的脉冲响应的滤波器系数的数目。于是,最好检测任意信令和控制音调的存在,随后停止自适应滤波器62的自适应处理,从而防止偏离一组良好的滤波器系数。
下面将参考图25-27说明的一个实施例使用诸如改进形式的Teager-Kaiser滤波器之类的多项式滤波器来指示任意频率的正弦波信号的存在,使用平滑相关算法来识别预定的单频音调,使用判定逻辑来可靠地检测音调。注意可使用任意适当的多项式滤波器。图8中图解说明的多项式滤波器只是一个例子。虽然这里描述的实施例通常关系到回波消除器20,不过它们可用在需要音调指示和检测的任意设备或电信设备,并不仅仅局限于回波消除器。
图8包括功率估计器134的一个实施例,它可通过修改后的能量运算符,将任意单频音调变换成常数。即,单频音调可被如下表示。
等式27x(n)=Acos(Ωn+φ)修改后的能量运算符Ψk可被表示成如下所示。
等式28Ψk(x(n))=X2(n-k)-x(n)x(n-2k)=A2sin2(kΩ)在上面的等式中,注意x2(n-k)-x(n)x(n-2k)对应于图8中的加法器144的输出(即,延迟器136的输出是x(n-k),延迟器138的输出是x(n-2k),乘法器140的输出是x(n)x(n-2k),乘法器142的输出是x2(n-k),加法器144的输出是乘法器142的输出与乘法器140的输出的负值之和)。注意输入信号x(n)可对应于Rin 44或Sin 38。此外,通过将等式27的x(n)代入x2(n-k)-x(n)x(n-2k),获得结果A2sin2(kΩ)。于是,注意Ψ取决于音调的幅度A和归一化频率Ω(Ω=2πf/fs,这里f是音调频率,fs是采样频率,一个实施例中,fs为8kHz)。这些等式中的参数k定义基础的子速率处理,k可以是任意整数,包括1。于是,以采样速率fs应用Ψk等同于以采样速率fs/k应用Ψ1。如上所述,子速率处理可被用于降低计算要求,只处理每个第k个样本。另外注意Ψk(x(n))并不取决于初始相位φ,不过当相位突然变化时,确实产生短期瞬时现象,它可被用于检测通信信号x(n)中的相位变化。
x(n)的功率(等式27)可用下面的等式来表示。
等式29Powerx(n)=A2/2于是,注意Ψk(x(n))提供缩放2sin2(kΩ)的x(n)的功率,以致
等式30Ψk(x(n))=Powerx(n)*2sin2(kΩ)关于Ψk(x(n))求解Powerx(n),于是形成下述等式等式31Powerx(n)=Ψk(x(n))csc2(kΩ)/2但是,实际上,信号x(n)(如上所述,在图8中图解说明的实施例中,它可对应于Rin 44或Sin 38)会被噪声破坏,导致噪声估计量Ψnoisyk(x(n))。随后可使用任意低通滤波器来使结果平滑,例如单极低通滤波器。于是,如图8中所示,功率估计器134包括接收幅度器146的输出(对应于加法器144的输出的绝对值)和来自存储器150的a,并提供Ψnoisyk(x(n))的平滑估计量P(n)的低通滤波器。可用下面的等式表示P(n)。
等式32P(n)=aP(n-1)+(1-a)|x2(n-k)-x(n)x(n-2k)|在上面的等式中,a是控制平滑低通滤波器的带宽的平滑参数(0<a<1)。注意a可以使用固定的或者可变的平滑参数。随后将P(n)提供给图8的音调指示判定单元166,音调指示判定单元166根据估计量P(n)的方差,指示是否存在音调,如同下面参考图26更详细说明的一样。虽然图26涉及的是功率,不过也可使用通信信号的其它函数,例如相关性(参见图27)或者甚至通信信号本身。
一旦存在音调,那么一个实施例检测具有或不具有相位反转的预定单频音调,例如2100Hz信令音调。下面将参考图27更详细地说明检测预定音调的一个实施例。于是,一个实施例可以只包括图26的音调检测,而如图25中图解说明的备选实施例可包括图26和27的算法之间的交互作用。此外,图26的实施例也可用于监视模式,以便在收到音调之后,重新启动自适应滤波器62的自适应过程。即,利用P(n)的方差,还能够检测信令音调和话音信号之间的转变(即,当方差大于某一预定阈值时,检测到所述转变)。
已知估计值P(n),音调指示判定单元166可被用于根据图26的流程检测音调。图26的流程检测其中P(n)的方差较小的时间间隔。每当在x(n)上存在单频音调时,预期与P(n)的较小方差对应的恒定水平的P(n)。如果音调由一个以上的频率组成,那么P(n)的方差将增大,但是平均水平仍然保持恒定。于是,根据方差水平,能够指示单步音调或多频音调。于是图26中,流程开始于方框588,将k、a、m、r、Plow和Nmin设置成所需值。根据系统中预期的音调频率范围和噪声电平,这些值可以是,例如k=2,a=0.9,m=1,r=0.95,Plow=2-8。Nmin取决于要检测的音调的采样速率和最小所需持续时间。流程进入判定菱形框590,确定P(n)是否大于Plow,这里Plow对应于表示要考虑的最小信号电平的阈值。如果否,那么流程进入方框598,检测计数器被重置(为0),随后进入方框604,指示未检测到音调,随后进入图25的方框554。但是,如果P(n)至少大于Plow,那么流程从判定菱形框590进入方框592,计算Pmin和Pmax。Pmin对应于相隔m个样本的P(n)的两个估计量中的极小值,Pmax对应于相隔m个样本的P(n)的两个估计量中的极大值。
等式33Pmin=MIN(P(n),P(n-m))等式34Pmax=MAX(P(n),P(n-m))通过比较Pmin和Pmax,估计方差水平。于是,流程进入判定菱形框594,比较Pmin和Pmax的比值(即,Pmin/Pmax)和音调指示阈值。如果它不大于音调指示阈值r,那么流程进入方框598,判定计数器被重置,随后进入方框604,表示没有检测到音调,之后进入图25的方框554。但是,如果Pmin/Pmax大于音调指示阈值,那么认为P(n)相当稳定(Pmin和Pmax足够接近),表示可能存在音调。这种情况下,流程进入方框596,检测计数器被递增(注意检测计数器可在呼叫开始时,或者在进入图26的流程之前的任意其它适当时候被初始化或重置)。
流程进入判定菱形框600,确定检测计数器是否大于Nmin。如果检测计数器未达到Nmin,那么流程进入方框604,指示没有检测到音调,随后进入图25的方框554。但是,如果检测计数器大于Nmin,那么流程进入方框602,检测音调(它对应于图8中音调指示器信号168的断言。流程随后进入图25的方框554。于是,当P(n)大于最小水平(Plow),P(n)的方差小于最小值(与音调指示阈值相关),并且检测计数器大于最小值(Nmin)时,检测到音调。检测计数器确保在检测到音调并断言音调指示器信号168之前,音调已至少存在预定的一段时间(对应于Nmin)。这有助于避免检测到音调和未检测到音调之间的快速转换,这会导致过于频繁地启用或禁用自适应滤波器62的自适应过程。
图8包括平滑相关器152的一个实施例。可按照不同的方式使用该相关器,包括检测任意预定的单频音调,检测调幅信号的载波,检测其频率接近于标称频率的多分量音调。平滑相关器152接收输入信号x(n)(如上所述,它可以是Rin 44或Sin 38)的样本,以及来自存储器150的三个控制参数(c、b和e),并产生两个相关估计量R0(n)和R1(n)。如下所述,这些相关估计量被用于指示预定音调的存在。控制参数c定义产生具有归一化频率Ωd=2πfd/fs的预定单频音调的二级数字振荡器w(n)的系数之一,这里如上所述,fs是输入采样频率。用状态w(-1)=1和w(-2)=c=cos(Ωd)初始化振荡器,并使用由w(n)=2*c*w(n-1)-w(n-2)给出的标准二级数字振荡器(注意该振荡器可对应于图8的振荡器164,接收c并提供w(n)作为给乘法器156和158的输出)。输入信号x(n)和延迟形式的输入信号x(n-e)(即图8的延迟器154的输出)与w(n)相关(通过乘法器156和158),随后通过低通滤波器(即,图8的低通滤波器160接收乘法器的输出(它可表示成x(n)w(n),图8的低通滤波器162接收乘法器156的输出(它可表示成x(n-e)w(n)))。作为给低通滤波器160和162的输入而提供的参数b(0<b<1)定义低通滤波器的带宽。另外,平滑滤波器152的一个实施例可将平滑单极低通滤波器用于低通滤波器160和162。另外,在备选实施例中,振荡器信号w(n)和延迟的振荡器信号w(n-e)可与x(n)相关,而不是使w(n)与x(n)和x(n-e)相关。另外,在一个实施例中,e是如下表示的延迟因子。
等式35 上面的等式对应于接近于90°的相差, 表示大于或等于其变元x的最小整数。
参见图8,低通滤波器160的输出是相关估计量R0(n),低通滤波器162的输出是相关估计量R1(n),这两者都被提供给音调指示判定单元166。R0(n)和R1(n)可被表示成R0(n)=b·R0(n-1)+(1-b).w(n)·x(n),R1(n)=b·R1(n-1)+(1-b)·w(n)·x(n-e)。于是,在音调指示判定单元(利用上述图26的流程)指出未知音调的情况下,利用图27的流程分析R0(n)和R1(n),以便识别预定的单频单调的存在(对应于振荡器164)。
图27的流程使检测的音调与预定的单频音调相关联,以便检测特定的音调。在图27中,流程开始于方框606,c、e、b、u、q和Mmin被设置成所需值。参数c直接与要检测的目标音调的频率相关,它还定义延迟值e。根据系统中的噪声电平,剩余的值可以是例如b=0.9,u=1,q=0.95,Plow=2-8。Mmin取决于采样速率和要检测的目标音调的所需最小持续时间。流程随后进入方框608,评估R(n),Rmin和Rmax,如下面的等式中所示。
等式36R(n)=MAX(|R0(n)|,|R1(n)|)等式37Rmin=MIN(R(n),R(n-u))等式38Rmax=MAX(R(n),P(n-u))R(n)指的是R0(n)和R1(n)之间的峰值幅度相关性,Rmin对应于隔开u个样本的R(n)的两个估计量中的极小值,Rmax对应于隔开u个样本的R(n)的两个估计量中的极大值。流程随后进入判定菱形框610,比较Rmin和Rmax的比值(Rmin/Rmax)与相关性阈值q(在一个实施例中,它被设置成0.95)。如果比值不大于相关性阈值,那么流程进入方框616,相关性计数器被重置(为0),随后进入方框618,指示没有检测到预定频率(Dr=0),随后进入图25的方框560。但是,如果比值大于阈值,那么流程进入方框612,相关性计数器被递增(注意相关性计数器也可在呼叫开始时被初始化或重置)。流程进入判定菱形框614,对照Mmin检查相关性计数器。如果相关性计数器不大于Mmin,那么流程进入方框618,指示没有检测到预定频率(Dr=0)。
但是,如果在判定菱形框614,确定相关性计数器大于Mmin,那么流程进入判定菱形框620,确定R(n)是否等于R0(n)的绝对值。如果是,那么流程进入方框622,以R0(n)的符号检测预定频率,即Dr=Sign(R0(n))。如果否,那么流程进入方框624,以R1(n)的符号检测预定频率,即Dr=Sign(R1(n))。从方框622或624,流程进入图25的方框560。于是,类似于在图26中描述的用于检测任意音调的流程,当R(n)的方差持续由相关性计数器和Mmin定义的预定一段时间较小时,检测到预定音调。如上关于检测计数器和Nmin所述那样,这有助于避免快速转换。图27的方法等同于使用由下面的等式给出的有效平滑相关性等式39Reff(n)=1/2{[R0(n)-R1(n)]sign(|R0(n)|-|R1(n)|)+[R0(n)+R1(n)]}上面的等式产生R0(n)或R1(n),取决于具有最大幅度的分量。
图25中图解说明了包括图26和27的流程的整个处理流程的一个实施例,图25根据一个实施例,图解说明图9的方框209的一部分。在图25中,流程开始于方框550,分别关于Dpositive(Dp)和Dnegative(Dn)选择最小计数器值(Lmin-p和Lmin-n)。这些值被选择成以致正相和负相的所需最小持续时间被满足。Dp对应于用于正相的计数器,Dn对应于用于负相的计数器。
流程随后进入方框552,检测关于任意单频音调的搜索。图26的流程可被用于确定任意单频音调的存在。流程进入判定菱形框554,如果没有检测到音调,那么流程进入558,Dp和Dn计数器被重置(为0),流程进入方框582,表示没有检测到音调,随后进入图9的方框211。但是,如果检测到音调,那么流程进入方框556,使检测到的音调与预定的单频音调相关联。于是,图27的流程可被用于执行方框556。流程进入判定菱形框560,确定Dr是否为0。如果是,那么在方框556(例如图27的方框618)中没有确定预定的频率,流程进入方框558,Dp和Dn计数器被重置。但是如果否,那么流程进入判定菱形框562,确定Dr是否大于0。如果是,那么流程进入方框564,递增正相计数器;否则,流程进入方框566,递增负相计数器。
在方框564或566,流程通过点G进入方框568,Flagpositive(Fp)和Flagnegative(Fn)被重置(为0)。流程进入判定菱形框570,如果Dp大于Lmin-p,那么在方框572中,Fp被设置为1,否则流程进入判定菱形框574,绕过方框572。在判定菱形框574,确定Dn是否大于Lmin-n,如果是,那么在方框576中,Fn被设置为1。如果否,那么流程进入判定菱形框578,绕过方框576。在判定菱形框578,如果Fp和Fn为0(即,如果Fp+Fn为0),那么流程进入方框582,指示没有检测到音调。即,如果计数器(Dp或Dn)都不分别大于某一最小值(例如Lmin-p或Lmin-n),那么没有检测到所需的音调。
但是,如果Fp+Fn不为0,那么流程进入判定菱形框580,表示检测到音调。如果只有一个计数器大于Lmin(Dp或Dn),那么Fp+Fn不大于1,流程进入方框584,表示在不存在相关性符号反转的情况下,检测到所需的音调。如果Dp和Dn都大于它们各自的Lmin,那么流程进入方框586,表示在存在相关性符号反转的情况下,检测到所需的音调。如果在相关性符号反转期间,R(n)的平均水平保持不变,那么指示相位反转。于是,图25的流程组合图26和27的流程,并且检查相位反转。备选实施例通过检测P(n)的突然变化,识别指定单频音调中的相位变化(不一定是180°)。
注意至此的描述假定自适应滤波器28内的可选的非自适应滤波器64并不存在(参见图4);于是,对自适应滤波器28的系数或抽头的任意引用类似于对自适应滤波器28内的自适应滤波器62的系数或抽头的引用。于是,在前面的说明中,不必与自适应滤波器28分离地提到自适应滤波器62。但是,在图28-36的说明中,非自适应滤波器64可能存在,并且可被看作自适应滤波器28的一部分。于是,在上面的说明内使用的自适应滤波器62的系数现在将更具体地称作自适应滤波器62的系数或抽头,因为自适应滤波器28可包括各种不同的滤波器,例如自适应滤波器62和非自适应滤波器64的组合。
如上所述,自适应滤波器62跟踪混合电路16引入的回波,从而通常需要大量的抽头。例如,为了跟踪图37的整个脉冲响应,自适应滤波器28的自适应滤波器62(假定采样速率为8kHz)需要256个抽头,256个抽头持续32毫秒,从而覆盖整个脉冲响应。随着自适应滤波器62的抽头数目的增大,计算复杂性增大,通常降低收敛速度。上面参考图20-24说明的方法允许检测纯延迟,以便允许自适应滤波器62使用覆盖纯延迟之后的脉冲响应的稀疏窗口。下面将参考图28-36说明的方法涉及缩短回波路径跨距的机制。即,除了检测微调纯延迟之外,还检测和压缩发散时间,以便缩短脉冲响应的回波路径跨距。如下所述,一个实施例增加固定或自适应滤波器,以便减小使残留回波降至最小所需的抽头的有效数目。
如图37中所示,脉冲响应固有的是零点和极点。零点阻止在对应频率的响应,但是极点增强在对应频率的响应。于是,通过增加一个或多个滤波器来补偿极点,脉冲响应可被压缩,从而需要较少数目的抽头。例如,采取具有表示为比值B(z)/A(z)的传递函数H(z)的IIR滤波器,滤波器A′(z)可被设置成补偿H(z)的极点,以致H(z)*A′(z)≈B(z)。如图2中所示,一个实施例使用可选的非自适应滤波器31和35,以致非自适应滤波器31的输出(即Sin 39)等同于与非自适应滤波器31卷积的回波。但是,跟在DC陷波滤波器45之后的非自适应滤波器31的存在在Sin 37中引入需要补偿的失真。于是,可引入非自适应滤波器35来接收误差信号46,和产生滤波后的误差信号47。假定非自适应滤波器31是具有传递函数A′(z)的FIR滤波器,非自适应滤波器35是具有传递函数1/A′(z)的反转IIR滤波器。但是,需要关于A′(z)的限制,因为FIR滤波器31的A′(z)的零点变成反转IIR滤波器35的1/A′(z)的极点。关于A′(z)的零点的这些限制将在下面进一步说明,并且防止非自适应IIR滤波器35的极点放大误差信号47。
备选实施例可使用非自适应滤波器的不同安排。例如,非自适应滤波器35可在加法器34之前,被安置在非自适应滤波器31及自适应滤波器62的输出端(它可导致相同的最终效果),而不是被安置在加法器34的输出端。在该实施例中,其后紧跟非自适应滤波器35的非自适应滤波器31会彼此有效地抵消,以便在Sin 38和Sin 39之间不需要任何滤波器(即,Sin 39和Sin 38相同)。从而,自适应滤波器28可被设计成包括可选的非自适应滤波器64(类似于非自适应滤波器35)。于是,在本实施例中,只需要一个额外的滤波器。但是,如果IIR滤波器被用于非自适应滤波器64,那么仍然需要关于稳定性的限制。即,由滤波器64的系数定义的多项式的所有根应小于1(即在单位圆内),下面将更详细地说明。注意如同在整个说明内使用的那样,对于传递函数H(z)=W来说,W的根对应于H(z)的零点,而对于H(z)=1/W来说,W的根对应于H(z)的极点。在其系数并不随着主自适应滤波器62的系数定期修改的意义上,可选的滤波器31、35和64是非自适应的。通常,它们可被看作其自适应率受事件驱动的自适应滤波器。
图28根据本发明的一个实施例,图解说明图9的方框213的一部分。流程开始于判定菱形框626,确定自适应滤波器缩短估计选项是否被启用。如果否,那么流程绕过图28的流程,进入图9的方框212。但是,如果被启用,那么流程进入判定菱形框628。可按照各种不同的方式启用自适应滤波器缩短估计选项。例如,它可以是自我启用的,例如响应系统重置。另一方面,可在图4的延迟单元66(如果存在的话)内检测到不同延迟的任意时间,或者每当检测到新的混合电路时,可启用自适应滤波器缩短估计选项。为非自适应滤波器64或非自适应滤波器31和35选择的系数取决于特定的混合电路16,因为每个不同的混合电路可具有不同的脉冲响应,所述不同的脉冲响应具有不同的纯延迟或不同的发散时间。
在一个实施例中,上面参考图20-24说明的纯延迟估计在呼叫开始时,或者依据影响混合电路的变化(例如依据呼叫转移或呼叫转发),快速检测利用子速率处理估计的纯延迟。参考图28说明的方法确定纯延迟和发散,以便获得非自适应滤波器64或非自适应滤波器31和35的滤波器系数。图28中的纯延迟计算通常更精确;但是,它通常花费更长的时间来确定。于是,除了减少自适应滤波器62所需的系数的有效数目之外,图28的方法还能够“微调”图20-24提供的纯延迟估计量。图28的方法确定需要加入延迟单元66中,以便补偿加入的滤波器(64或滤波器31和35)的任意额外的纯延迟。即,如下所述,缩短发散时间的滤波器的加入也会稍微增大纯延迟量,于是可据此更新(最初由图20-24的方法确定的)延迟单元66的延迟。如果使用图24的监视模式,那么每次ERLE低于ERLE阈值时,为延迟单元66确定一个新的纯延迟。此外,可响应ERLE低于ERLE阈值(即,响应由图21的流程为延迟单元66确定一个新的纯延迟),启用图28的自适应滤波器缩短估计选项。
在备选实施例中,可在无自适应滤波器缩短估计选项的情况下使用图20-24的流程;或者类似地,在无图20-24的纯延迟估计方法的情况下,自适应滤波器缩短估计选项可存在于回波消除器中。另一方面,在具有图20-24的方法的回波消除器中,可独立于图20-24的方法,启动自适应滤波器缩短估计选项。另外,如果该选项不被启用(或者该选项仍然用于确定自适应滤波器62的新系数,以及另外的非自适应滤波器64或另外的非自适应滤波器31和35的系数),那么可以简单地绕过额外的一个或多个滤波器(或者这些滤波器可以不滤波地使信号通过)。
如果在判定菱形框626启用该选项,那么流程进入判定菱形框628,确定ERLE是否足够好(可如等式26中所示计算ERLE,ERLE对应于PSin和Perror之间的比值,可利用上述等式1和2计算PSin和Perror)。为了确定ERLE是否足够好,可将它与阈值执行比较。例如,阈值可被设置成大于20dB的值,或者另一方面,可被设置在30~40dB的范围内。通常,ERLE越高,那么信号越好(因为误差功率Perror越小)。当不存在Sgen(近端谈话者信号)时产生足够高的ERLE,否则ERLE降低。另一方面,在继续确定ERLE,并比较ERLE和阈值之前,可从上面描述的近端信号检测器26确定近端谈话者信号是否存在。如果近端谈话者信号存在,或者如果ERLE不够好,那么流程进入图9的方框212,绕过图28的剩余部分。但是,如果ERLE足够好(高于阈值),那么流程进入方框630。即,当存在良好的信号,并且从良好的回波估计信号48获得误差信号46时,应执行自适应滤波器缩短估计选项。注意在备选实施例中,系统内的许多信号可被用于确定是否存在良好的信号,以便执行该选项。
在方框630,确定基于自适应滤波器62的当前系数的纯延迟和发散(注意方框630的细节将参考图29说明)。在方框630之后,流程进入方框632,根据在方框630中确定的纯延迟和发散,确定额外的非自适应滤波器64或滤波器31和45的系数W,以及与新的缩短形式的自适应滤波器62对应的自适应滤波器62的新系数(注意方框632的细节将参考图30说明)。流程随后进入判定菱形框634,确定新配置是否足够好。即,可使用不同的标准来确定新的配置是否令人满意。例如,在一个实施例中,如果减少后的新配置的系数的数目仍然大于减少后系数的所需数目,那么可重复方框632的处理,以便获得进一步减少的系数的数目。另一方面,判定菱形框634可能并不存在,以致只执行一次迭代,认为方框632的结果足够好。
如果在判定菱形框634,新配置足够好,那么流程进入方框636,重新配置自适应滤波器62。即,在方框632中确定的用于自适应滤波器62的新系数被载入自适应滤波器62,并结合非自适应滤波器64或者结合非自适应滤波器31和35使用自适应滤波器62(注意方框636的细节将参考图31说明)。另外注意在方框636中,通过将由添加非自适应滤波器而引起的任意必需延迟加入延迟单元66中的现有延迟值中,可更新延迟单元66中的延迟值。流程随后进入方框638,禁用滤波器缩短估计选项。即,通常不基于每个样本执行图28的流程。只有当需要时,例如在关系到启用自适应滤波器缩短估计选项的例子说明的那些情形下才执行图28的流程。但是,在备选实施例中,可基于每个样本执行图28的流程。
注意在图28中图解说明的实施例中,在确定ERLE足够好之后,顺序执行方框630-638。但是,在备选实施例中,可作为与回波消除器20的其它任务并行执行的独立线程,启动方框630-638(或者方框630-638的子集)。当完成图28的流程时,图28的方法可提醒回波消除器20结果准备就绪,从而能够更新自适应滤波器62。另一方面,可提醒回波消除器20已完成整个滤波器缩短。例如,可向回波消除器20提供信号或中断,以指示方框630-638(或者方框630-638的子集)的完成。
图29图解说明图28的方框630的一部分。即,图29的流程图解说明根据自适应滤波器62的当前系数,确定纯延迟和发散的一个实施例。流程开始于方框640,自适应滤波器62的系数的量值被转移到循环缓冲器中。即,获得自适应滤波器62的滤波器系数的瞬象,并将其保存在大小为N的,具有存储单元0~N-1的循环缓冲器中。自适应滤波器62的当前系数H可被表示成H=[h0,…,hN-1],这里h0,…,hN-1对应于系数,N对应于自适应滤波器62的系数或抽头的数目。于是,对应于|hn|的值在存储单元“n MOD N”被保存在循环缓冲器中,这里n对应于样本数目,“|x|”表示“x的量值”(并且对应于正值)。表达式“n MODN”对应于n的模数,它指的是运算n/N的余数。例如,如果N为256,n的值为270,那么n MOD N指的是14,其中|h270|的值从“存储单元270”(它超出大小为N的循环缓冲器的范围)绕到循环缓冲器的存储单元14。于是,如果n的值大于N,那么从n中不断地减去N的值,直到n落入0~N-1的范围内为止。类似地,如果n的值小于0,那么可连续地将N的值加入n中,直到n落入0~N-1的范围内为止。
流程随后进入方框642,关于每个系数h,以大小为LW的滑动窗口内的幅度值之和的形式,计算能量E(n)(n=0~N-1)。在一个实施例中,LW与目标窗口大小的长度,即减少自适应滤波器62的系数的有效数目之后,抽头或系数的目标数相关。例如,在一个实施例中,LW可对应于大小为10个样本的滑动窗口,这里10个抽头是所需的滤波器长度。于是,如果N为256(表示自适应滤波器62的256个系数h),那么确定E(n)的256个值,这里E(n)的256个值中的每个值都是(对应于LW内的10个样本的)10个幅度之和。于是,E(n)可被表示成如下面的等式40所示。
等式40E(n)=Σl=0LW-1|h[n+l-LW]N|,n=0,1,...,N-1]]>在上面的等式(以及这里说明的其它等式)中,注意符号[X]N对应于X MOD N。流程随后从方框642进入方框644,延迟D被设置成能量峰值的位置减去LW。即,在确定E(滑动窗口LW内的能量)的N个值之后,出现最大E的点(样本时间)减去LW对应于脉冲响应的纯延迟。于是,D可表示成如等式41中所示。
等式41D=arg(maxE(n))-LW n=0,1,…,N-1在上面的等式中,max E(n)指的是获得的E的N个值中的最大值,arg(maxE(n))指的是出现最大E的变元或点,这里“变元”对应于样本时间。于是,D对应于纯延迟。
流程随后进入方框646,发散时间对应于D和能量E小于预定阈值的另一位置之间的样本的数目。即,在n=0,1,…,N-1的范围内,E(n)(对应于脉冲响应的幅度)的一般趋势可被描述成通常增大到最大峰值,随后向下减小。于是,在到达最大值之后,E(n)减小,它减小到超出预定阈值之外的点对应于发散时间的终点,于是发散时间是在D和在到达其峰值之后,E(n)达到预定阈值的点(样本时间)之间的样本的数目。所述预定值可被设置成能够指示发散时间的终点的任意值。例如,在一个实施例中,它可被设置成192个样本(即,在8kHz采样速率下的24毫秒)。
图30图解说明图28的方框632的一部分的一个实施例,它确定(1)(非自适应滤波器64或非自适应滤波器31和35的)非自适应滤波器系数W,和(2)自适应滤波器62的缩短的系数。流程开始于方框648,确定(非自适应滤波器64或非自适应滤波器31和35的)新的滤波器系数W(注意方框648的细节将参考图32-36说明)。流程随后进入方框650,系数W与当前的自适应滤波器62系数卷积(即,与在图29的方框640中获得的瞬象卷积),以确定缩短的滤波器系数B,这里B包含在加入非自适应滤波器64或31和35之后,自适应滤波器62的新系数。流程进入方框652,确定缩短的滤波器系数B的新的纯延迟D和发散时间。于是,图29的流程及等式40和41可被用于实现方框652。流程随后进入方框654,根据B(即,具有预定长度的B的一部分)确定自适应滤波器62的新的自适应滤波器系数,并选择要被修改的滤波器系数的最大数目(即,B的选择部分中的样本的数目)。
图31图解说明了重新配置自适应滤波器62的图28的方框636的一部分的一个实施例。流程开始于方656,用先前在图30的方框654中确定的缩短的系数替换当前的自适应滤波器系数H。流程进入方框658,新系数W(在图30的方框648中确定)被载入非自适应滤波器(滤波器64或滤波器31和35)中。于是,通过将W载入一个或多个非自适应滤波器中,使它们能够允许自适应滤波器62具有减小的滤波器长度。流程随后进入方框660,用新延迟更新自适应滤波器28内的延迟单元66。例如,一个实施例可简单地用新确定的纯延迟D更新延迟单元66。备选实施例可确定当前保存在延迟单元66中的延迟,并根据需要更新现有值。另一方面,如果新延迟与延迟单元66内的现有延迟变化不大,那么可根本不更新延迟单元66。另外,在方框660中,一旦自适应滤波器62被载入方框656中的新系数,那么必须配置自适应滤波器62,以适应新数目的系数。
图32图解说明了确定新的滤波器系数W(对应于滤波器64或滤波器31和35)的图30的方框648的一个实施例。流程开始于判定菱形框662,确定是否存在任意预先计算的滤波器系数W。例如,可能存在包括预先计算的,与不同混合电路和通道条件对应的多组可能的不同W的库,于是,可简单地从所述库中选择一个新的W,通过将自适应滤波器系数与选自所述库的所有现有W卷积,并挑选提供最佳性能的一个W,流程进入图30的方框650。另一方面,可使用最代表不同情形的单个预先计算的W。于是,可按照各种不同的方式离线计算W,后面将参考图36说明其中的一种方式,于是能够使用预先计算的W。如果没有预先计算滤波器系数W,那么流程进入方框664,可使用用于确定新的滤波器候选者的任意方法来找出W。将参考图33-35更详细地说明确定W的各种实施例。
流程随后进入方框666,确定W的根。例如,W可被表示成W=[w0,w1,…,wM-1],这里w0,w1,…,wM-1对应于滤波器系数,M对应于滤波器系数的数目,以致W(z)可被表示成如下面的等式42中所示等式42W(z)=(w0zM-1+w1zM-2+…+wM-2z+wM-1)zM-1为了确定W的根,W(z)被设置成0,并求解z,这里z具有M-1个解答。于是,W(z)的根R可被表示成R=[r0,r1,…,rM-1],这里根包括复数和它们的共轭复数。于是,W(z)=0也可被表示成如下面的等式43中所示等式43W(z)=0=(z-r0)(z-r1)…(z-rM-2)(z-rM-1)z1-M流程随后进入方框668,施加对根的其它约束,以致W可按照FIR或IIR处理模式被使用,并且保持稳定。例如,如果W用在FIR实现中,那么不需要强加任何约束来确保稳定性,但是如果用在IIR实现中,那么根必须在单位圆内。单位圆指的是由对应于实数的x轴和对应于虚数的y轴确定的平面中的一个圆。该单位圆以原点(x轴和y轴的交点,对应于x轴和y轴上的0)为圆心,并且半径为1。对于不位于单位圆内的W(z)的每个根rk,rk被转置,以致它确实位于该单位圆内。另一方面,不是强使根在单位圆内,而是可利用使W(z)的根在以原点为中心,半径为ρ的圆内的约束条件,这里ρ小于1。于是,在该实施例中,对于W(z)的不在半径为ρ的圆内的每个根rk,rk被转置,以致它确实位于半径为ρ的该圆内。于是,如果||(即rk的量值)大于ρ,那么所述转置可被表示成如等式44中所示等式44rknew=ρ|rk|rk*,ρ<1]]>注意在上面的等式中,rk*表示rk的复共轭。流程随后进入方框670,根据修改后的根,构成新的滤波器系数Wnew。即,如果由于在方框668中施加的约束条件的缘故,任意根已被修改,那么利用修改后的根确定Wnew。可关于r0,…,rM-1将新的根代入上面的等式43中,产生新的W(z)(即Wnew)。随后Wnew作为滤波器系数W被用于流程的剩余部分(该流程下接图30的方框650)。于是,图32可被用于调整或计划W的根。
图36图解说明了用于在已知脉冲响应估计量的训练集的情况下,离线设计滤波器系数W的一种方法的一个实施例。流程开始于方框704,对于所有设计方法来说,在方框704,为训练集中的每个通道脉冲响应确定一个解答W。于是,如果2种设计方法被用于训练集中的8个通道脉冲响应,那么总共确定16个解答(W0-W15)。此外,图36的方法并不局限于确定W的任意特定方法。流程随后进入方框706,对于每个解答W,估计W和训练集中的每个脉冲响应的卷积Bk。于是,在存在16个解答(W0-W15)和训练集中的8个脉冲响应的本例中,总共估计128个卷积。于是对于任意解答W,每个Bk可被表示成Bk=[bk,0,bk,1,…,bk,N-1],这里bk,0,bk,1,…,bk,N-1是系数,N是Bk的长度。注意[k]8表示训练集中的通道数。
流程随后进入方框708,对于每个Bk,查找具有最大能量的理想长度(即目标滤波器长度)的发散区域。即,可利用上面的等式40和41查找最大能量的发散区域,这里LW对应于发散区的理想长度。于是,方框708的等式可被如下表示。
等式45Ek(n)=Σl=0LW-1|bk,[n+l-w]N|,n=0,1,...,N-1]]>上面的等式类似于前述等式40。在等式45中,N是特定Bk的长度,Ek(n)对应于滑动窗口LW内的能量(对应于发散区的理想长度)。于是,确定每个Bk的N个能量值(Ek(0),…,Ek(N-1))。于是,可利用下面的等式确定具有每个Bk的最大能量的发散区。
等式46Dk=arg(maxEk(n))-LW n=0,1,…,N-1等式46类似于前述等式41。在等式46中,Dk对应于在最大能量下Bk的纯延迟,于是发散区是开始于Dk,终止于Dk+LW,并且具有最大能量的区域(另一方面,发散区的终点可被定义成能量Ek(n)低于预定阈值的点,如前关于等式41所述)。于是,对于每个Bk,确定最大能量的发散区。流程随后进入方框710,对于每个Bk,估计指标值FMk。指标值被定义为Bk的最大能量max Ek(n)(来自方框708)和Bk的总能量Ek的比值。于是,可利用下面的等式确定Ek等式47Ek=Σl=0N|bk,l|]]>在上面的等式中,N指的是Bk的长度。于是,指标值可表示成如下所示。
等式48FMk=maxEk(n)Ek,n=0,1,...,N-1]]>在上面的等式中,N指的是Bk的长度。流程进入方框712,确定所有通道脉冲响应的平均指标值FMAVG。每个解答Wk(在上面的例子中,k=0,1…,15)将具有它自己的平均指标值FMAVG。流程进入方框714,选择最佳滤波器W,以致在所有可能的设计方法中,FMAVG被最大化。图36的方法可离线执行,最终选择的W可保存在回波消除器20中,并根据需要载入非自适应滤波器64、31或35中。
注意虽然W的上述说明假定另外的滤波器是非自适应的,不过代替非自适应滤波器64、31和35可以使用自适应滤波器。但是,如上所述,需要施加对W的约束条件,以确保稳定性,并且如果滤波器是自适应的,那么需要基于每个样本强加稳定性约束条件,因为滤波器自适应会导致不稳定的滤波器。
图33-35介绍确定W的各种可能设计方法。例如,图33-35可对应于在图36的方框704中使用的设计方法中的三种。另一方面,图33-35的任意或全部方法可由回波消除器20在其工作期间执行。在一个实施例中,回波消除器20可执行所有三种设计方法来确定W(例如在图32的方框664中),并最终(在图28的方框632之后)确定哪种方法确定最佳解答。注意与在根据修改后的根重构新的滤波器系数之后提供最佳解答相比,一种不同的方法可在修改W的根(图32的方框668)之前,提供最佳解答。于是,根据实施例,回波消除器20可在不同的时候分析或选择不同的方法。另一方面,回波消除器20可使用单一的设计方法。
图33根据本发明的一个实施例,图解说明图32的方框664的一部分,它对应于确定新的滤波器系数W的一种设计方法。流程开始于方框672,自适应滤波器62系数的发散区被转移到循环缓冲器,以致延迟D(在方框644中计算)被补偿。于是,延迟补偿系数G可表示成G=[g0,g1,…,gN-1],这里g0,g1,…,gN-1是是延迟补偿系数G中的各个系数,N是自适应滤波器62的长度。于是,H(与在图29的方框640中获得的原始瞬象对应的,自适应滤波器62的未补偿系数)和G之间的关系可如下表示。
等式49gi=h[D-i]N,i=0,1,...,N-1]]>在等式49中,gi是保存在对应的循环缓冲器的第i个存储单元中的延迟补偿系数。图38图解说明图37的例证脉冲响应的一个实施例,该实施例已由延迟D(对应于图37中的T1)执行时间补偿,以致脉冲响应开始于发散时间(由图37中的T4+T2定义)。于是,H的系数代表图37的脉冲响应,而G的系数代表图38的时间补偿脉冲响应。流程随后进入方框674,确定理想的滤波器长度。例如,在一个实施例中,如上所述,理想的滤波器长度被定义为10(这种情况下,脉冲响应的发散时间要求被压缩到10个样本中)。参见图38的例子,理想滤波器长度对应于T5,0和S1之间的时间,这里0定义发散时间的开始(还对应于G的第一个系数,因为G已被延迟补偿),S1定义理想滤波器长度的终点。
一旦确定了理想滤波器长度,那么清除理想滤波器长度内的发散区的系数,以确定残留系数V。即,gi被设置成0,i=0,1,…S1。于是,V可表述成V=
,这里K是V的非零分量的数目,V的每个非零分量被如下定义。
等式50vj=gS1+jj=0,1,…K-1于是,参见图38的例子,G的对应于时间T5的系数被设置成0,V的系数代表残留失真,即,与时间T6对应的那部分脉冲响应。流程进入均衡残留失真V的方框676-680。
在方框676中,计算V的快速傅里叶变换(FFT)。流程进入方框678,计算FFT(V)的倒数I,这里I=1/FFT(V)。流程进入方框680,以I的倒转FFT(IFFT)的形式计算W1,这里W1=IFFT(I)。于是,W1是V的倒数,并且可用于均衡残留失真V。流程进入方框682,从具有最大能量的预定长度的W1的窗口确定W(类似于图29上的通道发散的估计),这里预先确定的长度是自适应滤波器抽头的理想数目。流程随后进入方框684,利用W的Euclidean量值(即L2标准)使滤波器系数W归一化。
图34根据本发明的一个实施例,图解说明了确定系数W的一种备选方法。流程开始于方框686,利用延迟补偿滤波器系数G(来自方框672和等式49),确定如上所述的理想滤波器长度,并确定卷积矩阵C。卷积矩阵C可被定义成如下所示。
等式51C=SL·ConGSL对应于可如下表示的选择矩阵。
等式52SL=
在等式52中,0是(N+M-L-1)×L零矩阵,I是(N+M-L-1)×(N+M-L-1)单位矩阵。在该等式中,N对应于G的长度,M对应于W的长度(实现理想自适应滤波器长度的非自适应滤波器抽头的预定数目),L对应于理想自适应滤波器长度。ConG对应于G的卷积矩阵,可被表示成如下所示。
等式53 于是,通过忽略其初始L行,从延迟补偿滤波器系数G的卷积矩阵ConG获得矩阵C,在结束该设计过程之前,它将定义缩短的通道的系数。
流程进入方框688,bw被定义为设置为行矢量的等式51的矩阵C的第一行。流程进入方框690,计算矩阵A。
等式54A=CTC在等式54中,符号CT表示矩阵C的转置。流程进入方框692,关于W求解由AW=bw给出的方程组。流程随后进入方框694,使滤波器系数W归一化。本领域的技术人员会马上认识到上面的解答对应于试图通过考虑自适应滤波器62系数与W的全部卷积,均衡失真的方程组CW=[1,0,…0]T的最小均方差解答。
图35根据本发明的另一实施例,图解说明了确定系数W的一种备选方法。流程开始于方框696,利用延迟补偿滤波器系数G(来自方框672和等式49),定义如上所述的理想滤波器长度,并确定卷积矩阵C。于是,在图35中使用在等式51中定义的相同C矩阵。流程随后进入方框698,如同图34的方框690中一样,计算矩阵A(参见等式54)。流程进入方框700,估计WTW/WTAW的最大解答。注意WTW/WTAW提供由矩阵A加权的W的归一化抽头的能量的比值,于是,WTW/WTAW的最大解答使在WTW=1的条件下的能量WTAW降至最小。另外注意在I是单位矩阵的情况下,WTW/WTAW等同于WTIW/WTAW,以致解答W是与可利用估计本征矢量的任意现用算法计算的该对(I,A0的最大本征矢量对应的广义本征矢量。流程随后进入方框702,在方框700中确定的滤波器系数W被归一化。
于是,图33-35提供可用于确定滤波器系数W的三种设计方法。注意图33的方法试图均衡位于理想(目标)滤波器长度之外的残留失真。图34的方法更全面,因为它试图在考虑自适应滤波器62系数与W的全部卷积的同时,均衡失真。但是,图34导致更复杂的等式。图35的方法试图在卷积自适应滤波器62的系数和W之后,实际使残留失真的能量降至最小。如上所述,所有方法可由回波消除器20实现,并且在修改W的根之前,或者在根据修改后的根,重构新的滤波器系数W之后,选择最佳的解答。
在前面的说明书中,参考具体实施例说明了本发明。但是,本领域的普通技术人员会认识到在不脱离下面的权利要求中陈述的本发明的范围的情况下,可做出各种修改和变化。例如,这里教导的任意方法可具体体现为计算机硬盘,软盘,3.5″磁盘,计算机存储磁带,磁鼓,静态随机存取存储器(SRAM)单元,动态随机存取存储器(DRAM)单元,电可擦除(EEPROM,EPROM,快速)单元,非易失性单元,铁电或铁磁存储器,紧致磁盘(CD),激光盘,光盘,以及任意类似的计算机可读介质中的一个或多个上的软件。另外,方框图可不同于图解说明的那些方框图,并且可具有更多或更少的方框,或者被不同地排列。另外,流程图也可被不同地排列,包括更多或更少的步骤,被不同地排列,或者可具有可被分成多个步骤的步骤,或者可相互同时执行的步骤。因此,说明书和附图应被看作是对本发明的举例说明,而不是对本发明的限制,所有这样的修改意图包括在本发明的范围内。
上面关于具体实施例说明了益处,其它优点和问题的解决方案。但是,所述益处,优点,问题的解决方案,以及会导致产生任意益处,优点或解决方案的任意要素不被解释成任意或全部权利要求的关键的,必需的,或者基本特征或要素。这里使用的术语“包含”或其任意其它变形意图覆盖非排除包括,以致包含一系列要素的过程,方法,物品或设备并不仅仅包括这些要素,相反可包括未明确列出的其它要素,或者这样的过程,方法,物品或产品固有的其它要素。
权利要求
1.一种用于执行音频信号的非线性处理,以便选择性地影响背景噪声的方法,包括选择性地估计背景噪声,产生估计的背景噪声电平;确定所述估计的背景噪声电平是否超过预定标准;和选择性地将预定的背景噪声注入音频信号中。
2.一种回波消除器,包括自适应滤波器;与所述自适应滤波器耦接的控制电路;和与所述控制电路耦接的非线性处理器,用于选择性地估计背景噪声,以及如果检测到近端信号和远端信号中的至少一个,就暂停背景噪声的估计。
3.一种执行近端信号检测的方法,包括确定接收路径的输出的功率;确定误差信号的功率;和使用所述接收路径的输出的功率和所述误差信号的功率,检测近端信号是否存在。
4.一种回波消除器,包括近端信号检测器,用于确定接收路径的输出的功率和误差信号的功率,以便检测近端信号是否存在;与所述近端信号检测器耦接的自适应滤波器;与所述自适应滤波器耦接的控制电路;和与所述控制电路耦接的非线性处理器。
5.一种执行回波消除的方法,包括执行自适应滤波,以便消除回波;与所述执行自适应滤波的步骤同时地估计纯延迟;和选择性地使用所述纯延迟来调整自适应滤波器窗口的位置。
6.一种执行回波消除的方法,包括确定单个的估计延迟值;和执行所述单个的估计延迟值的非线性滤波,从而产生纯延迟;和选择性地使用所述纯延迟来调整自适应滤波器窗口的位置;并且执行自适应滤波,以便消除回波。
7.一种回波消除器,包括用于消除回波的第一自适应滤波器;和与所述第一自适应滤波器耦接的监视和控制单元,所述监视和控制单元包括用于估计纯延迟的第二自适应滤波器,其中所述纯延迟被用于调整所述第一自适应滤波器的自适应滤波器窗口的位置,其中所述第二自适应滤波器包括对单个的估计延迟值滤波,以便产生纯延迟的非线性滤波器。
8.一种用于指示通信信号中是否存在音调的方法,包括将所述通信信号延迟预定的第一延迟,产生第一延迟信号;将所述通信信号延迟预定的第二延迟,产生第二延迟信号;组合所述第一延迟信号、所述第二延迟信号和所述通信信号,从而产生估计信号;和利用所述估计信号来指示所述音调是否存在。
9.一种检测通信信号中的音调的音调检测器,包括用于提供第一延迟信号的第一电路;用于提供第二延迟信号的第二电路;用于组合所述第一延迟信号、所述第二延迟信号和所述通信信号,从而产生估计信号的估计器电路;和用于利用所述估计信号来指示所述音调是否存在的音调指示电路。
10.一种用于降低具有多个滤波器系数的滤波器的发散的方法,所述方法包括当近端信号的某一参数低于第一预定阈值,并且远端信号的某一参数低于第二预定阈值时,暂停所述多个滤波器系数中的至少一部分的自适应。
11.一种用于降低具有多个滤波器系数的滤波器的发散的方法,其中所述滤波器具有包含第一状态和第二状态的多种状态,所述方法包括确定自适应滤波器的当前状态;当所述自适应滤波器的当前状态是所述第一状态时,保存所述多个滤波器系数;和当所述自适应滤波器的当前状态是所述第二状态时,不保存所述多个滤波器系数。
12.一种用于改进通信系统中使用的自适应滤波器的稳定性的方法,所述方法包括选择性地调整误差信号的增益;和响应于选择性地调整误差信号的增益,确保通信系统的增益不大于1。
13.一种用于指示音调是否存在于通信信号中的方法,包括将通信信号延迟预定的延迟,产生延迟信号;产生生成的正弦波信号;组合所述延迟信号,所述生成的正弦波信号以及所述通信信号,从而产生第一相关信号和第二相关信号;和使用所述第一相关信号和所述第二相关信号来指示是否已检测到音调。
14.一种用于对信号滤波的滤波器,包括用于以第一自适应率对信号滤波的第一自适应滤波器;和与所述第一自适应滤波器耦接的、以第二自适应率对信号滤波的第二自适应滤波器,其中所述第一自适应率小于所述第二自适应率。
15.一种用于执行信号的自适应滤波的方法,包括以第一自适应率对信号滤波,从而产生第一滤波输出;和以第二自适应率对所述第一滤波输出滤波,从而产生第二滤波输出,其中所述第一自适应率小于所述第二自适应率。
16.一种用于改进自适应滤波器的稳定性的方法,包括监视自适应滤波器中的多个滤波器系数;检测所述多个滤波器系数的预定模式;和如果检测到所述预定模式,那么将不同的多个滤波器系数载入自适应滤波器中。
全文摘要
公开一种具有回波消除器(20)的通信系统(10)。回波消除器的一个实施例包括用于估计从发送的信号中消除的反射回波的估计量的自适应滤波器(28)。回波消除器还可包括用于当存在近端谈话者信号时,防止自适应滤波器自适应的近端谈话者信号检测器(26)。回波消除器还可包括进一步减少任意残留回波,并保持背景噪声的非线性处理器(32)。回波消除器还可包括用于监视自适应滤波器的滤波器系数和增益,以保持回波消除器的稳定性,估计纯延迟,检测音调和注入训练信号(41)的监视和控制单元(30)。回波消除器还可包括用于减小自适应滤波器的长度的非自适应滤波器(31)。
文档编号H04B3/23GK1672341SQ03817780
公开日2005年9月21日 申请日期2003年4月24日 优先权日2002年6月24日
发明者卢西奥·F·C.·皮索艾, 罗曼·A.·蒂坝, 佩利·P.·赫, 罗杰·A.·史密斯 申请人:飞思卡尔半导体公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1