转:回音消除技术

作者: 时间:2008-12-29 来源:52RD硬件研发
 

 


在过去三十年中,回音消除(Echo cancellation)已演变发展出属于它自己的专业领域。一般人将它视为是一个难以理解的技术领域,想要了解它并取得可接受的实务性成果,往往必须具备深厚的理论基础和特殊的专业知识才能做到。

回音消除最早被用于长距离语音通道的传输中,但对于回音消除的需求已延伸到透过封包或无线网路传输的每一条语音通道中,其应用包括VoIP(Voice over IP)、Voice over DSL或第三代行动网路(3G)等等。由于有愈来愈多的语音是透过封包网路来传送,而封包式语音的本质上即存在着延迟的议题,因此迴音消除就成了主要的设计考量之一,也是在语音解决方案的整体成本中相当重要的一部分。

显然地,回音消除的成本将成为电信设备中的一部分,而这部分的成本与元件的尺寸及功耗息息相关。成本固然重要,但更重要的考量还是品质的达成。对于行动网路用户来说,语音品质一直是他们最关切的议题;对电信业者来说,语音也仍是他们最能获利的服务项目,因此语音的品质是不容妥协的。

传统的回音消除技术是从七十年代的早期作法发展而来,这类技术的采用相当昂贵。为了满足今日与未来的网路需求,回音消除技术的挑战正在于如何有效地降低成本并持续改善语音品质。

经过三十年的发展,回音消除技术的效益确实有所提升,但在演算法的建置上,基本上并没有太大的改变。透过今日高密度晶片所发展出的新技术,除了能揭露回音消除技术的神祕性外,还能够大幅地降低成本,并且以可量测的方式来提升解决方案的品质与效能。 自适应滤波器
在所有回音消除器的核心部分是自适应滤波器(Adaptive Filter, AF)。自适应滤波器会建立起回音路径的数学表示法或脉冲响应(impulse response)。这个表示法一旦被建立后,它会被储存在一般所知的H暂存器(H register)中。当自适应滤波器使用H暂存器来处理某个信号(Rin)时,输出值是一个近似于预期中Rin迴音的新信号值。此一新信号可以从传回的信号(Sin)中被减去,以移除或消除回音现象。


 


转:回音消除技术
图一 回音消除器运作架构


由于自适应滤波器只能估算回音的近似值,因此它并不能将回音完全消除,也就是说,仍然有些残余的迴音留在信号当中。在任何时刻中,H暂存器中的准确性正是决定残余回音音量的关键所在。如果残余的回音量大到听得见的音量,这时就得靠非线性处理器(non linear processor, NLP)来加以移除,NLP是每个迴音消除器组成架构中的一部分。

自适应滤波器的范围很广,可以有各种的解决方案。所有的自适应滤波器解决方案都有相同的目标,也就是找到一套最佳化的数学模型,让此模型和系统实际响应之间的误差能达到最小──这个过程被称为收敛(convergence)。

自适应滤波器演算法在技术作法上的竞争发展,可以上溯到19世纪早期,当时高斯(Carl Friedrich Gauss)和拉普拉斯(Pierre-Simon Laplace)两位数学大师分别对此问题提出了不同的解决途径,也引起了极大的争议。高斯的最小平方(Least Squares, LS)法将误差的平方做了最小化处理;拉普拉斯的解决方法则是对实际的误差进行最小化处理。针对特定的应用以及当时可行的技术,基于这两项途径又衍生出许多的解决方案,它们都试着要改善将模型与实际响应之间的误差达到最小的能力。不过,多数人都同意最小平方法较适用于在回音消除环境的系统中。基于建置 LS 的成本考量,多数的回音消除器采用最小均方(Least Means Squares)法来实现 LS 解决方案。

语音的回音消除设备对自适应滤波器演算法有两个主要的要求:快速性(sprint)和持久性(marathon)。快速性的要求是在通话一开始时即能快速的收敛,但回音路径改变时,也能快速地重新收敛。由于在一开始时还不知道回音路为何,初始收敛必须要能很快的完成。在快速的收敛后,还需要有一个自适应滤波器演算法来继续改善收敛状况,此演算法不管回音中所夹杂的任何回传噪音。这种持久性在整段通话中都会持续进行,包括不说话和同时说话(double talk)的含混语音状况。在整个过程中,回音路径的收敛是不能中断的。

简单地说,自适应滤波器的设计具有两个互相矛盾的特性,也就是快速收敛和高度的稳定性,如何同时实现这两项特性,正是设计上的主要挑战。
 


