当前位置:文档之家› 回音消除技术

回音消除技术

回音消除技术在过去三十年中,回音消除(Echo cancellation)已演变发展出属于它自己的专业领域。

一般人将它视为是一个难以理解的技术领域,想要了解它并取得可接受的实务性成果,往往必须具备深厚的理论基础和特殊的专业知识才能做到。

回音消除最早被用于长距离语音通道的传输中,但对于回音消除的需求已延伸到透过封包或无线网路传输的每一条语音通道中,其应用包括VoIP(Voice over IP)、Voice over DSL或第三代行动网路(3G)等等。

由于有愈来愈多的语音是透过封包网路来传送,而封包式语音的本质上即存在着延迟的议题,因此迴音消除就成了主要的设计考量之一,也是在语音解决方案的整体成本中相当重要的一部分。

显然地,回音消除的成本将成为电信设备中的一部分,而这部分的成本与元件的尺寸及功耗息息相关。

成本固然重要,但更重要的考量还是品质的达成。

对于行动网路用户来说,语音品质一直是他们最关切的议题;对电信业者来说,语音也仍是他们最能获利的服务项目,因此语音的品质是不容妥协的。

传统的回音消除技术是从七十年代的早期作法发展而来,这类技术的采用相当昂贵。

为了满足今日与未来的网路需求,回音消除技术的挑战正在于如何有效地降低成本并持续改善语音品质。

经过三十年的发展,回音消除技术的效益确实有所提升,但在演算法的建置上,基本上并没有太大的改变。

透过今日高密度晶片所发展出的新技术,除了能揭露回音消除技术的神祕性外,还能够大幅地降低成本,并且以可量测的方式来提升解决方案的品质与效能。

自适应滤波器在所有回音消除器的核心部分是自适应滤波器(Adaptive Filter, AF)。

自适应滤波器会建立起回音路径的数学表示法或脉冲响应(impulse response)。

这个表示法一旦被建立后,它会被储存在一般所知的H暂存器(H register)中。

当自适应滤波器使用H暂存器来处理某个信号(Rin)时,输出值是一个近似于预期中Rin迴音的新信号值。

此一新信号可以从传回的信号(Sin)中被减去,以移除或消除回音现象。

图一回音消除器运作架构由于自适应滤波器只能估算回音的近似值,因此它并不能将回音完全消除,也就是说,仍然有些残余的迴音留在信号当中。

在任何时刻中,H暂存器中的准确性正是决定残余回音音量的关键所在。

如果残余的回音量大到听得见的音量,这时就得靠非线性处理器(no n 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暂存器中既存的数据何者较为重要。

此权重通常被称为自适应增益(adapt ation 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暂存器包含的误差应该是最大的,因为它存在最大的噪音量。

最后一个时段(P 2)的误差应该是介于两者之间。

显然地,一个好的自适应滤波器应该选择由时段P0所产生的H暂存器,只要它完成了(在第1024个取样后)就立即用于线上处理;由P1时段产生的H暂存器则应该被捨弃,因为在P1时段中因噪音而形成很大的误差;最后,由P 2时段产生的H暂存器,其幅度与自P0时段后即被採用的线上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暂存器是迴音路径的最佳模型。

相关主题