Echo 和软 VoIP PBX 系统

作者:David Mandelstam

我们大多数人都经历过电话线路中令人不安的回声。低音量的回声加上可辨别的延迟会使线路完全无法使用,通话在交换几句断断续续的句子后便会被终止。传统上,回声问题通常出现在长途或国际电话中,尤其是那些涉及卫星连接的电话。

对于许多刚接触基于软件的 VoIP 电话系统(如 Asterisk)的人来说,语音回声现象会带来不愉快的意外。即使对于那些在传统 PBX 系统或专有 VoIP 设备工作后才进入该行业的人来说也是如此。突然之间,回声成了本地通话中的一个问题,而传统上麻烦的长途和卫星电话却完全没有回声。

在本文中,我们将讨论回声的起源,以及它如何在 VoIP 世界中显现出来,特别参考 Asterisk 和其他基于软件的电话系统。

回声从何而来?为什么它是一个问题?

电话系统中的回声主要由两种现象引起:第一种是由于阻抗不匹配造成的电回声,第二种是由于麦克风拾取音频输出造成的声音回声。这两种来源都会产生类似的效果,必须以类似的方式处理。主要的区别在于,电回声是线路连接的属性,在整个通话过程中基本保持不变,而声音回声的强度和延迟会随着回声源声学环境的变化而变化。例如,在使用免提手机通话时,回声特性会随着说话人的移动而改变。

所有类型的电信号总是在线路终端处被反射,除非线路末端的负载与线路本身的阻抗额定值完全匹配。事实上,“75 欧姆电缆”的含义恰恰是为了没有信号反射,电缆必须以 75 欧姆的负载端接。线路阻抗是电缆的属性,仅受电缆几何形状的影响。由于没有电缆在其长度上是几何形状完美的,也没有负载阻抗是完全准确的,因此线路终端处总是会存在一些反射。

就数字信号而言,只要反射是数据传输的一小部分,反射就不会导致读取比特值时出错。因此,数字系统可以容忍相当大的回声。

然而,人耳具有完全不同的特性;它是一种极其灵敏的乐器。人耳能听到的最轻的声音的声功率比疼痛阈值处的功率小约一千亿亿倍。只要声音的变化仅约为 100 倍左右,耳朵听到的声音水平就相似。因此,即使在电气上看起来很小的反射,对于人耳来说,听起来也可能与原始信号的音量差不多。

而且,传统的电话电路远非完美。来自模拟线路的双线电路在称为混合器的设备处端接,这些设备在数字化之前将双线模拟信号转换为四线信号。混合器处的负载变化很大,低成本用户环路布线的阻抗也是如此。结果是,几乎每个涉及电路中任何位置的模拟电话的呼叫都会产生电反射,这些反射会被耳朵解释为令人烦恼的回声。

如果是这样,为什么回声不是每个电话中的问题呢?答案是,如果在说话者说话的同时听到回声,它会被听作是侧音的一部分,而不会被注意到。只有当说话和听到自己的声音回声之间存在延迟时,回声才会变得明显。这就是为什么回声只是传统长途电话的问题。美国东西海岸之间的往返延迟超过 30 毫秒,这足以使回声引起 раздражение。卫星延迟则更长。

VoIP 本质上在其协议中内置了数据包化、解数据包化和处理延迟。这就是为什么,从回声的角度来看,每个 VoIP 呼叫都像一个非常长途的呼叫。

Echo and Soft VoIP PBX Systems

图 1. VoIP 和模拟电话系统如何交互以引起令人烦恼的回声

图 1 显示了一个典型的 VoIP 场景。回声在 VoIP 电话上听到:模拟线路上的呼叫者只听到正常的侧音,因为没有信号延迟。由于延迟是感知回声的必要组成部分,因此切换模拟或 T1/E1 流量的传统 PBX 没有感知到的回声问题,因为它们的固有端到端延迟很低。正是 VoIP 中固有的数据包化和处理延迟导致现有回声成为问题。

如何处理回声

