?
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
?? 主要的audio codec 有:
?????????????????????????????? real audio, AAC, AC3, MP3, WMA, SBC等,各種編解碼都有其應用的重點領域。
?? 本文主要對speech codec相關指標進行總結:
?? ITU 推出G.7XX系列的speech codec, 目前廣泛應用的有:G.711,G.723, G.726, G.729. 每一種又有很多分支,如G.729就有g.729A, g.729B and g.729AB
? G.711:
??????????? G.711就是語音模擬信號的一種非線性量化,細分有二種:G.711 A-law and 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 的通道被用于數字電路倍增設備(DCME)中的語音傳輸,而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設備。
??????
audio ?codec 通常采用參數編碼,基本思想是提取speech的特征參數,解碼端由這些特征參數計算出最后輸出的波形。
speech ?codec 通常采用波形編碼,基本思想是用一個編碼后的波形去擬合原始波形,失真小但帶寬大。
?
?1. 波形編碼
波形編碼是最簡單也是應用最早的語音編碼方法。最基本的一種就是PCM編碼,如G.711 建議中的A 律或μ 律。APCM、DPCM和ADPCM也屬于波形編碼的范疇,使用這些技術的標準有G.721、G.726、G.727 等。波形編碼具有實施簡單、性能優良的特點,不足是編碼帶寬往往很難再進一步下降。
2. 預測編碼
語音信號是非平穩信號,但在短時間段內(一般是30ms)具有平穩信號的特點,因而對語音信號幅度進行預測編碼是一種很自然的做法。最簡單的預測是相鄰兩個樣點間求差分,編碼差分信號,如G.721。但更廣為應用的是語音信號的線性預測編碼(LPC)。幾乎所有的基于語音信號產生的全極點模型的參數編碼器都要用到LPC, 如G.728、G.729、G.723.1 建議。
3. 參數編碼
參數編碼是建立在人類語音產生的全極點模型的理論上,參數編碼器傳輸的編碼參數也就是全極點模型的參數- 基頻、線譜對、增益。對語音來說,參數編碼器的編碼效率最高,但對音頻信號,參數編碼器就不太合適。典型的參數編碼器有LPC- 10、LPC-10E,當然,G.729、G.723.1 以及CELP(FS- 1016)等碼
本激勵聲碼器都離不開參數編碼。
4. 變換編碼
一般認為變換編碼在語音信號中作用不是很大,但在音頻信號中它卻是主要的壓縮方法。比如,MPEG 伴音壓縮算法(含著名的MP3) 用到FFT、MDCT 變換,AC- 3 杜比立體聲也用到MDCT,G.722.1建議中采用的MLT 變換。在近年來出現的低速率語音編碼算法中,STC(正弦變換編碼)和WI(波形插值)占有重要的位置,小波變換和Gabor 變換在其中有用武之地。
5. 子帶編碼
子帶編碼一般是同波形編碼結合使用,如G.722 使用的是SB- ADPCM技術。但子帶的劃分更多是對頻域系數的劃分(這可以更好地利用低頻帶比高頻帶感覺重要的特點),故子帶編碼中,往往先要應用某種變換方法得到頻域系數,在G.722.1 中使用MLT 變換,系數劃分為16 個子帶;MPEG 伴音中用FFT 或MDCT 變換,劃分的子帶多達32 個。
6. 統計編碼
統計編碼在圖像編碼中大量應用,但在語音編碼中出于對編碼器整體性能的考慮(變長編碼易引起誤碼擴散),很少使用。對存在統計冗余的信號來說,統計編碼確實可以大大提高編碼的效率,所以,近年來出現的音頻編碼算法中,統計編碼又重新得到了重視。MPEG 伴音和G.722.1 建議中采納了哈夫曼變長編碼
?????
更多資料你鏈接:
www.itu.int
http://www.ilbcfreeware.org/documentation.html#presentations
http://itbbs-arch.pconline.com.cn/topic.jsp?tid=2648071
http://bbs.sdgb.cn/ShowThread.aspx?PostID=11843
http://en.wikipedia.org/wiki/G.726
http://www.itu.int/rec/T-REC-G.726/e