摘 要:随着IP电话的广泛应用,IP电话的语音质量越来越受到人们的关注,成为制约其广泛应用的一个瓶颈,尤其是语音抖动现象的存在,更是制约了IP电话在人们生活、工作中的应用。 影响IP电话质量主要有3个因素:抖动、分组延时、分组丢失。
本文对IP电话中的语音抖动成因进行了详细的分析,并提出了应用语音分组延时智能缓冲平滑的方法消除语音抖动,给出了自己特有的缓冲设计方案、设计原则,并进行了简单的仿真实验分析以及结果验证,提高了IP电话话音质量。
关键词:IP电话;分组延时;语音抖动;缓冲区
电话网、广播电视网、数据网三网合一是21世纪通信领域发展的必然趋势。人们已逐渐认识到,无论是传统的语音通信还是现代数据通信,最后都有可能走到统一的IP协议上来。IP电话中的语音质量是制约其广泛应用的一个瓶颈,尤其是语音抖动现象的存在,更制约了IP电话在人们生活、工作中的应用,本文对IP电话中的语音抖动问题进行了分析,并初步提出了一个分析解决方案。
1通话过程中语音质量分析
1.1IP电话中出现的语音质量问题
在IP网络上传送话音,影响传送质量的因素主要有分组延时、分组丢失和抖动。
分组延时的定义是以秒为单位的由主机A在链路上开始向主机B发送1 b信息,到主机B接收到该信息之间的时间差。换句话说,分组延时直接对应于从第一个用户开始谈话到第二个用户(听者)听到第一个音节之间的时间差。
分组丢失是指从主机A发送的,但不能到达主机B(目的地)的分组数占所发送的所有分组数的百分比。网络上分组丢失的百分比可能明显地影响IP网络上话音的质量。语音本是连续的信号,在将分组数据从主机A发送到主机B的过程中,由于分组传输路径 不同,每个路径的长短和数据流量各不相同,造成了分组到达接受端的时间有所不同,这样在接受端回放的语音变得时断时连,这种现象称为话音抖动。
1.2解决技术分析
为解决IP电话中语音的质量问题,主要用以下7种技术进行提高和改善:语音压缩技术、回音消除技术、静噪抑制技术、话音抖动处理技术、话音优先技术、包分割技术和前向纠错技术。这里主要介绍语音抖动处理技术。
在语音抖动处理中主要采用的是抖动缓冲技术,即在接收方设定一个缓冲池,话音包到达时首先进入缓冲池暂存,系统以稳定平缓的速率将话音包从缓冲池中取出、解压、然后播放给受话者。这种缓冲技术可以在一定限度内有效处理话音抖动,提高音质。使用抖动缓冲技术的原理如图1所示:为了确定呼话音包的正确时间间隔,在RTP的包头上提供了一个时间戳(Time Stamp),用于记录这个呼包的产生时间。在发送端,IP网关产生的呼包①的A,B的时间间隔和B,C的时间间隔均为20 ms;经过IP网络的传输后,在接收端收到的呼包②的B,C的时间间隔变成了30 ms;为了恢复原有的时间间隔,接收端呼网关根据每个呼包的RTP时间戳来确定呼包③的正确时间间隔,把他们恢复成原来的20 ms向下一级设备发送。由于消抖动缓存池不是在接收到每一个话音包的情况下就立即转发,因此还要确定适当的转发延时的大小。如果延时太长,就会使系统整体的延时变得很长;如果延时太短,IP话音包 在允许的时间范围内没有到达,话音仍会出现抖动现象,缓存池的作用不很明显。取两者平衡点的结果通常是使缓存器的网络延时保持在40 ms左右。
2解决语音抖动问题的方案
2.1抖动的处理思路
Internet的实质是分组交换网络,IP分组是存储、转发的最小单元。因此,同一信源的分组可能经过不同的路由传输到接收端,分组到达接收端的时延也不同。这种分组传输时延的不同被称为时延抖动。时延抖动的存在引起收端解码后的语音信号出现间断,造成语音失真,所以必须进行时延抖动的吸收补偿。与分组网传输数据相比,电路交换则是由于预先分配了信道资源,通信子网以流的方式对待数据,即各帧数据从A端到达B端的时间相等,这样也就不存在抖动的问题。在设计IP电话中的语音抖动处理方案时,可以做如下考虑:采用智能缓冲平滑的方法,即让接收端对抖动程度做出预测,并把接收到的信元存放在缓冲器中,采用适当长度的抗抖动缓存,吸收延时后再输出。
如图2所示,在语音的实际传输过程中,语音从发端出来,经过一系列网络设备,到达收端时,接收端接收到发端的语音后,其缓冲池自动对语音的抖动程度作出智能判断,然后根 据其抖动程度,附加一个语音长度,吸收延时。但实际上延时抖动是随机的,从而附加抖动 吸收时延很难准确地确定,如选择不当将产生“欠载”或“过载”现象。一种较为有效的解决办法是以还原语音突发中的总间断长度为基础来决定抖动吸收延时的大小。而且一般认为,当总间断长度在3 ms以下时,即使不进行抖动吸收控制也能获得较好的再生语音。如何根据 接收到的语音包来自适应地完成抗抖动缓存大小的选择,是抗抖动工作中最重要的一环(这是IP电话实时应用中必不可少的一步,目前只是在模型中设定了一个固定长度的Buffer)。
2.2语音抖动处理的设计
在前面的思路分析中,采用语音智能缓冲平滑的方法。这样在具体的设计方案中,对缓冲的处理是关键。
2.2.1设计缓冲区队列
传统的在单缓冲区方式下,采集语音数据时,缓冲区采集满到系统把这块数据成功发 送出去的这段时间内,没有新的缓冲区提交给电话语音卡,所以这段时间内的语音信息就丢失了,回放语音数据时,在从网络上接收到一块语音数据到电话语音卡把这块数据回放完毕的这段时间内,从网络上来的数据也可能因没有空的缓冲区而丢失。
因此,可以设计4个缓冲区队列来保证语音的连续性,防止语音抖动:录音缓冲区队列、发送缓冲区队列、接受缓冲区队列和放音缓冲区队列工作原理简图如图3所示。当一块缓 冲区满拿去发送时,马上从缓冲区队列中取一块空的缓冲区给电话语音卡继续进行录音,放音时,当从网络上接收到一块语音数据拿去回放时,马上从缓冲区队列中取一块空的缓冲区准备接收下一块网络上传 送来的数据。
2.2.2缓冲区大小的设计原则
除了增加缓冲区数目来解决问题外,系统还通过适当增加缓冲区大小来进行保证,当一方网关发送一个数据块时,接收方网关用一定大小的缓冲区接收数据,只有当整个数据块都收到后,才放入语音卡放音缓冲区给语音卡放音。对每一个数据块来说,在网络上的传输是不连续的,但对整个数据块来说,他的传输就是相对连续的。缓冲区越大,语音的连续性越好。同时,增加缓冲区的大小后也带来了不利的因素,他增加了传输延迟。所以在实际应用中,必须在减少延迟和增加缓冲区大小之间取得一定的平衡,一般来说,取1 kB为缓冲区的容量。
现有的缓存空间分配机制大都采用静态方法,由排队论的基本结论可知,绝大多数情况下 顾客等待空间均处于非充满状态,但由于该空间中的未使用部分是“已分配”了的资源,故绝大 多数情况下缓冲器均处在非充分利用的状态;此外,就资源利用而言,理想的缓存空间分配方 法应是动态的按需分配,这既能大大提高缓冲器的利用率,又能很好地适应各业务流到达特性的动态变化,从而确保各业务流的语音质量,尤其是语音抖动要求。基于“动态按需分配”的思想,本文提出了一种缓存空间的动态分配方法:基于“附加块”的按需分配机制(ABB A)。假设网络结点在连接建立阶段为一用户连接分配的(基本)缓存容量为K,称接纳到达分组进入的缓存空间为该连接的“工作块”;在数据传送阶段,一旦因工作块已被占满而使 新到达的分组不能进入系统,便立即申请附加的缓存空间,如果可以,管理者为其分配一片容量仍为K的附加缓存空间,称其为该连接的“附加块”;随后,当前和以后到达的分组便只进入其附加块而不再进入原先的工作块需要指出,一旦申请成功,附加块就变成了新的工作块,而原工作块变为只接受系统服务而不再接纳到达分组的“过渡块”,此后,由于后续到达分组不再进入该过渡块,故他最终会被清空而释放,然后系统才为新的工作块服务。缓存块的状态有“工作”、“过渡”和“释放”3种。
2.3实验分析
利用系统仿真的思想建立一个数学模型,在此基础上对IP电话网络的语音性能进行模拟,使用计算机网络仿真软件,采用对象化、层次化的手段,进行程序设计,如图4所示。
在具体的建立仿真模型过程中,将网络部件定义成对象,每个有一套可配置的属性。编程环境应用C风格的脚本,同时用户可以使用图形用户接口GUI来构建一个网络或进程模型 。节点代表在仿真网络拓扑中的网络节点或主机,用非常类似于ISO/OSI层模型的方 式来组 织节点。进程是节点模型中重要的模块,一个进程对网络协议或一个应用的行为进行模拟,可以用一个有限状态自动机(FSA)来代表一个进程。模拟一个信息源,使其随机处于“0”和“1”两个状态,这样就可以仿真实现语音抖动的效果,他负责在一定的时间内,以特定的速 率发送数据包,以及接收由其他的用户应用发送的数据。当目的地址设置后,用户应用得到了其他的属性,诸如平均速率、用户应用发送的每一个数据包的大小、仿真开始时间、发送周期持续时间,并在初始状态等待传输的开始。
接下来要实现的是守护进程,守护进程负责处理端系统的语音数据包,记录了在语音预约中 的时延,可以测量出语音消息被发出和被接收之间的时延和抖动。在应用中,在节点模块中加入函数PROCESS(),用来在IP分组流中识别语音消息,对每一个进入的PATH消息PROCESS()在IP的IntServ状态表中检查会话是否已经存在。加入处理函数后,一旦信号被发送,IP进程就会将消息存储在临时缓存,并由到达状态变迁到空闲状态(以便他可以处理其他的到达的包)。当输出接口完成了QoS通道的建立,PROCESS()就会发送一个响应信号,应答IP进程。
运用上面的方法,对传送IP语音业务进行了仿真。仿真配置如图5所示,两个客户在同一条链路上发送语音业务,假定客户产生的业务相似。使用的语音数据编码平均速率为22 kb/s,峰值速率为32 kb/s的PCM编码。
对IP语音抖动进行仿真的结果如图6所示。
通过对图6的分析可以明显发现:嵌入设计方案的仿真结果的语音抖动现象明显比未嵌入设计方案的语音抖动要减轻得多。由此可以认为,这种设计方案切实可行,达到了设计目标。