论文部分内容阅读
1.引言
Internet在全世界范围内的快速发展和语音信号处理技术的进步,促进了voP(IP网络下的语音技术)业务的兴起。由于VoIP务以传统的Iternet为基本平台,具有不可比拟的价格优势,因此发展前景十分广阔。
我门通过设计的两台计算机间的语音通信软件,实现了全双上语音通信信。PC-PC的语音传输,需要麦克风、音响。声卡等设备就可以通过IP网实现这种应用。这种VoIP方案的显著优点就是可以支持多媒体通信,主要适用于计算机用户。其原理是利用电话软件把送入话筒的声音进行编码压缩、分组,变成IP数据报,经Intemet网络传送;接收端利用软件进行解码,还原成原来的信号后送到扬声器中。由于软件所需要的设备较为简单,尤其是随着计算机的日益普及、各种硬件设备不断发展;局域网不断增加;通信信道容量不断增加;计算机CPU处理能力不断增强;具有人工智能的可即插即用软件代码技术的出现等等,这些郡为VoIP的发展提供了强有力的技术支持。
在以上处理过程中,要用到一系列的网络接口以及缓冲区来处理数据,但是当前还没有一种固定的和通用的策略能够完全解决VolP应用中的QoS问题。本文就存在的问题进行了分析,并给出了一组解决问题的策略。
2.问题的提出
(1)时延、抖动和丢包三者之间的关系
从网络的角度来看,时廷、抖动和丢包三省同时制约于网络的运行状况,当网络的服务质量下降时,三者均迅速恶化,从终端处理的角度来看,时延。抖动和丢包三者之间又相互影响,比如:在终端处理中,为/减小抖动带来的影响,就要采用抗抖动缓冲区,这就引入了额外的时延;为了减小迟到的语音包数量,可以延迟语音的回放,但也会引入额外的时延;为了采用丢包恢复技术,往往需要利用后续帧信息,这样也就引入了一定的时延;如果抖动效应加强,势必会引起迟到的语音包数量增多。为了解决好话音质量出问题,就必须在这三者当中效虾权衡。
(2)缓冲区机制对语音实时传输性能的影响
缓冲区机制对语音实时传输性能的影响也就是对语音从采样到回放这一时间延迟的影响,特别是当为了满足内存分配的需求而移动全局内存块和抛弃可抛弃的内存块时,消耗的系统时间将对一些实时性操作产生严重影响,
在语音实时通信中,用扩大内存的有效的页面技术和磁盘交换技术将不再适用,因为这些语音数据块不能放在真正的主存中以满足实时性要求,需要通过设计数据结构和信息列表实现优化的缓冲机制。
同时缓冲机制对语音的连续性也有很大影响,如果定制的录音缓冲区过小,就会使录制的语音帧过小,从而使语音蛮得不连贯。对内存资源的过度占用将导致系统资源的不足。因此需要一种既高效利用内存,又尽量减少语音传输时延的缓冲区管理机制。
(3)网络分组信息的丢失
分组丢失对语音质量有非常大的不良影响。当语音经过—个使用分组丢失作为手段来管理数据网络阻塞的略由器的,这是很麻烦的。对于TCP的数据,端站简单地重新发送丢失的数据并降低它们的通信速率,缓解阻塞,保证数据正确性,而对于UDP协议的语音,没有时间进行重新发送,所以VolP系统只能适应这种丢失。除了由于中间网络部件引起的分组丢失外,语音网络中由于超出抖动缓冲区的可忍耐的到达延时也引起分组丢失。
在分组被丢失的情况下,如果语音分组丢失是随机的、不相关的,当前的语音编码器的声码器在分组丢失率小于10%的情况下,简单的办法是在丢失包的间隔处插入最后接收到的包,仍能恢复出质量可接受的语音信号。当然,也可以设计出优化的缓冲区,从而前向纠错以减少对语音质量的影响。
3.网络协议的选择策略
实时语音的特点:实时性要求高,且允许语音数据在一定的范围内出错;IP语音的特点:由于IPV4不能够提供服务质量保证,所以丢包率和抖动是不可预知的,并且把它们带到了上层协议——IP/UDP中。TCP的特点:能提供面向连接的流传输,可靠性很高,但是会占用网络较多的资源;UDP的特点:能提供无连接的数据包传输,不可靠,对网络的资源占用较少。
由于TCP在传输数据前建立的是虚链路,它不能保证各个语音包在相等的时间内到达,即无法避免话音抖动现象。而且当网络状况不佳时,也无法避免丢失语音包,即使重传也有可能无法满足语音的实坷性。更有甚者,它的窗口技术也会造成较大的附加抖动。
至于UDP,则有可能出现语音包的丢失、重复和失序(好在语音通信允许出错),话音抖动现象也无法避(比TCP好),效率较TCP要高。但需要在应用层增添排序、抗抖、抗重复和抗丢包等功能。所以,对于网络时延较大的场合,一般选用UDP来传输语音包;而在网络负载较小的场合,TCP更为方便。如图分别为TCPAJDP编程时序图。
随着IPv6的成熟应用,不仅用于解决In-ternet网络地址的危机,而且在解决Internet网络性能方面也有很大的突破;在4ESV中提供了对QoS的支持,在IPv6中定义了两个参数;业务类别域和数据流标志位。业务类别域将IP包的优先级分为16级,优先级分为两类:0-7用于在网络发生拥塞时通过减少数据包的发送速度来实现拥塞控制的业务;8-15用于一些实时性很强的业务,它在网络拥塞时不作任何减少流量的控制。对于那些需要特殊QoS的业务,可在IP数据包中设置相应的优先级,路由器根据IP包的优先级来处理数据。因此,voIP将得到更好的应用。
4.缓冲区的设计策略
(1)发送端缓冲区的设计
在语音发送端,语音采集时必须要申请缓冲区,而且这种缓冲区既用作语音信号的输入,又用作语音帧的输出。如果采用单一缓冲区机制,将有可能出现数据覆盖问题。数据发送操作中也存在此问题,实际应用必须通过实验确定缓冲区的数目,既保证语音数据库不丢失,又不会多用内存。
决定发送缓冲区的数目的因素有两个,一个是编码缓冲区的数目;另一个是一个数据分组的发送的最长时间与一个数据分组的最短打包时间的比值,由于实际应用中,实时语音的传送一般采用非连接的网络传输协议,所以发送缓冲区的数目可以小于或者等于编码缓冲区的数目。
决定编码缓冲区的数目的因素有两个,一个是录音缓冲区的数据目;另一个是一个数据分组的最长打包时间与一个数据分组的最短编码时间的比值,如果这个比值小于1,则对编码缓冲区的数目没有特殊要求,如果大于1,则要求有尽可能大的编码缓冲区数目,但一般不要超过录音缓冲区的数目,这是由语音数据的实时性和连续性所决定的。
(2)接收端缓冲区数目
在语音接收端必须有一组接收缓冲区,理 由有三:
①IP网络阻塞状况不稳定,数据到达有时十分集中,而接收数据又会花费一定的时间,太少的缓冲区会造成数据的丢失;
②由于IP网络只提供一种尽力型服务,不可避免地造成分组丢失和乱序,如果不加以处理,必然会影响实时语音的效果。而处理这些情况都需要存储空间,表现为一定数目的缓冲区;
③必须对接收到的数据进行后续的处理,而这些处理要产生一定的时延,如果只有一个接收缓冲区,有可能接收到的数据来不及得到处理就被覆盖了。另外,与语音发送方相对应,在语音接收方需要解码缓冲区和回放缓冲区。
由于网络延迟抖动的存在和语音应用天然的等时性要求,必须对语音回放设定一个回放延迟,即按照一定的时间间隔回放语音帧,这就需要有一定数目的缓冲区来存放等待回放的语音帧。
(3)缓冲区的大小
录音时,缓冲区大小的选择也是一个关键性的问题。因为如果缓冲区过小,生成的语音帧也就会过小,语音的连续性遭到破坏,同时数据分组的有效数据率也会过小,相对增加了网络负担。如果缓冲区过大,会在语音录制时和其它处理时造成比较大的处理时延,还有可能造成发送的数据分组过大而导致某协议层的数据分割与合并,形成很大的传输时延。所以录音缓冲区要选择合适的大小,必须在语音的连续性和时延之间进行平衡。
编码缓冲区的大小取决于录音缓冲区的大小和所采用的编码算法。实际应用中有可能采用不同的编码算法,以适应多变的网络传输状况。缓冲区的大小要采用所需的最大值。
计算方法如下:针对一个语音包,包长度=RTP头+UDP头+IP头+Ethemet头+有效载荷。
其中RTP头=96bit (12byte);UDP头=64bit (8byte);IP头=160bit(20byte);Ethernet头=208bit(26byte)。
所以,包长度=(96+64+160+208)十有效载荷=528bit+有效载荷。
有效载荷=打包周期(秒)x每秒的比特数
带宽=包长度x每秒包数=(528/打包周期)+每秒比特数
因此,要根据不同的语音编解码技术,设计不同的缓冲区:
G.711,每秒比特数是64k
G.729,每秒比特数是8k
G.723,两种,一种是5.3k,另一种是6.3k
G.711, 20ms打包,带宽为(528/20+64)kbit/s
G.711,30ms打包,带宽为(528/30+64)kbit/s
G.729,20ms打包,带宽为(528/20+8)kbit/s
G.723, 5.3k, 30ms打包, 带宽为(528/30+5.3)kbit/s
(4)缓冲区的申请和释放
语音通信中对数据块的使用是一次性的。在各个语音数据模块中,一个数据块只会在某个操作中作短暂缓存,处理之后,该数据块对操作不再有任何意义。我们根据实时语音数据的需要,充分利用内存硬件容量优势,编制静态数据链表,循环使用缓冲区,即在应用开始时申请所有缓冲区,将这些缓冲区排成循环队列,用完一个缓冲区就将其排到队尾等待调用,等到整个应用结束时,一次性释放所有缓冲区。
5.结束语
随着技术和标准的不断成熟,伴随着“三网合一”的大潮,VoIP可望成为下一代电信基础设施结构的杨心,使未来各电信业务综合统一在IP网络上成为可能,导致数据的融合和未来电信市场的重组,并带来新的经济模式和价值链。(作者单位:沈阳网通苏家屯区局)
Internet在全世界范围内的快速发展和语音信号处理技术的进步,促进了voP(IP网络下的语音技术)业务的兴起。由于VoIP务以传统的Iternet为基本平台,具有不可比拟的价格优势,因此发展前景十分广阔。
我门通过设计的两台计算机间的语音通信软件,实现了全双上语音通信信。PC-PC的语音传输,需要麦克风、音响。声卡等设备就可以通过IP网实现这种应用。这种VoIP方案的显著优点就是可以支持多媒体通信,主要适用于计算机用户。其原理是利用电话软件把送入话筒的声音进行编码压缩、分组,变成IP数据报,经Intemet网络传送;接收端利用软件进行解码,还原成原来的信号后送到扬声器中。由于软件所需要的设备较为简单,尤其是随着计算机的日益普及、各种硬件设备不断发展;局域网不断增加;通信信道容量不断增加;计算机CPU处理能力不断增强;具有人工智能的可即插即用软件代码技术的出现等等,这些郡为VoIP的发展提供了强有力的技术支持。
在以上处理过程中,要用到一系列的网络接口以及缓冲区来处理数据,但是当前还没有一种固定的和通用的策略能够完全解决VolP应用中的QoS问题。本文就存在的问题进行了分析,并给出了一组解决问题的策略。
2.问题的提出
(1)时延、抖动和丢包三者之间的关系
从网络的角度来看,时廷、抖动和丢包三省同时制约于网络的运行状况,当网络的服务质量下降时,三者均迅速恶化,从终端处理的角度来看,时延。抖动和丢包三者之间又相互影响,比如:在终端处理中,为/减小抖动带来的影响,就要采用抗抖动缓冲区,这就引入了额外的时延;为了减小迟到的语音包数量,可以延迟语音的回放,但也会引入额外的时延;为了采用丢包恢复技术,往往需要利用后续帧信息,这样也就引入了一定的时延;如果抖动效应加强,势必会引起迟到的语音包数量增多。为了解决好话音质量出问题,就必须在这三者当中效虾权衡。
(2)缓冲区机制对语音实时传输性能的影响
缓冲区机制对语音实时传输性能的影响也就是对语音从采样到回放这一时间延迟的影响,特别是当为了满足内存分配的需求而移动全局内存块和抛弃可抛弃的内存块时,消耗的系统时间将对一些实时性操作产生严重影响,
在语音实时通信中,用扩大内存的有效的页面技术和磁盘交换技术将不再适用,因为这些语音数据块不能放在真正的主存中以满足实时性要求,需要通过设计数据结构和信息列表实现优化的缓冲机制。
同时缓冲机制对语音的连续性也有很大影响,如果定制的录音缓冲区过小,就会使录制的语音帧过小,从而使语音蛮得不连贯。对内存资源的过度占用将导致系统资源的不足。因此需要一种既高效利用内存,又尽量减少语音传输时延的缓冲区管理机制。
(3)网络分组信息的丢失
分组丢失对语音质量有非常大的不良影响。当语音经过—个使用分组丢失作为手段来管理数据网络阻塞的略由器的,这是很麻烦的。对于TCP的数据,端站简单地重新发送丢失的数据并降低它们的通信速率,缓解阻塞,保证数据正确性,而对于UDP协议的语音,没有时间进行重新发送,所以VolP系统只能适应这种丢失。除了由于中间网络部件引起的分组丢失外,语音网络中由于超出抖动缓冲区的可忍耐的到达延时也引起分组丢失。
在分组被丢失的情况下,如果语音分组丢失是随机的、不相关的,当前的语音编码器的声码器在分组丢失率小于10%的情况下,简单的办法是在丢失包的间隔处插入最后接收到的包,仍能恢复出质量可接受的语音信号。当然,也可以设计出优化的缓冲区,从而前向纠错以减少对语音质量的影响。
3.网络协议的选择策略
实时语音的特点:实时性要求高,且允许语音数据在一定的范围内出错;IP语音的特点:由于IPV4不能够提供服务质量保证,所以丢包率和抖动是不可预知的,并且把它们带到了上层协议——IP/UDP中。TCP的特点:能提供面向连接的流传输,可靠性很高,但是会占用网络较多的资源;UDP的特点:能提供无连接的数据包传输,不可靠,对网络的资源占用较少。
由于TCP在传输数据前建立的是虚链路,它不能保证各个语音包在相等的时间内到达,即无法避免话音抖动现象。而且当网络状况不佳时,也无法避免丢失语音包,即使重传也有可能无法满足语音的实坷性。更有甚者,它的窗口技术也会造成较大的附加抖动。
至于UDP,则有可能出现语音包的丢失、重复和失序(好在语音通信允许出错),话音抖动现象也无法避(比TCP好),效率较TCP要高。但需要在应用层增添排序、抗抖、抗重复和抗丢包等功能。所以,对于网络时延较大的场合,一般选用UDP来传输语音包;而在网络负载较小的场合,TCP更为方便。如图分别为TCPAJDP编程时序图。
随着IPv6的成熟应用,不仅用于解决In-ternet网络地址的危机,而且在解决Internet网络性能方面也有很大的突破;在4ESV中提供了对QoS的支持,在IPv6中定义了两个参数;业务类别域和数据流标志位。业务类别域将IP包的优先级分为16级,优先级分为两类:0-7用于在网络发生拥塞时通过减少数据包的发送速度来实现拥塞控制的业务;8-15用于一些实时性很强的业务,它在网络拥塞时不作任何减少流量的控制。对于那些需要特殊QoS的业务,可在IP数据包中设置相应的优先级,路由器根据IP包的优先级来处理数据。因此,voIP将得到更好的应用。
4.缓冲区的设计策略
(1)发送端缓冲区的设计
在语音发送端,语音采集时必须要申请缓冲区,而且这种缓冲区既用作语音信号的输入,又用作语音帧的输出。如果采用单一缓冲区机制,将有可能出现数据覆盖问题。数据发送操作中也存在此问题,实际应用必须通过实验确定缓冲区的数目,既保证语音数据库不丢失,又不会多用内存。
决定发送缓冲区的数目的因素有两个,一个是编码缓冲区的数目;另一个是一个数据分组的发送的最长时间与一个数据分组的最短打包时间的比值,由于实际应用中,实时语音的传送一般采用非连接的网络传输协议,所以发送缓冲区的数目可以小于或者等于编码缓冲区的数目。
决定编码缓冲区的数目的因素有两个,一个是录音缓冲区的数据目;另一个是一个数据分组的最长打包时间与一个数据分组的最短编码时间的比值,如果这个比值小于1,则对编码缓冲区的数目没有特殊要求,如果大于1,则要求有尽可能大的编码缓冲区数目,但一般不要超过录音缓冲区的数目,这是由语音数据的实时性和连续性所决定的。
(2)接收端缓冲区数目
在语音接收端必须有一组接收缓冲区,理 由有三:
①IP网络阻塞状况不稳定,数据到达有时十分集中,而接收数据又会花费一定的时间,太少的缓冲区会造成数据的丢失;
②由于IP网络只提供一种尽力型服务,不可避免地造成分组丢失和乱序,如果不加以处理,必然会影响实时语音的效果。而处理这些情况都需要存储空间,表现为一定数目的缓冲区;
③必须对接收到的数据进行后续的处理,而这些处理要产生一定的时延,如果只有一个接收缓冲区,有可能接收到的数据来不及得到处理就被覆盖了。另外,与语音发送方相对应,在语音接收方需要解码缓冲区和回放缓冲区。
由于网络延迟抖动的存在和语音应用天然的等时性要求,必须对语音回放设定一个回放延迟,即按照一定的时间间隔回放语音帧,这就需要有一定数目的缓冲区来存放等待回放的语音帧。
(3)缓冲区的大小
录音时,缓冲区大小的选择也是一个关键性的问题。因为如果缓冲区过小,生成的语音帧也就会过小,语音的连续性遭到破坏,同时数据分组的有效数据率也会过小,相对增加了网络负担。如果缓冲区过大,会在语音录制时和其它处理时造成比较大的处理时延,还有可能造成发送的数据分组过大而导致某协议层的数据分割与合并,形成很大的传输时延。所以录音缓冲区要选择合适的大小,必须在语音的连续性和时延之间进行平衡。
编码缓冲区的大小取决于录音缓冲区的大小和所采用的编码算法。实际应用中有可能采用不同的编码算法,以适应多变的网络传输状况。缓冲区的大小要采用所需的最大值。
计算方法如下:针对一个语音包,包长度=RTP头+UDP头+IP头+Ethemet头+有效载荷。
其中RTP头=96bit (12byte);UDP头=64bit (8byte);IP头=160bit(20byte);Ethernet头=208bit(26byte)。
所以,包长度=(96+64+160+208)十有效载荷=528bit+有效载荷。
有效载荷=打包周期(秒)x每秒的比特数
带宽=包长度x每秒包数=(528/打包周期)+每秒比特数
因此,要根据不同的语音编解码技术,设计不同的缓冲区:
G.711,每秒比特数是64k
G.729,每秒比特数是8k
G.723,两种,一种是5.3k,另一种是6.3k
G.711, 20ms打包,带宽为(528/20+64)kbit/s
G.711,30ms打包,带宽为(528/30+64)kbit/s
G.729,20ms打包,带宽为(528/20+8)kbit/s
G.723, 5.3k, 30ms打包, 带宽为(528/30+5.3)kbit/s
(4)缓冲区的申请和释放
语音通信中对数据块的使用是一次性的。在各个语音数据模块中,一个数据块只会在某个操作中作短暂缓存,处理之后,该数据块对操作不再有任何意义。我们根据实时语音数据的需要,充分利用内存硬件容量优势,编制静态数据链表,循环使用缓冲区,即在应用开始时申请所有缓冲区,将这些缓冲区排成循环队列,用完一个缓冲区就将其排到队尾等待调用,等到整个应用结束时,一次性释放所有缓冲区。
5.结束语
随着技术和标准的不断成熟,伴随着“三网合一”的大潮,VoIP可望成为下一代电信基础设施结构的杨心,使未来各电信业务综合统一在IP网络上成为可能,导致数据的融合和未来电信市场的重组,并带来新的经济模式和价值链。(作者单位:沈阳网通苏家屯区局)