线上滤波器 vs. 离线滤波器
最简化的自适应滤波器型式会持续地对输入信号进行处理。自适应滤波器会根据每个新的采样数据来更新H暂存器。这个新的采样数据会被分配到一个权重(weight),此权重会决定它与H暂存器中既存的数据何者较为重要。此权重通常被称为自适应增益(adaptation gain)、步长大小(step size)或遗忘因子(forgetting factor)。在通话一开始时或回音路径改变后,此增益值应该会较大,其目的是要让H暂存器快速地逼近当下的回音路径。

当double talk时,必须分配一个很小的自适应增益值(有时此增益是 0)给新采样数据,其目的是要避免原本有效的H暂存器遭到不良的影响。在所有其他的状况中,一个低的增益值是用来让收敛速度放慢,而以较大量的取样数据来进行平均,此举能在H暂存器中产生更逼近的迴音路径。有一套用来决定自适应增益的逻辑,它控制了自适应滤波器的稳定性和响应特性,此逻辑正是一个自适应滤波器中最重要的技巧所在。

在上述演算法中的最大问题之一,就是如何区分出近端通话(包括double talk和背景噪音)和回音路径改变。如果近端通话被误认为回音路径改变,新采样数据就会因获得较大的自适应增益值,进而对原先收敛地很好的H暂存器造成破坏。不过,如果一个迴音路径的改变被误认为是近端通话,新取样数据所得到的低增益将让H暂存器无法在合理的时间内估算出新脉冲响应的真实特性。

为了解决这个问题,回音消除器演算法可以在完整地保有当前线上H暂存器的条件下,同时采用第二个自适应滤波器(称为离线滤波器)。此一离线滤波器会尝试对最新的取样数据进行收敛,以建置另一快速收敛的离线H暂存器。当这个离线H暂存器对迴音路径的匹配度达到比线上滤波器建置的H暂存器更佳的状态时,它就会取代原先的H暂存器。为线上应用选择正确的H暂存器,正是建立快速且稳定的离线滤波系统的关键所在。

比较这两个H暂存器的选择过程,通常称为离线滤波器选择(offline filter selection)。此演算法採用一个H误差暂存器来建立每个滤波器的收敛特性,进而能进行正确的比较。要实现稳定、不受double talk干扰和快速收敛的自适应滤 波器特性,此一误差的计量与标准统计方法的整合正是其中的关键。 简化回音消除器范例
我们将使用一个简化的回音消除范例来清楚地说明离线滤波器选择的决定过程。此一回音消除器包含一个延迟为 0 的单阶(single tap)H暂存器,这表示此一回音消除器只能量测衰减,但不能检查延迟。每隔1024个取样(128ms),此设备会针对这些取样计算出一个离线暂存器。当这些取样数据被用来计算出离线H暂存器后,它可能会取代线上暂存器(如果确信它是更佳的回音路径模型),也可能被捨弃。此一回音消除器会使用最小平方演算法,来计算它的H暂存器,如下图所示:


 


转:回音消除技术



图二的范例显示一个延续了3072个取样的测试通话。为了满足此范例的目的,此一回音路径是一个起始样本为2048个、幅度为0.5的单阶脉冲(impulse)。后1024个取样包含一个不同的回音路径,它的幅度是0.2,也就是说,在第2048个取样时会出现回音路径的一次改变。


 


转:回音消除技术
图二 回音消除测试范例


从图二可以很容易地看出,在第一个收敛时段(P0)中,其H暂存器中包含的误差应该是最小的,因为在Sin信号中存在最少的噪音量。由于相似的理由,在中间收敛时段(P1)中,其H暂存器包含的误差应该是最大的,因为它存在最大的噪音量。最后一个时段(P2)的误差应该是介于两者之间。显然地,一个好的自适应滤波器应该选择由时段P0所产生的H暂存器,只要它完成了(在第1024个取样后)就立即用于线上处理;由P1时段产生的H暂存器则应该被捨弃,因为在P1时段中因噪音而形成很大的误差;最后,由P2时段产生的H暂存器,其幅度与自P0时段后即被採用的线上H暂存器有很大的差异,因此它应该取代线上H暂存器以反应出迴音路径的改变。此一操作的细节将在下文中更具体的说明。


找出回音估算中的误差
自适应滤波器透过测量Rin和Sin信号(参考图一)之间的相关性来区分出回音和噪音的不同,其中Sin讯号是近端信号(背景噪音和近端语音)和回音信号的总合。要找出Sin信号中的迴音,需要将它和Rin进行交叉关联,因为此回音会是Rin的线性函数,不过,Rin讯号与回音之间的关联性很好,但它和近端信号的关联性就小很多。虽然近端信号(Snear)和Rin是独立的信号(通常不相关),但其相关性并不会等于零,这种相关性的结果正是让H暂存器产生误差的原因。

