G.723

G.723

G.723是ITU-T在1996年制訂成型的一種多媒體語音編解碼標準。其典型應用包括VoIP服務、H.324視頻電話、無線電話、數字衛星系統、數電倍增設備(DCME)、公共交換電話網(PSTN)、ISDN及各種多媒體語音信息產品。G.723標準傳輸碼率有5.3kb/s和6.3kb/s兩種,在編程過程中可隨時切換。該標準主要包含了編碼演演算法和解碼演演算法。

723編碼器


723編碼器簡介

G.723編碼器採用LPC合成-分析法和感覺加權誤差最小化原理編碼。G.723標準可在6.3kbps和5.3kbps兩種碼率下工作。對激勵信號進行量化時,高速率(6.3kbps)編碼器的激勵信號採用多脈衝最大似然量化(MP­-MLQ),低速率(5.3kbps)編碼器的激勵信號採用代數碼本激勵線性預測(ACELP)。其中,高碼率演演算法(6.3kbps)具有較高的重建語音質量,而低碼率演演算法(5.3kbps)的計算複雜度則較低。與一般的低碼率語音編碼演演算法一樣,這裡的G.723標準採用的線性預測的合成分析法也就是我們通常所說的Analysis-by-Synthesis。

723編碼器原理

G.723建議採用的是定點運算。根據傳輸編碼參數,可重構激勵源與合成濾波器進行解碼,還原出來的數字語音信號經D/A轉換器轉換成模擬語音信號。G.723演演算法對語音信號有很好的編解碼效果,同時也可處理音樂和其它聲音信號,典型輸入是64kbps(8k×8)或128kbps(8k×16)的A律或u律的PCM 採樣語音信號。每次處理一幀語音信號,每幀240個採樣點(30ms)。在5.3kbps的碼率下,每幀語音被壓縮成20個。編碼器先對語音信號進行傳統電話帶寬的過濾,再將輸入的16 bit 線性脈衝編碼調製(PCM)碼流分成長度為240個樣點的語音幀,以幀為單位進行編碼。首先把1幀信號分成4個長度為60個樣點的子幀,接著進行高通濾波,這樣就可以去掉直流分量;分別進行10階線性預測編碼(LPC)分析,從而得到各子幀的LPC參數,並把最後一個子幀的LPC參數轉化成線譜對(LSP)參數,進行矢量量化編碼,送到解碼器。利用未量化的LPC參數構造短時感覺加權濾波器,對信號濾波后得到感覺加權的語音信號。每兩個子幀(120樣點)搜索一個開環基音值,並以此為依據,為每一個子幀構造一個諧波雜訊成形濾波器,對感覺加權的語音信號進行濾波。每一子幀的LPC綜合濾波器、感覺加權濾波器和諧波雜訊成形濾波器級聯起來,構成一個聯合濾波器,利用它的衝擊響應和開環基音周期,對每一子幀進行閉環基音搜索,對開環搜索的結果進行修正。同時通過一個5 階基音預測器對信號進行預測,得到相應子幀的殘差信號。再進行固定碼本搜索,也就是對每一子幀的殘差信號進行矢量量化,先用實際信號減去預測信號得到殘差信號,再用一個脈衝序列通過組成濾波器來模擬殘差信號,在最小誤差準則下,將得到的一系列參數,如濾波器係數、脈衝位置、脈衝幅度打包成一個比特流傳送出去最後還要進行狀態更新。

723編碼器解碼原理

G.723解碼器也是以幀為單位進行解碼的。編碼器輸出的基音周期和差分值都被傳送到解碼器。首先通過激勵解碼器,基音解碼器和LSP解碼器對量化的LPC進行解碼,然後構造LPC合成濾波器,對於每個子幀都需要進行自適應碼本激勵和固定碼本激勵的解碼,然後輸入到合成濾波器中,自適應後置濾波器由共振峰後置濾波器和前後向基音後置濾波器組成,激勵信號輸入到基音後置濾波器中,輸出信號輸入到合成濾波器中,其輸出再輸入到共振峰後置濾波器中,一個增益縮放單元保證共振峰後置濾波器的輸入信號的能量電平。

723演演算法


G.723演演算法對語音信號有很好的編解碼效果,同時也可處理音樂和其它聲音信號,典型輸入是64kb/s(8k×8)或128kb/s(8k×16)的A律或μ律的PCM採樣語音信號。每次處理一幀語音信號,每幀240個採樣點(30ms)。在5.3kb/s的碼率下,每幀語音被壓縮成20個位元組傳輸;在6.3kb/s的碼率下,每幀語音被壓縮成24個位元組傳輸。

G711 G723 G729線路佔多少帶寬問題


帶寬=包長度×每秒包數
=包長度×(1/打包周期)
=(Ethernet頭+IP頭+UDP頭+RTP頭+有效載荷)×(1/打包周期)
=(208bit +160bit+64bit+96bit +有效載荷)×(1/打包周期)
=(528bit+(打包周期(秒)×每秒的比特數))×(1/打包周期)
=( 528 / 打包周期 ) + 每秒比特數
按照上面的計算公式:
G711:20ms打包,帶寬為 ( 528/20 + 64) Kbit/s=90.4 Kbit/s
G729:20ms打包,帶寬為 ( 528/20 + 8 ) Kbit/s= 34.4 Kbit/s
G723:5.3k,30ms打包,帶寬為 ( 528/30 + 5.3 ) Kbit/s=22.9 Kbit/s
業界一般按照下表提供的IP網帶寬係數和乙太網帶寬係數來設計網路帶寬:
編解碼技術 壓縮速率(Kbps)打包周期(ms) IP網帶寬係數 乙太網帶寬係數
G.711 a/u 64 20 1.25 1.41
G.729 a/b 8 20 0.38 0.54
G.723.1(5.3kbit/s) 5.3 30 0.27 0.37
G.723.1(6.3Kbit/s) 6.3 30 0.25 0.36
H.263(384Kbit/s) ≈384 10 6 6.2
註:採用某種編碼方式時,用64K乘以相應的帶寬係數就可以得出其實際佔用的帶寬。當然如果是中繼介面,還需要考慮信令佔據一定的帶寬,一般按照2.5%來計算。
如果看不懂上面的計算方法,只需記住以下結果:
G711 實際佔用帶寬 每線90.4kbit/s 100線併發佔用 9Mbps
G729 實際佔用帶寬 每線34.4kbit/s 100線併發佔用 3.4Mbps
G723 實際佔用帶寬 每線22.9kbit/s 100線併發佔用 2.2Mbps