|
|
|
|
为了尽量减小抖动产生的影响,VoIP系统采用了抖动缓冲器。抖动缓冲器接收进来的语音包,语音包可能以没有规律的时间间隔到达,但经抖动缓冲器处理后,可以按有规律的间隔重新发送,从而让优先处理的语音数据声音自然。
然而,抖动缓冲器是把双刃剑。虽然抖动缓冲器可以消除进入数据包的抖动,不过它是以增加整体时延为代价的。小容量缓冲器带来的时延低于大容量缓冲器,但一旦抖动明显,就会发生溢出、丢失语音数据包等现象,从而导致音质下降。另一方面,大容量缓冲器虽然丢失的数据包较少,但会导致时延让人无法接受。
动态抖动缓冲器可以解决缓冲器大小问题。动态抖动缓冲器用软件实现,检测到变化的网络条件后,就会相应调整缓冲器大小。通常可以对动态抖动缓冲器进行配置,规定最多允许丢失多少比例的数据包。其实,动态抖动缓冲器会在抖动和数据包丢失之间进行折衷处理,以便尽量提高音质。
数据包丢失会对音质产生大小不一的影响,这要看数据包是如何丢失的。据一些人士声称,丢失多达10%的语音数据包照样能获得可以接受的音质。不过另一些人士认为,哪怕丢失1%的数据包也会导致音质极差。显然,出现这种不一致是因为数据包丢失有的呈随机性,有的呈突发性。有时,一个VoIP系统会在几秒钟时间内丢失20%至30%的数据包,这种情况就会导致非常明显的音质问题。
为了处理数据包丢失问题,VoIP和VoFi系统采用了名为数据包丢失隐藏(packet loss concealment)的一种技术。这种技术并不找回丢失的数据包,只是把丢失数据包对语音产生的不利影响掩盖起来。让人惊讶的是,这种方法的效果非常好:在某些情况下最多允许可以丢失30%的数据包

Global IP Sound公司的Jan Linden认为,实际上,数据包丢失隐藏技术就是为每个传送的语音包添加了来自前一个语音包的一些信息。然后,如果某语音包没有成功到达接收端,接收端就会等到接到下一个语音包,然后使用该语音包中的信息来描述前一个语音包。
最常用的数据包丢失隐藏方法仅仅是用整个前一个语音包取代丢失的数据包。因为语音内容前后有所关联,所以你能得到与以前内容类似的内容。不过,这有个缺点——由于转换效应,音质不是非常好。
一种更有效的隐藏数据包丢失问题的方法就是,把一系列语音数据分成两部分,然后按单独的数据包连续发送。通过适当的数据采样,每个数据包中含有大致相同的声音序列。如果两个数据包同时到达,接收端就可以使用这两个数据包,完美再现声音序列。如果有一个数据包丢失,系统就会使用另一个数据包再现同样的声音,只是音质稍差罢了,不过仍可以接受。
802.11e确保QoS
VoIP 和VoFi还可以借助即将予以批准的802.11e标准,从而在提高音质方面得到一些改进。802.11e规定了服务质量(QoS)方面的要求。 802.11本身不会对流量类型区别对待,所以不会为实时语音数据提供高于其他数据(如电子表格文件)的优先级。不过,802.11e提供了不同的流量类别和优先级别,从而使高优先级的语音数据遇到的延迟比较低(因而抖动和数据包丢失现象比较少)。
然而,802.11e不能保证语音数据总是尽可能快速、有规律地到达目的地,不过它确实增加了这种可能性。另外,要获得非常好的效果,使用802.11e的网络必须从源地发送到目的地的过程中一路传达QoS需求,这种传达依赖符合802.11e的所有网络部件。
对VoIP 和VoFi应用而言,拥有足够的带宽也很重要,即便带宽通常不是主要的约束条件。毕竟,连802.11b网络也能达到11Mbps,而 802.11a和802.11g更是可以提供54Mbps。往往连接速度最慢的居民宽带因特网连接提供的速度通常至少也有1Mbps。
不过,带宽仍是个因素,因为无线LAN根本提供不了规定的数据速率。譬如,不尽如人意的条件很可能把802.11b的数据速率降到2Mbps甚至1Mbps。如果再加上一些繁重的网络流量,带宽就可能限制音质。
各种语音编解码器可以降低VoIP和VoFi对带宽的需求,不过在使用时一定要小心。在传统电话中,符合ITU G.711标准的编解码器可以把语音编码成64kbps的数据流。在VoIP当中,G.729编解码器只需要8kbps,却能获得几乎完全相同的音质。不过,压缩率越高,数据包丢失现象就越明显,因为每个数据包含有更多的语音数据。
未来漫游
好像嫌所有这些难题还不够严重,VoFi将来从一个Wi-Fi接入点漫游到另一个接入点,甚至在Wi-Fi网络和蜂窝网络之间进行漫游时,还面临其他一些问题。在企业VoFi系统中,Wi-Fi漫游已经实现,但这些系统都针对VoFi进行了认真配置,而面向消费者的网络却不是这样。在蜂窝网络市场,几个无线运营商目前正在对可以与VoFi-蜂窝双模电话协同工作的系统进行评估。 |
|