为了解释上述自适应滤波器的行为,势必会遭遇到不少的数学挑战。首先,在每次收敛后的H暂存器误差必须被估算出,但并不可能完全正确的计算出它的误差。如果真的算出来了,那就可能透过从H暂存器的估计值减去误差来找出实际的回音路径。不过,透过数学方式来计算出误差的标准偏差(standard deviation)还是可能实现的,此标准偏差值为围绕在H估计值附近的误差统计分布提供了一个可信度的参考。H暂存器误差的标准偏差会被储存在H误差暂存器中(见表一)。
  标准偏差倍数 大于预期的的误差百分率1σ 31.7310500792σ 4.550026393σ 0.2699796064σ 0.0063342485σ 0.000057336σ 0.000000197


表一 标准偏差倍数与其代表的误差百分率


有许多统计方法被用来确定一个随机过程的标准偏差。在此应用中,我们可以看出此误差是基于高斯分布的。使用高斯分析并知道误差的标准偏差,就可以算出误差超过某一特定值的概率,此特定值通常用标准偏差的倍数来衡量。表一显示不同标准偏差的倍数,以及试验中会产生大于这些特定值的误差在理论上的百分率。

H误差暂存器的用途在于确定H暂存器中的数值究竟产生了多大的误差。当H暂存器的实际误差比预期的误差来得低时,就会对演算法做出的决策进行修正。不过,如果实际的误差大于预期的数值时,就会做出错误的决策。

换个角度来看,在整个过程中,采用一个大的误差因子会拖慢决策确定的过程,因此必须在快速的反应时间和错误行为的数量之间做出妥协。在此一离线滤波演算法中必须针对稳定性做出妥协,这是在设计上必需知道的重要概念。

在上述的回音消除范例中,每经过1024次取样会做一次决定(也就是每次会有一个新的H暂存器可用)。如果决策过程採用 4σ (四倍标准偏差)误差因子,平均每15800个决策中将有一个是错误的(即0.0063%的错误率)。若使用8KHz的取样率,那每33分钟的操作中平均会出现一次错误的决策。如果改采 6σ 误差因子,每二年的操作才会出现一次错误的决策。


选择正确的过滤器
现在可以将这些资讯用于离线滤波器的选择过程。每取样1024次,就能计算出一个新的H暂存器值。采用下列的步骤来与线上H暂存器数值进行比较,就能确定回音路径是否有改变。

首先会进行一项一致性的测试,也就是计算出两个H暂存器之间的差异。如果两个暂存器之间的差异值大到无法解释它们的误差状况,新的H暂存器会自动成为新的线上H暂存器,并将基于旧迴音路模式所收集到的所有资讯都删除掉。这是一次回音路径的改变。

如果两个H暂存器的比较结果是一致的(它们通过先前的测试),具有最小误差的H暂存器会被保留来做为新的线上暂存器。

在P0时段之后,一个新的H暂存器被计算出,为了确定将它放在线上使用是否安全,它所代表的必须是非零的回音路径。换句话说,此一H暂存器的数值必须大于H误差暂存器与误差因子的乘积,此一回音路径才是有意义的。在我们的范例中使用 4σ 误差因子,结果能满足上述的条件[ 0.54 > (0.02 X 4) ],因此这个新的H暂存器可以被在线上使用。进行此一验证是很重要的,因为在经过一段double talk时段所计算出来的H暂存器,通常会包含很大的误差,此误差会放大返回的回音,採用此H暂存器的结果比什么都不做来得更糟。

在收敛时段P1之后,新的H暂存器会与线上H暂存器互相比较,以确定它们之间的一致性。线上暂存器和离线暂存器之间的差异必须大于两者的误差,才可做出回音路径发生改变的判断。在此范例中採用 4σ 误差,可以发现并不能满足阈值条件[(0.54 – 0.4) > ((0.02 + 0.13) X 4)],因此,这两个H暂存器是一致。

第二个测试是要检查那一个H暂存器具有最小的H误差暂存器,一般来说,这表示此一H暂存器是迴音路径的最佳模型。很显然地,线上H暂存器(来自P0时段)是较好的线路模型,因而被保留下来。

最后,当P2时段计算出的H暂存器出现后,将会进行与上述相同的回音路径改变测试。在这个例子中,两者的差异大于误差,因此可判断出回音路径发生改变 [(0.54 – 0.22) > ((0.02 + 0.05) X 4)]。新的H暂存器会取代线上H暂存器,即使新计算出的H误差暂存器高于线上的H误差暂存器。 模型的延伸
现在要将用来解释简化迴音消除器的上述数学工具延伸到更实务性的建置上。主要的差异是回音的尾部通常比单阶作法更长,这意味着它们也具有一个延迟分量。上述的概念也会再被用于1024阶(128ms有效尾部)的回音消除器之上。

