过去,回波消除设计被认为是一件高技术性工作,需要许多技术和技巧才能实现满足性能要求的设计。不过,对于今天的设计工程师而言,通过利用一种新的自适应滤波器方案,回波消除设计工作变得更容易。
本文将给出新的自适应滤波方案,讨论在线和离线(off-line)滤波以及算法设计等问题。同时,本文还将提供设计实例,阐明所提出的滤波方法为什么能改进VoIP、VoP及其它语音应用中的回波消除结构设计。
回波消除器主要特征
所有回波消除器的核心部分都是自适应滤波器(AF),它建立了回波路径的一个数学表示或冲激响应(参见图1)。建立的这个数学表示一般保存在一个H寄存器中。
当自适应滤波器采用H寄存器来处理信号Rin时,输出是一个近似于Rin预期回波的一个新信号。然后,可以通过从返回的信号中减去这个新信号来消除回波。
由于自适应滤波器只能逼近回波,因此它无法将回波完全消除,信号中仍然会有一些残留的回波。H寄存器在任意给定时刻的精确度将决定残留回波的大小。如果残留回波过大,则应使用非线性处理器(NLP)来予以消除。
自适应滤波技术的多样性 自适应滤波技术的差别很大,在回波消除器设计中,设计人员可以采取的自适应滤波方法很多。尽管如此,所有自适应滤波器方案的目的都是相同的,即找到能使系统实际响应和数学表示之间的误差趋于最小的最佳数学模型。这个过程称为收敛(convergence)。
语音回波消除设备中的自适应滤波算法主要有两个方面的要求:快速性和持久性。快速性包括在一次通话开始时快速收敛,以及在回波路径改变时快速重新收敛。初始收敛必须快速完成,因为此时回波路径还是未知的。快速的初始收敛之后,还必须有一个自适应滤波算法来继续改进收敛,而无论在包含回波的信号中有什么噪声。这个算法将持续整个通话过程,包括静默和含混话音(double talk)的传输时间。在这个阶段,回波路径上必须一直保持收敛。
简言之,自适应滤波器设计中的困难在于同时实现两个相互矛盾的特性:快速收敛和高度的稳定性。
在线滤波器与离线滤波器
最简单的自适应滤波器将连续地对输入信号进行处理,根据每个新的采样数据对H寄存器进行更新。这个新采样数据将被分配一个权重,以决定该采样数据相对于H寄存器中包含数据的重要性。这个权重通常称为自适应增益、步长大小或遗忘因子(forgetting factor)。
在一次通话起始时或回波路径改变之后,为了让H寄存器迅速逼近当前的回波路径,自适应增益应当较大。出现含混话音时,自适应增益应当非常低,以防有效H寄存器恶化。在所有其它情况下,应当采用一个较小的增益,以便缓慢收敛,因为一般而言,大量的采样可以使H寄存器更精确地逼近回波路径。
用于确定自适应增益的逻辑决定了自适应滤波器的稳定和响应特性,自适应滤波器设计的主要技巧体现在这个逻辑之中。
开发自适应增益控制算法的最大问题之一在于区分含混话音与回波路径的改变。如果错将含混话音误认为回波路径变化,应用于新采样数据的高自适应增益可能让这个含混话音破坏此前收敛得很好的H寄存器。而如果某个回波路径变化被误认为含混话音,应用于新采样数据上的低增益将妨碍H寄存器及时了解新冲激响应的特性。 为了很好地解决这个问题,回波消除器可以在保持当前在线H寄存器不变的同时再利用第二个自适应滤波器,它可称为离线滤波器。离线滤波器将尝试在最近的采样数据上收敛,以构建能够快速收敛的离线H寄存器。如果离线H寄存器达到一个状态,相比在线滤波器中的H寄存器能更好地匹配回波路径,它就将取代在线滤波器。选择正确的H寄存器进行在线应用是组建快速稳定的离线滤波系统的关键所在。
通常,把选择合适的H滤波器称为离线滤波器选择。在这个选择的过程中,采用了一种算法来比较两个H寄存器。这种算法使用一个H误差寄存器来建立每个滤波器的收敛特性,以便进行正确的比较。这个误差度量与基本的统计方法是实现稳定和不受含混话音干扰的、快速收敛的自适应滤波器特性的关键。
简化回波消除器的实例
为了清楚地说明离线滤波器选择中的决策过程,本文将使用一个简化的回波消除器。这个回波消除器包含一个延迟为0的单阶H寄存器,这意味着该回波消除器只能测量衰减但不能检查延迟。这个装置每隔1024个采样(128ms)便会采用这1024个最新的采样数据来计算出一个离线H寄存器。一旦离线H寄存器通过使用全部采样数据计算出来之后,它有可能代替在线H寄存器(如果确信它是回波路径的更好模型),也有可能被舍弃。回波消除器将采用最小平方算法来计算其H寄存器。需要注意的是,最小平方算法的定义为:
图2显示了一个持续3072个采样的通话测试。为了实现本例的目的,回波路径为一个初始2048个采样的幅度为0.5的单阶冲击;后1024个采样包含了一条不同的回波路径,其幅值为0.2。因此在第2048个采样处有一个回波路径变化。
观察图2很快就可以知道,第一个收敛时段(P0)的H寄存器中包含的误差应该最小,因为此时Sin信号中噪声最小。同理可知,中间收敛时段(P1)的H寄存器中包含的误差应该最大,因为它的噪声最大。最后时段(P2)则介于二者之间。
显然,一个好的自适应滤波器应该尽早地选择在P0期间产生的H寄存器 (在第1024个采样),并立即将其应用于在线滤波。同时,由于P1时段内噪声误差较大,应当舍弃P1期间产生的H寄存器。最后,P2期间产生的H寄存器在幅度上与(从P0结束起开始应用)在线H寄存器差别显著,因此应该用它来代替在线H寄存器,以反映回波路径的改变。下文将更具体地讨论这个处理过程的细节。
找出误差 自适应滤波器通过测量Rin与Sin之间的相关性来区分回波与噪声(见图1),Sin信号是近端信号(背景噪声和近端话音)与回波信号之和。在Sin信号中检查回波需要将其与Rin进行交叉关联,因为回波是Rin的线性函数。虽然Rin信号与回波的相关性很好,但它与近端信号的相关性将会小很多。尽管近端信号(Snear)与Rin是相互独立的(通常不相关),但相关性通常并不为0,这正是导致H寄存器误差的原因。
为了验证图2中所揭示的上述滤波器特性,必须执行几个数学操作步骤。首先,必须对每次收敛后的H寄存器误差进行估计,要精确计算H寄存器的误差是不可能的,在可能条件下,可以通过从H寄存器的估计值中减去误差来找出准确的回波路径。
不过,计算出误差的标准偏差在数学上是有可能实现的。标准偏差值提供了误差在H估计值周围统计分布的一个可信度,H寄存器误差的标准偏差将保存在H误差寄存器中(见图2)。
确定随机过程标准偏差的统计方法很多。在图2中,可以证明误差是服从高斯分布的。采用高斯统计方法,在已知误差的标准偏差的条件下,可以计算出误差超过一个特定值的概率,该特定值通常用标准偏差的倍数来衡量。
H误差寄存器用来确定H寄存器中数据值的实际误差程度。只要H寄存器的实际误差小于期望误差,这个算法所做出的决策就是正确的。但是如果实际误差超过了期望值,就可能做出错误的决策。
在上面的回波消除实例中,每1024个采样就会做出一个决策。如果在决策过程中采用4σ(四倍标准偏差)误差因子,平均每15500个决策中将有一个是错误的,即错误率为0.0064%。如果采样率为8kHz,那么每33分钟将出现一个错误决策。如果采用6σ误差因子,每两年才会出现一个错误决策。
选择正确的滤波器 离线滤波器选择过程可以利用一个具有可预测准确度的潜在误差(H误差寄存器)。每隔1024个采样,就计算出一个新的H寄存器值并与在线H寄存器值进行比较,考察每个H误差寄存器便可确定回波路径是否发生了变化。
为了进行比较,设计人员执行一项一致性测试来计算这两个H寄存器之间的差异。如果这个差异超出了误差范围,新H寄存器就会自动成为新的在线H寄存器,从而舍弃在旧回波路径模型基础上收集的所有信息,这通常是由于回波路径改变所导致的。反之,如果发现这两个H寄存器是一致的(其差异在误差范围之内),那么潜在误差最小的那个H寄存器就将被作为新的在线H寄存器。
在P0时段之后,计算一个新的H寄存器。为了确定是否适用于在线,它必须表示一个非零的回波路径。换句话说,为了使回波路径有意义,H寄存器的数值必须大于H误差寄存器与误差因子的乘积。在前面的例子中,采用4σ误差因子时,显然可以满足上述的条件[0.54>(0.02 ×4)],因此新的H寄存器可以应用于在线。执行这一验证很重要,因为在一个包含大量含混话音的时段内计算出来的H寄存器有可能会引入很大的误差,使得返回的回波被放大,这比不执行任何处理操作更为糟糕。
在收敛时段P1之后,将新的H寄存器与在线H寄存器进行比较,以确定它们的一致性。H寄存器值的差异将与它们的误差之和进行比较。只有当在线寄存器与离线寄存器之间的差异大于任一误差时才表明检测到了回波路径的变化。使用4σ误差时,本例不能满足阈值条件[(0.54 - 0.4)> (0.15 ×4)],因此这两个H寄存器是一致的。
第二个测试是为了检测哪个H寄存器的误差寄存器最小,通常这将会是最好地模拟了回波路径的那个H寄存器。显然,在线H寄存器(来自P0时段)是更好的线路模型,因而被采用。
最后,当P2期间计算出的H寄存器已知时,将执行同上所述的回波路径变化测试。本例中,二者之间的差异大于误差,因而检测到了一个回波路径变化[(0.54 - 0.22)> (0.07× 4)]。新的H寄存器取代了在线H寄存器,尽管新计算出的H误差寄存器比在线的误差H寄存器大。
模型扩展
现在,必须将针对上述简化回波消除器阐述的数学工具扩展到更实际的应用中去。主要的差别是回波的尾部通常比单阶更长,这意味着它们也有一个延迟分量。因此,上面介绍的概念将重新应用于一个1024阶(128ms有效尾部)的回波消除器。 扩展H误差寄存器并非无足轻重。H误差寄存器可将误差特征化到单个频带上,从而将H误差寄存器放置在频域,而不是将一个幅度误差特征化到单阶上。为了清楚地揭示这一点,图3显示了时域中的一个典型回波路径脉冲响应,这就是H寄存器中所包含的。采用一个FFT变换,可以将H寄存器从时域转换到频域。对于一个1024阶H寄存器,这个转换将产生512个独立的频带,每个频带都有一个幅度成分和一个相位成分(见图4和图5)。
从图4中抽取出一个以500Hz为中心频率的单频带,并重新绘制在图5中,其中包含相位分量。图5中矢量的长度与图4中的幅度相吻合。图5中起于原点的矢量其角度代表了相位分量。冲激响应的相位很重要,因为幅度相等而相位不同的两个H寄存器代表了不同的回波路径。例如,延迟不同的混合路径将产生相同的幅度而相位不同。
现在,H误差寄存器可以在频域与H寄存器相关联。在简化的回波消除器中,H误差是一个没有符号的幅值,可以代表H寄存器中的正误差或负误差。频域中的H误差可以将H寄存器矢量的端点沿各个方向移动,而不仅仅局限于将H寄存器的值增大或减小。这可以由图5中灰色的误差圆来表示。频域中的H误差可以改变一个频带的幅值和相位。误差圆的半径通过误差因子乘H误差寄存器值(即一个标准偏差)来定义,误差因子越大,圆就越大。
这样,复杂的1024阶H寄存器的问题就被分解成512个较小,且更容易处理的问题。每个频带都可以象上述的简单回波消除器一样进行处理。
加速多频带决策
当将选择技巧应用到独立频带自适应滤波器上时,会发生一些同时影响所有512个频带的线路事件(line event)。不过,因为实际信号的频谱分布各不相同,有些频带在Rin中可能永远不会有任何有效的信号能量,或者在Sin中可能会有大量的噪声。将上述算法单独应用于这些频带可能不会在适当时间内做出一个在统计上有效的H寄存器决策。相反,其它频带可以快速建立一个非常清晰的线路状况的描述。
如果将这些统计方法进行扩展,使它能结合各个频带的选择信息,就可以更快更准确地检测出回波路径的变化。例如,在单个频带中,一个回波路径变化的判决可能需要采用5σ的误差因子,以便将检测到伪回波路径变化的几率降到最低。这时没有任何单个频带检测到回波路径变化,在采用4σ误差因子时,有4个频带检测到回波路径变化,判决的可信度起码达到同一水平。采用任何数量的频带时,可以用不同的误差因子来做出判决。
作者:Fredric Bourget
高级产品经理
t@,
Thomas Awad
Octasic公司的创建者之一
@.
Martin Laurence
Octasic公司的创建者之一
ce@
Octasic公司