看过描绘长途对话的老式黑白电影的人可能会记得,呼叫者对着送话器大喊大叫,以便对方重复所说的话。呼叫者不得不大喊大叫的原因是接收器音量低。衰减音量是以前在强大的数字处理可用之前处理回声的方式。听众听到的信号被设备大大衰减。回声通过衰减器两次——出去一次,回来一次——这提供了一定程度的回声减少。使用衰减来消除回声并不是一个令人满意的解决方案,当数字回声消除可用时,这种方法就被放弃了。然而,这项技术在软 PBX 世界中仍然有价值,它可以作为一种机制,去除在某种程度上有限的软件回声消除器完成工作后仍然存在的回声。

数字回声消除基于从接收信号中减去一个基于系统对短促声音脉冲响应的校正,称为有限脉冲响应 (FIR)。FIR 只是您从短促的 ping 中听到的回声。

Echo and Soft VoIP PBX Systems

图 2. 典型系统对单位脉冲的响应

图 2 显示了以每秒 8,000 次的速率采集的 128 个数字声音样本或抽头,涵盖 128/8 = 16 毫秒。脉冲发生在零时刻。点表示已归一化为 1 的脉冲大小的各个样本值。

首先要注意的是,回声似乎不是很强。脉冲的值为 1,响应中的最高峰值小于 0.25,并迅速下降到微小的值。但是由于耳朵的灵敏度,该系统产生的回声听起来几乎与说话的声音一样响亮,导致 VoIP 系统上出现完全无法容忍的回声。

来自脉冲的回声的影响持续约 10 毫秒(80 个抽头)。为了正确消除回声,需要考虑来自所有非零抽头的输入。这就是为什么回声消除器中抽头的数量很重要。抽头的数量始终是 2 的幂:32、64、128、256 等等。自然,抽头数量越多,计算负载和内存要求就越高。

此回声从抽头 7 开始,或在脉冲后约 1 毫秒。延迟是由于数字和模拟线路上的切换和传输延迟造成的。您可以看到为什么回声消除发生在靠近回声源的地方很重要。如果在跨大西洋呼叫的远端消除此回声,则会有更多的前导空闲抽头,因此真正的回声会向后移动,甚至可能超出抽头样本。当在具有良好回声消除的系统上听到回声时,通常是因为意外复杂的系统具有切换和传输延迟,这些延迟已将 FIR 向后移出抽头样本。

对于此呼叫,超过约 70 个抽头后,回声尾部很小。在实践中,此回声消除器在 64 个抽头时也同样有效,特别是如果通过更好的缓冲消除了前导 8 个抽头。这将使回声消除计算负载减少一半。

Echo and Soft VoIP PBX Systems

图 3. 典型的回声消除器

FIR 用于计算一系列校正因子,这些因子表示接收信号的回声分量。在数学上,每个语音样本要减去的回声由维度等于抽头数量的两个向量的点积给出。例如,在 128 抽头回声消除器上,它看起来像这样

回声 = (128 个 FIR 值) ⋅ (128 个传输的先前抽头样本)

通过从接收到的信号中减去这个“回声”,可以获得基本无回声的接收信号。然而,由于舍入误差和非线性,仍然会残留一些回声。如果信号足够小,非线性处理器会切断剩余的接收信号。在更高性能的回声消除器中,非线性处理器然后会替换“舒适噪声”,即背景噪声,这样线路听起来不会死寂。

获得 FIR 是一个迭代训练过程,该过程基于测量在减去计算出的回声后剩余的信号,并更改 FIR 估计值。此过程需要线路另一端保持静音——没有双讲。双讲检测器检测到双方同时讲话时,会禁用 FIR 优化过程,直到双讲条件停止。迭代 FIR 优化收敛速度相当慢,但由于计算以每秒 8,000 次的速度完成,因此在通话开始后一两秒钟内,一个好的回声消除器将完全训练完成。

软 PBX 环境中的回声消除

回声消除是一个非常占用 CPU 的过程。一个用于 92 个同步呼叫或四条 PRI T1 线路的完整回声消除器消耗大约一个 GIPS 的算力。计算主要涉及 8 位运算,并且在其他方面对于 PC 架构或 CPU 缓存来说不是最佳的。因此,软件回声消除是限制软 PBX 系统性能的主要因素之一。

为了提高整体系统性能,软件回声消除器通常经过高度优化以减少 PC 负载。为了节省 CPU 周期而做出的一个折衷是,更新 FIR 估计值的“学习”算法不是在每次处理语音样本时都运行,而是运行频率低得多。因此,系统训练缓慢。您经常会在对话中听到相当大的回声,直到回声消除器训练完成并且回声减弱。

