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