H误差暂存器的延伸有其重要性。H误差暂存器可以在单一频段上找出误差的特性,并将H误差暂存器放置于这个频率区域,而不是在单阶作法上找出一个幅度误差(amplitude error)的特性。为了清楚地说明,图三中显示了在这个时域中的一般迴音路径脉冲响应,这正是H暂存器中所包含的。我们可以採用快速傅利叶转换(FFT)来将H暂存器从时域转换为频域。此一转换为一个1024阶的H暂存器产生了512个独立的频段,每个都具有幅度和相位的分量。


 


转:回音消除技术


图三 时域中一般迴音路径的脉冲响应


在图四中并没有显示相位的分量,一个以500Hz为中心的单频段从图四中被抽取出,并重新绘制出包含相位分量的图五。图五中的向量长度与图四中的幅度完全相符。图五中起于原点的向量角度代表相位分量。这两个具有相同幅度响应但不同相位的H暂存器有不同的回音路径。举例来说,不同延迟的相同混合会产生完全相同的幅度响应,但不同的相位。


 


转:回音消除技术


图四


转:回音消除技术
图五


现在H误差暂存器可以与频域中的H暂存器相关联。在简化的回音消除器中,H误差是一个没有符号的幅度,可以代表H暂存器中的正误差或负误差。频域中的H误差将H暂存器的向量端点往各个方向移动,而不是受限于只能增大或减小H暂存器的值,请见图五中的太灰色误差图。频域中的H误差可以同时改变频段的幅度和相位。误差圆的半径是由H误差暂存器值(即标准偏差)与误差因子的乘积来加以定义,误差因子愈大,这个圆也会愈大。表一中列出实际回音路径脉冲响应超出误差圆的机率。

1024阶H暂存器的复杂问题已被分解为512个较小的、更容易处理的问题。只要所有的计算都采用包含相位的复杂数值,那每个频域都可以使用和上述相同的简化回音消除器来进行处理。


加速多频段的决策
当采用了独立频段自适应滤波器的选择技巧后,有一些线路事件(line event)的发生会同时对所有512个频段发生影响。不过,因为实际的讯号有不同的频谱分布,有些频段在Rin中可能都不会得到有效的能量信号,有些频段则可能从近端(Snear)得到大量的噪音。这些频段对于一个独立性决策的确定来说都没有什么帮助,相反地,其他频段可以用来建立线路状况的清楚描述。

在实务上,这样做让回音路径改变的侦测能比其他可行方式更快速的进行。坚实的统计数学方法又一次让512组观察(每频段一组)的组合能够做出更准确的一般性决策。举例来说,如果多数的频段显示出现了回音路径的改变,即使有些频段并没有侦测到回音路径的改变,这时所有的频段都可以视为此一改变已经发生。显然地,当一个频段中的分析具有更高的准确性时,就只需要从其他频段中得到较少的资讯来确定回音路径的改变。

举例来说,在一个单一频段中,可能需要采用 5σ 误差因子来确定回音路径的改变(以便将侦测到伪回音路径改变的机率降低)。不过,即使在此一准确性的等级中并没有任何一个单频段侦测到回音路径的改变,当采用 4σ 误差因子时却有四个频段侦测出回音路径的改变,这显示在此一决策中的可信度至少达到相同的等级。不同的误差因子可在任何数量的频段中做为判断之用。 追求更佳的品质
使用最小平方(LS)演算法和高斯方程式的特性化,可以建置一套极为稳定及快速收敛的自适应滤波器演算法,它让设计者能够确实控制在每小时操作中的错误行为数量。此建置的关键在于消除自适应滤波器中的不务实性。

透过以离线滤波器选择过程取代标准线上自适应滤波器的方式,此滤波器不只变得更为可靠和有效率,而且更容易建置和进行稳定性测试。想要在实际的回音消除器建置这些特性以降低成本和功率,以及大幅的增加晶片密度,这需要具备极专业的技术能力,然而此技术途径能够成功地揭露当前用来建立准确性较低的回音消除器在技术上的神祕性。

这些基于高斯原创理论,并经过过去两世纪以来不断地发展、修正和证实的数学技巧,确保了回音消除器可以采用实务性而非想像性的方式来被开发,并能传送极高品质的回音消除语音。在本文描述的虽然是特殊的范例,但此技巧可被延伸到商用回音消除器的建置中所需要的任何参数组当中。

放眼未来,在先进语音网路的建置中,包括自适应噪音降低(adaptive noise reduction)和语音回音控制(acoustic echo control)等其他语音处理的技术面向都成了愈来愈重要的要素。踏实的科学基础同样能被用来处理这些问题,并提供较今日可行做法更佳的解决方案。(作者Frederic Bourget为Octasic公司产品管理主任)

你可能感兴趣的:(技术)