各种语⾳编码带宽计算字符串长度怎么求
speech codec (G.711, G.723, G.726, G.729, iLBC)各种各样的编解码在各种领域得到⼴泛的应⽤,下⾯就把各种codec的压缩率进⾏⼀下⽐较,不正确之处望各位同⾏指正。Speech codec:现主要有的speech codec 有:G.711, G.723, G.726 , G.729, ILBC,QCELP, EVRC, AMR, SMV 主要的audiocodec 有:real audio, AAC,AC3, MP3, WMA, SBC等,各种编解码都有其应⽤的重点领域。本⽂主要对speech codec相关指标进⾏总结: ITU 推出G.7XX系列的speechcodec, ⽬前⼴泛应⽤的有:
G.711,G.723,G.726, G.729. 每⼀种⼜有很多分⽀,如G.729就有g.729A, g.729Band g.729AB
G.711:
G.711就是语⾳模拟信号的⼀种⾮线性量化,细分有⼆
种:G.711 A-lawand G.711 u-law.不同的国家和地⽅都会选取⼀种作为⾃⼰的标准. G.711 bitrate 是64kbps. 详细的资料可以在ITU 上下到相关的spec,下⾯主要列出⼀些性能参数:G.711(PCM⽅式:PCM=脉码调制:Pulse Code Modulation)· 采样率:8kHz· 信息量:64kbps/channel·理论延迟:0.125msec· 品质:MOS值4.10
G.723.1:
G.723.1是⼀个双速率的语⾳编码器,是 ITU-T建议的应⽤于低速率多媒体服务中语⾳或其它⾳频信号的压缩算法;其⽬标应⽤系统包括H.323、H.324等多媒体通信系统,⽬前该算法已成为IP电话系统中的必选算法之⼀;编码器的帧长为30ms,还有7.5ms的前瞻,编码器的算法时延为37.5ms;编码器⾸先对语⾳信号进⾏传统电话带宽的滤波(基于G.712),再对语⾳信号⽤传统8000-Hz速率进⾏抽样(基于G.711),并变换成16 bit线性PCM码作为该编码器的输⼊;在解码器中对输出进⾏逆操作来重构语⾳信号;⾼速率编码器使⽤多脉冲最⼤似然量化(MP-MLQ),低速率编码器使⽤代数码激励线性预测(ACELP)⽅法,编码器和解码器都必须⽀持此两种速率,并能够在帧间对两种速率进⾏转换;此系统同样能够对⾳乐和其他⾳频信号进⾏压缩和解压缩,但它对语⾳信号来说是最优的;采⽤了执⾏不连续传输的静⾳压缩,这就意味着在静⾳期间的⽐特流中加⼊了⼈为的噪声。除了预留带宽之外,这种技术使发信机的调制解调器保持连续⼯作,并且避免了载波信号的时通时断。
G.726:
G.726有四种码率:, 32, 24, 16 kbit/s Adaptive Differential Pulse Code
Modulation(ADPCM),最为常⽤的⽅式是 32 kbit/s,但由于其只是 G.711速率的⼀半,所以可将⽹络的可利⽤空间增加了⼀倍。G.726具体规定了⼀个 64 kbpsA-law 或 µ-law PCM 信号是如何被转化为40, 32, 24或16 kbps 的ADPCM 通道的。在这些通道中,24和16 kbps 的通道被⽤于数字电路倍增设备(DC
ME)中的语⾳传输,⽽40 kbps 通道则被⽤于 DCME 中的数据解调信号(尤其是4800 kbps 或更⾼的调制解调器)。
G.726 encoder 输⼊⼀般都是G.711 encoder的输出:64kbps A-law or u-law.其算法实质就是⼀个ADPCM,⾃适应量化算法。
G.729:
G..729语⾳压缩编译码算法采⽤算法是共轭结构的代数码激励线性预测(CSACELP),是基于CELP编码模型的算法;能够实现很⾼的语⾳质量(长话⾳质)和很低的算法延世;算法帧长为10ms,编码器含5ms前瞻,算法时延
15ms;其重建语⾳质量在⼤多数⼯作环境下等同于32kb/s 的ADPCM(G.726),MOS分⼤于4.0;编码时输⼊
16bitPCM语⾳信号,输出2进制⽐特流;译码时输⼊为2进制⽐特流,输出16bitPCM语⾳信号;在语⾳信号8KHz取样的基础上,16bit线性PCM后进⾏编码,压缩后数据速率为8Kbps;具有相当于16:1的压缩率。G.729系列在当前的VOIP得到⼴泛的应⽤,且相关分⽀较多,可以直接从ITU⽹上得到source code 和相关⽂档。G.729(CS-ACELP⽅
式:Conjugate Structure Algebraic Code Excited Linear Prediction)· 采样率:8kHz· 信息量:8kbps/channel· 帧长:10msec· 理论延迟:15msec· 品质:MOS值3.9
iLBC(internet low bitrate codec):
是全球著名语⾳引擎提供商Global IP Sound开发,它是低⽐特率的编码解码器,提供在丢包时具有的强⼤的健壮性。iLBC 提供的语⾳⾳质等同于或超过 G.729 和
G.723.1,并⽐其它低⽐特率的编码解码器更能阻⽌丢包。iLBC 以13.3 kb/s (每帧30毫秒)和15.2 kb/s (每帧20毫秒)速度运⾏,很适合拨号连接。        iLBC的主要优势在于对丢包的处理能⼒。iLBC独⽴处理每⼀个语⾳包,是⼀种理想的包交换⽹络语⾳编解码。在正常情况下,iLBC会记录下当前数据的相关参数和激励信号,以便在之后的数据丢失的情况下进⾏处理;在当前数据接收正常⽽之前数据包丢失的情况下,iLBC会对当前解码出的语⾳和之前模拟⽣成的语⾳进⾏平滑处理,以消除不连贯的感觉;在当前数据包丢失的情况下,iLBC会对之前记录下来的激励信号作相关处理并与随机信号进⾏混合,以得到模拟的激励信号,从⽽得到替代丢失语⾳的模拟语⾳。总的来说,和标准的低位速率编解码相⽐,iLBC使⽤更多⾃然、清晰的元素,
精确的模仿出原始语⾳信号,被誉为更适合包交换⽹络使⽤的可获得⾼语⾳质量的编解码。  此外,⼤部分标准的低位速率编解码,如G.723.1和G.729,仅对300Hz——3400Hz的频率范围进⾏编码。在这
个频率范围⾥,⽤G.711编解码所达到的语⾳质量,就是传统PSTN⽹络进⾏语⾳通话的效果。  iLBC充分利⽤了0——4000Hz的频率带宽进⾏编码,拥有超清晰的语⾳质量,这⼤⼤超出传统300Hz ——3400Hz的频率范围。  ⼴受欢迎的Skype⽹络电话的核⼼技术之⼀就是iLBC语⾳编解码技术,Global IP Sound 称该编码器语⾳品质优于PSTN,⽽且能忍受⾼达30%的封包损失。  总的来说,在相同的包交换通信条件
下,iLBC的语⾳质量效果⽐G.729、G.723.1以及G.711更好,声⾳更加圆润饱满,且丢包率越⾼,iLBC在语⾳质量上的优势就越明显!  ⽬前,在国际市场上已经有很多VoIP的设备和应⽤⼚商把iLBC集成到他们的产品中。如:Skype, Nortel等。在国内市场上,⽬前尚⽆VoIP⼚家正式推出⽀持“iLBC”的⽹关设备,迅时公司率先推出⽀
持“iLBC”的中继⽹关和IAD设备。
如何计算⼀路话⾳消耗的带宽
在voice这⽅⾯,是如何计算使⽤某种codec所消耗的带宽呢?在默认情况下,把模拟话⾳转换为数字话⾳后,按
20ms⼀段20ms⼀段切开,⽤rtp封装起来,然后包上udp header,ip header,最后是layer 2的包头,然
后发出去。假设咱们⽤g.729编码,并在ethernet上传输。⼀起来算算⼀路话⾳需要多⼤带宽吧。g.729每路话⾳是8kbit/s,那么开始转换:8000bps / 8 = 1000 bytes/s,得到g.729每秒需要带宽1000 bytes那么默认都是把20ms的话⾳封成⼀个packet,也就可以算出1秒内发送多少个packet:1s / 20ms = 50个也就是说g.729每20ms需要的带宽为:1000bytes/s / 50 = 20bytes/s之后以太⽹帧头6-byte,ip包头20-byte,udp 包头8-byte,rtp包头12-byte,这样,再加上g.729的payload为20bytes,也就是说每20ms就要产⽣⼀个6 + 20 + 8 + 12 + 20 = 66-byte长度的帧,那么⼀秒就要发送50个66-byte,等于3300-byte,转成kbit/s: 3300byte/s * 8 /1000 = 26.4kbit/s最终得出g.729⼀路话⾳占⽤带宽(包括layer2 header)为26.4kbps
语⾳编码的带宽计算
VOIP Bandwidth consumption naturally depends on the codecused.  VOIP消耗的带宽⼀般取决于所使⽤的语⾳编码.When calculating bandwidth, one can't assume that everychannel is used all the time. Normal conversation includes a lot of silence,which often means no packets are sent at all.So even if one voice call sets uptwo 64 Kbit RTP streams over UDP over IP over Ethernet (which adds overhead),the full bandwidth is not used at all times.  计算带宽时,不能假设每⼀个通道都处于使⽤状态.正常的通话过程包括⼀系列的静⾳,也就意味着并不是⼀直都有包在传送.所以⼀个语⾳呼叫建⽴两个经过UDP,IP和以太⽹的64Kbit 的RTP流(总开销),全部带宽并末⼀直被使⽤.A codec that sends a 64k
b stream results in a much largerIP network stream. The main cause of the extra bandwidth usage is IP and UDPheaders. VoIP sends small packets and so, many times, the headers are actuallymuch larger than the data part of the packet.  ⼀个传送64kb流的语⾳编码很⼤程度上都是IP⽹络流的结果.额外的带宽使⽤主要是IP或UDP头的增加.VOIP只传送少量的包,很多时候,实际上是包头远远⼤于包数据.
Codec        BR          NEBG.711      64 Kbps      87.2 KbpsG.729      8 Kbps        31.2 KbpsG.723.1    6.4 Kbps      21.9 KbpsG.723.1    5.3 Kbps      20.8 KbpsG.726      32 Kbps      55.2 KbpsG.726      24 Kbps      47.2
KbpsG.728      16 Kbps      31.5 KbpsiLBC        15 Kbps
27.7 Kbps
BR = Bit rateNEB = Nominal Ethernet Bandwidth (one direction)根据我的使⽤经验,8K的G.729加上IP封装后达到32K,为了防封杀,还有的⽤户使⽤IP Sec设备将语⾳做成VPN,这样G.729加上IP封装,再加上VPN会达到60多K。注:头三段中⽂是我⾃⼰译过来的,所以读起来并不怎么准确,⽽且会感觉别扭,呵呵.多多包涵了.有兴趣的朋友可以再译⼀次.以供借鉴.集通软交换电话-所需带宽说明VoIP所需要的带宽,通常取决于它所使⽤的codec编码⽅法。在计算带宽时,不能假定每个通道总是在使⽤之中。
通常的会话过程中包括⼤量的静默时段,就是不发送任何数据包。⼀个会话建⽴了两个64kbps的RTP流,在UDP/IP/Ethernet 上,并⾮在所有的时间都使⽤全部的带宽。⼀种编码⽅法发送64kbps的数据流,会导致⼤得多的IP⽹的数据流,引起额外带宽的主要原因是IP和UDP的报⽂头.当VoIP发送⼩的
数据包时,在⼤多数时候,报⽂头实际上要⽐包中的数据⼤得多。下⾯的表列出了各种编码⽅法,所需要的带宽:
编码⽅法编码所需带宽实际所需要的⽹络带宽
G.71164 Kbps87.2 Kbps
G.7298 Kbps31.2 Kbps
G.723.1  6.4 Kbps21.9 Kbps
G.723.1  5.3 Kbps20.8 Kbps
G.72632 Kbps55.2 Kbps
G.72624 Kbps47.2 Kbps
G.72816 Kbps31.5 Kbps
编码所需带宽,是指理论上所需要的带宽。但在实际的传输过程中,还要付出其他的消耗,如报⽂头。真正需要的带宽是实际所需要的⽹络带宽,这是⼤致的数值,⽽不是严格的精确值。实际所需要的⽹络带宽通常是以太⽹所需要的带宽,或者是ppp连接所要的带宽。QQ使⽤的编码技术GIPS,实际使⽤起来感觉声⾳⽐较清晰,相对于SIP的编码就显得声⾳有些不好,请问,GIPS理论占⽤的带宽有多⼤?能不能在SIP加⼊GIPS编码⽅式?GIPS公司⽤的语⾳编码技术是 iLBC编码。iLBC若采30ms⼀帧,则理论带宽需要13.33 kbps。若20ms ⼀帧,则理论带宽需要15.2kbps 。iLBC的语⾳质量要⽐ G.729A好些,但是能够容忍丢失更多的包;也就是在丢包后,iLBC恢复能⼒更强。iLBC计算复杂度与G.729A差不多。都是计算度⽐较复杂的算法。SIP终端中,也有使⽤ iLBC编码的。skype 、QQ在语⾳编码上并没有什么优势。由于它们是私有协议,⽬前在穿透私⽹(NAT)和防⽕墙上,更好做些,所以媒体流的路径,可能⽐SIP标准(⽬前)好做些⽽已。穿透易,路径选得近些,⾳质就显得好些。G711在⼤约有 100Kbps 带宽时,有很好的语⾳质量。G.726 在⼤约有 50Kbps 带宽时,有好的语⾳质量。G.729 在⼤约有30Kbps 带宽时,有好的语⾳质量。
GIPS公司⽤的语⾳编码技术是带宽可变的码率,也就是根据⽹络实际的带宽状态,调整语⾳编码的压缩⽐率。也就是带宽越少,语⾳压缩得越厉害,失真损失越多;带宽越好,就压缩不厉害,失真损失少。注意语⾳编码⽤的压缩,都是有损压缩,也就压缩后语⾳会些失真。什么是iLBC?  iLBC是⼀种专为包
交换⽹络通信设计的编解码,优于⽬前流⾏的G.729、G.723.1,对丢包进⾏了特有处理,既使在丢包率相当⾼的⽹络环境下,仍可获得⾮常清晰的语⾳效果。iLBC所占⽤带宽?  30ms ptime的iLBC所占⽤的总通信带宽⽐通常采⽤的ptime 20ms的G.729的带宽还要⼩,以下是iLBC与传统编解码占⽤带宽列表:iLBC——语⾳质量的飞跃  语⾳质量⼀直是VoIP应⽤的主要难点,如何保证和提⾼IP⽹络传输语⾳的通话效果,是VoIP应⽤迫切需要解决的问题。“iLBC”编解码的出现,解决了在包交换的IP⽹络中,传输语⾳所遇到的⽹络丢包严重影响通话质量等实际问题,实现了“语⾳质量的飞跃”。  下图为在不同的⽹络丢包环境下,使⽤iLBC与G.729A、G.723.1编解码的语⾳质量⽐较。图1. iLBC与 G.729A、G.723.1的⽐较(Dynastat, Inc)  ⽆论在⾼丢包率条件下还是在没有丢包的条件下,iLBC的语⾳质量都优于⽬前流⾏的G.723.1, G.729A等标准编解码;⽽且丢包率越⼤,使⽤iLBC的语⾳质量优势越明显。通常情况下,为了衡量IP⽹络语⾳质量,将≥5%丢包率的⽹络情况定义为VoIP的极限⽹络条件。经过语⾳质量测试,即使在5%丢包率的情况下,iLBC仍然能够提供相当于GSM⼿机的语⾳质量。
Internet话⾳分组传输技术
在IP⽹中传输层有两个并列的协议:TCP和UDP。
TCP是⾯向连接的,它提供⾼可靠性服务;UCP是⽆连接的,它提供⾼效率的服务。
⾼可靠性的TCP⽤于⼀次传输要交换⼤量报⽂的情况,⾼效率的UDP⽤于⼀次交换少量的报⽂或实时性
要求较⾼的信息。
实时传输协议RTP提供具有实时特征的、端到端的数据传输业务,可以⽤来传送声⾳和活动图像数据,在这项数据传输业务中包含了装载数据的标识符、序列号、时戳以及传送监视。通常RTP的协议数据单元是⽤UDP分组来承载的。⽽且为了尽量减少时延,话⾳净荷通常都很短。图3表⽰⼀个IP话⾳分组的结构,图中 IP,UDP和RTP的控制头都按最⼩长度计算。这种IP话⾳分组的开销很⼤,约为66%~80%。于是有⼈提出了组合RTP分组的概念

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。