局域网话音传输现有技术汇总.docx
《局域网话音传输现有技术汇总.docx》由会员分享,可在线阅读,更多相关《局域网话音传输现有技术汇总.docx(8页珍藏版)》请在冰豆网上搜索。
![局域网话音传输现有技术汇总.docx](https://file1.bdocx.com/fileroot1/2022-11/25/e583a4fc-dde7-45e7-b094-a73bcc648650/e583a4fc-dde7-45e7-b094-a73bcc6486501.gif)
局域网话音传输现有技术汇总
1概述
局域网(LocalAreaNetwork,LAN)是指在某一区域内由多台计算机互联成的计算机组。
一般是方圆几千米以内。
局域网可以实现文件管理、应用软件共享、打印机共享、工作组内的日程安排、电子邮件和传真通信服务等功能。
局域网是封闭型的,可以由办公室内的两台计算机组成,也可以由一个公司内的上千台计算机组成。
目前局域网计算机之间大多是基于TCP/IP协议进行互相通信。
因此此处我们讨论的局域网上的话音传输技术即VoIP(VoiceoverIP,基于IP的语音通信),也称为IP电话。
为使VoIP网络电话能够可靠地进行语音通信,必须在保证一定话音质量的前提下尽可能地降低编码比特率,因此语音压缩编码技术就显得非常重要。
此外RTP(Real-timeTransportProtocol)技术被用来进行语音的一对一或一对多的传输。
2语音编码的原理
同一段语音信号,采用不同的编码方式,其编码后的比特率各不相同。
那么如何对语音信号进行压缩编码从而达到降低语音信号的比特率呢?
2.1利用语音信号的相关性
语音信号主要存在两方面的冗余度,即语音信号幅度分布的非均匀性和样本之间的相关性。
非均匀性表现为小幅度语音信号出现的概率大而大幅度语音信号出现的概率小,非均匀量化技术正是针对语音信号的这一特点而提出的,例如ADPCM编码算法;样本之间的相关性表现为样本点之间的短时相关性和相邻基音周期之间的长时相关性,利用语音信号的相关性,可以在实现低速率编码时,也能保持较高的语音编码质量,例如线性预测算法就是利用这一原理。
2.2利用人耳的听觉特性
人耳对语音信号的听觉特性表现在3个方面:
一是人耳对语音信号的分辨率有限;二是人耳对语音信号某些失真不是很敏感;三是人耳的掩蔽效应。
低速率高品质语音编码算法的实现就是基于人耳的这些听觉特性,既可以保证人耳感觉不到语音质量的下降,又降低了语音编码速率。
2.3静音压缩
测试表明,人在正常谈话时,有50%左右是静音,而静音信息只需很少几个参数(4字节/帧)来表示。
静音编码主要由两个算法组成:
语音检测(VoiceActivityDetectionVAD)和柔和噪声再生(ComfortNoiseGenerationCNG)。
VAD是用来检测输入的信号是实际语音信号还是背景噪声。
如果检测到是语音信号,则对语音信号进行固定速率的编码;如果输入信号被检测为背景噪声,编码器则对其进行低速率编码。
CNG的作用是在话音信号的接收端重构背景噪声。
在G.723.1.1编码器中引入静音压缩技术后,实际的平均编码速率要小于5.3kb/s,可以达到3.5kb/s以下。
VoIP网络电话中已被广泛使用的线性预测合成分析编码就是基于此项原理的应用。
3语音编码技术的分类
根据语音编码的发展过程,我们把该技术归纳为以下3类:
3.1波形编码(或称为非参数编码)
波形编解码器基本上不考虑信号是如何产生的,而直接将输入的模拟信号抽样编码,然后将量化后的样值传送到终端,在终端原始信号被重组到与原信号大致接近的程度。
因此波形编码方式是能够忠实地表现波形的编码方式。
由于这类编码器通常将语音信号作为一般的波形信号来处理,所以它具有适应能力强、话音质量好、抗噪抗误码的能力强等特点,它最大的缺点是同其他的编解码器相比,它要使用大量的带宽,当波形编解码器用于低带宽时,话音质量下降得非常快。
脉冲编码调制(PCM)、自适应增量调制(ADM或ΔM编码)、自适应差分编码(ADPCM)、自适应预测编码(APC)、自适应子带编码(ASBC)、自适应变换编码(ATC)等都属于波形编码。
3.2参数编码(或称为模型编码或声码化编码)
参数编码是根据声音的形成模型,把声音变换成参数的编码方式。
其基本方法是通过对语音信号特征参数的提取及编码,力图使重建语音信号具有尽可能的可懂性,即保持原语音的语义。
而重建的信号波形同原语音信号的波形可能会有相当大的差别。
由于参数编码是保护语声模型,重建清晰可识别的语声,而不注重波形的拟合,所以这类编码技术实现的是合成语声质量下的低速或极低速的编码。
参数编码的优点是:
编码速率低,编码速率通常小于4.8kb/s,可以低至600b/s~2.4kb/s;缺点是:
合成语音质量差,特别是自然度较低,连熟人之间都不一定能听出讲话人是谁。
另外,这类编码器对讲话环境噪声较敏感,需要安静的讲话环境才能给出较高的可懂度,且时延大。
线性预测编码(LPC)、多带激励(MBE)编码、余弦变换编码(STC)均属参数编码。
3.3混合编码
混合编码是将波形编码与参数编码结合而产生的一种编码方式。
采用线性技术构成声道模型,不只传输预测参数和清浊音信息,而是将预测误差信息和预测参数同时传输,在接收端构成新的激励减去激励预测参数构成的合成滤波器,使得合成滤波器输出的信号波形与原始语声信号的波形最大程度地拟合,从而获得自然度较高的语声。
混合编码克服了原有波形编码器与声码器的弱点,结合了它们的优点,在4kb/s~16kb/s速率上能够得到高质量合成语音,在本质上具有波形编码的优点,有一定抗噪和抗误码的性能,但时延较大。
多脉冲线性预测编码(MPLPC)、规则脉冲激励线性预测编码(RPELPC)、码激励线性预测编码(CELPC)、低时延的码激励线性预测编码(LD-CELPC)等都属于混合编码。
4VoIP中常用的语音编码算法
4.1G.711协议
G.711是在电路交换电话网中普遍使用的一种波形编解码算法。
G.711以8kHz作为抽样频率,如果使用统一量化方式,话音中通用的信号层次的每一个样本就要12比特来表示,这就产生了96kb/s的比特速率。
如果使用不统一的量化方式,表示一个样本只需要8比特。
G.711通常被称为PCM(脉冲编码调制)。
G.711有A律和u律两个变型,两者之间的区别主要在于不统一量化的使用方式,两者都是关于0对称。
对于较低的信号层次来讲,A律对于信号的歪曲程度比u律更小一些,这是因为它对一个较大范围内的低层次信号提供较小的量化间隔,但以较大范围内的高层信号的较大量化层次为代价。
A律和u律都提供了良好的语音质量,并且MOS等级都在4.3左右。
4.2G.723.1协议
G.723.1协议是一个双速率语音编码协议,其两种速率分别是5.3kb/s和6.3kb/s,较高比特率的输出基于ML-MLQ技术,提供某种程度上较高质量的音质;较低速率的输出基于CELP,为系统设计人员提供了更大的灵活性。
G.723.1协议的编解码算法中两种速率的编解码基本原理是一样的,只是激励信号的量化方法有差别。
对高速率(6.3kb/s)编码器,其激励信号采用多脉冲最大似然量化(MP-MLQ)法进行量化,对低速率(5.3kb/s)编码器,其激励信号采用代数码激码线性预测(ACELP)法量化。
编码过程是首先选速率为64kb/s的PCM语音信号转化成均匀量化的PCM信号,然后把输入语音信号的每240个样点组成一个帧,也就是30ms的帧长。
每个帧通过高通滤波器后再分为4个子帧。
对于每个子帧,计算出10阶线性预测滤波器的系数。
为了适于矢量量化,把预测系数转化为线性频谱对(LineSpectrumPair,LSP),然后进行矢量量化。
量化前的系数构成短时感觉加权滤波器,原始语音信号经过该滤波器得到感觉加权语音信号。
对于每两个子帧,编码器用感觉加权语音信号求得开环基音周期,基音周期范围从18个样点到142个样点。
此后编码器所进行的操作都是基于60个样点进行的。
由开环基音周期和感觉加权是在开环基音周期点周围的一定范围内求得的。
最后,激励信号被量化,然后把这些参数和激励信号量化结果传送到解码器。
由于帧长为30ms,并存在另外的7.5ms的前向延迟,导致37.5ms总的编码延迟。
G.723.1协议适用于低速率多媒体服务中语音或音频信号的压缩算法,在IP电话网关中,被用来实现实时语音编码解码处理。
4.3G.726协议
G.726协议采用的是ADPCM语音编码算法,提供了64kb/sPCM码流至低速率ADPCM码流的转换。
协议给出40kb/s,32kb/s,24kb/s和16kb/s4种比特率。
其中,40kb/s信道主要用于在数字电路倍增设备(DCME)上传送数据modem信号,特别用于4.8kb/s以上速率的modem;24kb/s和16kb/s信道主要用作DCME语音传送的过载信道。
G.726设计的主要用途仍然是传统的电路交换网,但是其低比特率方案也可用于VoIP。
4.4G.728协议
G.728协议采用的编码算法是LD-CELP,即低时延的码激励线性预测的算法。
LD-CELP采用后向自适应预测器(BackwordAdaptivePredictor)对短时谱和增益进行预测。
LD-CELP编码器发送的只是激励矢量在码本中的地址标号,而解码端的滤波器参数和增益参数都是在解码端计算得来的。
在大多数编码系统中,这类参数都是在编码端求得,然后传输到解码端。
编码过程是首先将速率为64kb/s的PCM输入信号转化成均匀量化的PCM信号,接着由5个连续的语音样点组成一个5维矢量,激励码本中共有1024个5维矢量。
对每一个输入矢量,编码器利用合成—分析法从码本中搜索出最佳码本矢量,然后将10比特的码本标号传给对方。
每20个样点构成一个复帧,一个复帧构成一个自适应周期,每复帧更新一次LP系数。
最佳码本矢量通过增益加权和合成滤波器后形成合成语音,该合成语音用来更新滤波器状态,以便继续为下一个输入矢量进行编码。
合成滤波器系数和增益分别通过各自的后向自适应单元进行周期性地更新。
4.5G.729协议
G.729协议是一个能在8kb/s速率上实现高质量语音编码的协议,它采用的是CS-ACELP即共轭结构算术码激励线性预测的算法。
CS-ACELP以CELP编码模型为基础,它把语音分成帧,每帧10ms,也就是80个采样点。
对于每一帧语音,编码器从中分析出CELP模型参数,其中包括线性预测系数,自适应码本和随机码本的索引值和增益,然后把这些参数传送到解码端,解码器利用这些参数构成激励源和合成滤波器,从而重现原始语音。
编码过程是首先将速率为64kb/s的PCM语音信号转化成均匀量化的PCM信号,通过高通滤波器后,把输入语音信号的每80个样点组成一个帧,也就是10ms的帧长。
对于每个帧用线性预测法求得LP滤波器系数,为了适于矢量量化,把预测系数转化为线谱对,然后进行矢量量化。
利用合成—分析方法,使原始语音和合成语音之间的误差最小,来获得最佳激励信号。
激励信号的量化是通过两个码本来实现的,即自适应码本和随机码本。
自适应码本反映的是长时预测结果,也就是基音预测结果。
随机码本反映的是经过长时预测和短时预测后的残留信号。
在IP电话网关中,G.729协议被用来实现实时语音编码处理。
4.6常用语音编码算法的性能分析和比较
G.711由于采用的是波形编码算法,具有高质量和低时延的语音,主要的缺点是需要64kb/s的带宽。
G.723.1,G.728,G.729都采用了混合编码算法,混合编码把激励模型和语音的时域波形结合到一起,从而改善了合成语音的质量。
但这3种语音压缩编码算法的区别在于激励模型的不同。
G.723.1MOS值约为3.8,优点在于仅需要很窄的语音带宽便可具有较高的语音质量;缺点在于在编码器一端至少有37.5ms的时延。
G.728最大的优点是它能提供高质量和低时延的语音。
为了对标准编码器的讨论作个总结,下表对几种编码算法的比特率、MOS、复杂性(以G.711为基准)和时延(帧大小及前视时间)作了比较:
5语音传输技术概述
RTP(Real-timeTransportProtocol)被定义为在一对一或一对多的传输情况下工作,其目的是提供时间信息和实现流同步。
RTP通常使用UDP来传送数据,但RTP也可以在TCP或ATM等其他协议之上工作。
由因特网的七层架构来看,RTP协议是工作在UDP/IP协议之上的,如下图所示。
在VoIP系统,在将编码语音数据交给UDP进行传输之前,要利用RTP/RTCP协议进行处理。
RTP/RTCP协议实际上包含RTP协议和RTCP(RTP控制协议)协议两部分。
6RTP协议
RTP协议通常运行在UDP层之上,二者共同完成运输层的功能。
UDP提供复用及校验和服务,也就是通过分配不同的端口号传送多个RTP流。
协议规定,RTP流使用偶数(2n)端口号,相应的RTCP流使用相邻的奇数(2n+1)端口号。
通常RTP的协议数据单元是用UDP分组来承载的。
而且为了尽量减少时延,语音净荷通常都很短。
如果支持RTP的网络能提供组播功能,则它也可用组播方式将数据送给多个目的用户。
RTP协议用以传送实时数据,可以用来传送声音和活动图像数据。
RTP分组由RTP头部和净荷数据组成;RTP分组由UDP包来进行传输,通常一个UDP包仅含一个RTP分组,若采用一定的封装方法,也可以包含多个RTP分组;其中的RTP净荷就是RTP传送的语音数据。
RTP分组Header的格式如下:
0~1
2
3
4~7
8
9~15
16~31
V
P
X
CC
M
PT
序号
时戳
同步源(SSRC)标识
分信源(CSRC)标识(0~15个)
RTP分组头部的各字段含义为:
<1> V:
RTP版本号。
为“10”。
<2> P:
填充指示位。
P为“1”时表示分组结尾含有1个或多个填充字节,其中这部分不属于有效载荷。
<3> X:
扩展指示位。
X为“1”时,则表示固定头部后还有一个扩展头部,这种情况较复杂,很少使用。
<4> CC:
CSRC计数。
指示固定头部后的CSRC的个数
<5> M:
由应用文档解释,通常不用。
<6> PT:
净荷类型。
表示RTP分组的净荷类型。
我们常用的有:
“0”:
G.711μ
“8”:
G.711A
“4”:
G.723.1
“18”:
G.729
<7> 序号:
序号顾名思义就是表示RTP分组的次序。
初值为随机数,每发送一个增加1。
可供接收方检测分组丢失和恢复分组次序。
<8> 时戳:
表示RTP分组第一个字节的取样时刻。
其初值为随机数,每个采样周期加1。
如果每次传送20ms的数据,由于音频的采样频率为8000Hz,即每20ms有160次采样,则每传送20ms的数据,时戳增加160。
<9> SSRC:
同步源标识(SynchronousSource)。
表示信号的同步源,其值应随机选择,以保证同一个RTP会话中任意两个同步源的SSRC标识不同。
<10> CSRC:
分信源(贡献源)标识(ContributingSource)。
识别该数据包中的有效载荷的贡献源。
换句话说,CSRC标识由混合器插入,其值就是组成复合信号的各个分信号的SSRC标识,用以标识各个组成分信号的信源。
RTP分组的头部最多可以包含15个CSRC标识,其数目由CC字段指明。
7RTCP协议
RTP本身没有提供任何确保及时传送的机制,也没有提供任何传输质量保证的机制,因而业务质量完全由下层网络的质量来决定。
同时,RTP不保证数据包按序号传送,即使下层网络提供可靠性传送,也不能保证数据包的顺序到达。
包含在RTP中的序列号就是供接收方重新对数据包排序之用。
RTCP是RTP的控制协议,它用于监视业务质量并与正在进行的会话者传送信息。
RTCP协议向会话中的所有与会者周期性地传送控制分组,从而提供RTP分组传送的QoS的监测手段,并获知与会者的身份信息。
RTCP分组主要有如下5种:
<1> SR:
发送者报告(SendReport)由数据发送者发出的发送/接收的统计数据。
<2> RR:
接受者报告(ReceiverReport),由非数据发送者发出的接收统计数据。
RR和SR都可以用来发送数据接收质量的反馈信息,其差别在于SR除了提供上述信息外,还可提供有关数据发送的信息。
从分组结构上来看,SR除了有接收报告数据外,还有20个字节的发送者信息段。
SR和RR中有许多有用的信息可供信号发送者、接受者和第三方监测QoS性能和诊断网络问题,以及时调整发送模式,主要可以分为三类:
累计信息、即时信息和时间信息。
累计信息用于监测长期性能指标;即时信息可以测量短期性能;时间信息可以用来计算比率指标。
<3> SDES:
源描述项(SourceDescription),SDES在会议通信中比较有用,可以向用户显示与会者名单等有关信息。
<4> BYE:
退出,BYE指示一个或多个信源不再工作,退出会话。
<5> APP:
应用特定功能,APP供新应用或新功能试验使用。
8SRTP协议
VoIP网络很不安全,这也是限制VoIP发展的一个考虑因素。
为了提供一种策略满足VoIP的安全,SRTP应运而生。
所谓SRTP,即安全实时传输协议(SecureReal-timeTransportProtocol),其是在实时传输协议(Real-timeTransportProtocol)基础上所定义的一个协议,旨在为单播和多播应用程序中的实时传输协议的数据提供加密、消息认证、完整性保证和重放保护。
它是由DavidOran(思科)和RolfBlom(爱立信)开发的,并最早由IETF于2004年3月作为RFC3711发布。
由于实时传输协议和可以被用来控制实时传输协议的会话的实时传输控制协议(RTPControlProtocol)有着紧密的联系,安全实时传输协议同样也有一个伴生协议,它被称为安全实时传输控制协议(SecureRTCP或SRTCP);安全实时传输控制协议为实时传输控制协议提供类似的与安全有关的特性,就像安全实时传输协议为实时传输协议提供的那些一样。
在使用实时传输协议或实时传输控制协议时,使不使用安全实时传输协议或安全实时传输控制协议是可选的;但即使使用了安全实时传输协议或安全实时传输控制协议,所有它们提供的特性(如加密和认证)也都是可选的,这些特性可以被独立地使用或禁用。
唯一的例外是在使用安全实时传输控制协议时,必须要用到其消息认证特性。
为了提供对数据流的保密,需要对数据流进行加密和解密。
关于这一点,安全实时传输协议(结合安全实时传输控制协议)只为一种加密算法,即AES制定了使用标准。
这种加密算法有两种加密模式,它们能将原始的AES块密文转换成流密文:
分段整型计数器模式和f8模式。
除了AES加密算法,安全实时传输协议还允许彻底禁用加密,此时使用的是所谓的“零加密算法”。
它可以被认为是安全实时传输协议支持的第二种加密算法,或者说是它所支持的第三种加密模式。
事实上,零加密算法并不进行任何加密,也就是说,加密算法把密钥流想像成只包含“0”的流,并原封不动地将输入流复制到输出流。
这种模式是所有与安全实时传输协议兼容的系统都必须实现的,因为它可以被用在不需要安全实时传输协议提供保密性保证而只要求它提供其它特性(如认证和消息完整性)的场合。
以上列举的加密算法本身并不能保护消息的完整性,攻击者仍然可以伪造数据——至少可以重放过去传输过的数据。
因此,安全实时传输协议标准同时还提供了保护数据完整性以及防止重放的方法。
为了进行消息认证并保护消息的完整性,安全实时传输协议使用了HMAC-SHA1算法。
这种算法使用的是默认160位长度的HMAC-SHA1认证密钥。
但是它不能抵御重放攻击;重放保护方法建议接收方维护好先前接收到的消息的索引,将它们与每个新接收到的消息进行比对,并只接收那些过去没有被播放过的新消息。
这种方法十分依赖于完整性保护的使用(以杜绝针对消息索引的欺骗技术)。