另一个折衷方案是缺少非线性处理器,非线性处理器在软回声消除器中通常被完全消除。这就是为什么在 Asterisk 等系统上,即使在训练之后,通常也会残留一些回声。

在 Asterisk 下的目标是在当前的 PC 技术下为完整的四 E1 卡(120 个通道)提供软件回声消除,并且仍然能够进行其他有用的语音和数据处理。这确实是可能的,但正如所讨论的,回声消除器训练缓慢,并且在训练后通常仍然会残留一些回声。

您可以使用老式的衰减方法来减少残留回声。Asterisk 中的发送和接收增益设置(txgain 和 rxgain)可以设置为负值,以降低声音音量,但也产生可接受的最终回声性能。一个限制是 Asterisk 中的 txgain 和 rxgain 设置是全局的,这意味着增益设置对于任何具有桥接的系统都是复合的。对于桥接 TDM 系统,很难在语音音量和残留回声之间取得平衡。但是对于更简单的系统,将 txgain = –10 左右通常会产生可接受的通话音量,并且在约 10 秒后几乎没有感知到的回声。

Asterisk 下剩余的问题是 FIR 估计的收敛速度慢。Asterisk 的回声训练选项是一种巧妙的机制,可以显着缩短回声消除器的收敛时间。在振铃期间,发送的语音被禁用一小段时间,并发送一个声音脉冲以直接测量 FIR,而不是在许多样本上迭代学习它。在许多情况下,回声训练选项消除了通话开始时的大部分回声。但是它的使用仅限于可以检测到振铃的简单系统。它在 PRI T1 或 E1 线路中不起作用。

回声消除的优化

如今,所有超过 600 公里的长途电话通常都在两端进行回声消除。拨打 PSTN 的手机通话始终进行回声消除。来自数字端点(如 ISDN 或 VoIP)的呼叫应该没有回声。因此,只有距离小于 600 公里的模拟呼叫实际上才需要任何回声消除。即使本地呼叫也经常被 PSTN 回声消除,仅仅是因为容量在那里。

结果是,在大多数 VoIP-PSTN 网关(包括 Asterisk)上,进行了大量不必要的回声消除,实际上这对语音质量有害。例如,基于 VoIP 的呼叫中心可能主要处理 1-800 呼叫,其中大多数是无需回声消除的长途呼叫。

虽然消除回声既复杂又计算密集,但事实证明,测量呼叫中是否存在回声非常容易(图 4)。内置于现场可编程门阵列中的简单算法可以在语音开始后一两秒钟内测量是否需要对呼叫进行回声消除。如果呼叫没有回声,则可以禁用回声消除。因此,对于在 DSP 中使用硬件回声消除的系统,可以将 DSP 资源动态分配给需要它们的呼叫。但是,在具有软件回声消除的系统中,可以看到真正显着的改进。

Echo and Soft VoIP PBX Systems

图 4. 对于已经消除回声的来电,回声消除是不必要的。回声检测器可用于关闭这些呼叫的回声消除。

在软件回声消除器中,通过回声检测释放的大量 CPU 负载始终立即可用于其他进程,这反过来可以显着提高系统的质量和容量。更重要的是,回声检测改变了回声消除器设计的优化点。如果只有一小部分呼叫需要任何回声消除,则消除器本身可以设计为包含附加功能,例如非线性处理和快速收敛,这将使音频真正达到收费质量。

结论

电话通话中的回声是一种令人讨厌的现象,在经典的电话系统中,它在很大程度上得到了控制,但随着 VoIP 的普及,它又再次抬头。其有效控制对于 VoIP 技术最终取得成功至关重要,因为回声会影响感知到的质量。为了使开源 VoIP PBX/IVR 技术真正成为主流,收费质量的音频必须是既定的,这需要可靠、高性能的回声消除。

David Mandelstam 是 Sangoma Technologies 的总裁兼首席执行官。在创立 Sangoma 之前,David 经营一家私人工程公司,曾担任能源保护公司 Solartech 的工程副总裁,并负责 Spar Aerospace 的定价。在移民加拿大之前,David 负责南非航空公司的飞机发动机维护。David 拥有南非金山大学机械工程学士学位、英国克兰菲尔德理工学院空气动力学硕士学位和南非大学商业学士学位。

加载 Disqus 评论