amr-wb,轉自劉品

AMR_WB Codec(一)

      把AMR_NB 在 ARMv4, ARMv5 和ARMv7指令集優化做了一遍,現在開始做AMR_WB codec在ARMv4和ARMv5指令優化,等這個做好後,爭取來一個CELP編碼相關算法全集深度剖析,也好自己將學習總結一下。先把AMR_WB codec相關知識介紹一下。

     AMR-WB是由3GPP/ETSI在2001年制定用於WCDMA和GSM的寬帶語音編碼標準,ITU-T在2002年將其選爲其16kbit/s編碼速率的寬帶語音編碼標準G.722.2。這也標誌無線與有線首次採用了同一語音編碼器,意味着在3G與IP固定網絡之間的互通更加容易,爲寬帶語音在更多的通信系統和設備的應用和服務打下了基礎。AMR-WB有9種編碼速率,並擁有話音激活檢測(VAD)、信源控制速率(SCR)、舒適噪聲生成(CNG)等變速率技術。

     AMR-WB語音編碼系統主要由多碼率語音編碼器、信源控制速率(SRC:Source Controlled Rate)及丟幀/失幀錯誤隱藏機制三部分組成。SRC包括話音激活檢測(VAD:VoiceActivity Detector)和舒適背景噪聲(CAN:Comfort NoiseAspects)系統。丟幀/失幀錯誤隱藏機制用於避免或減少傳輸錯誤和包丟失對語音的影響。AMR-WB語音編碼的編碼算法採用代數碼本激勵線性預測(ACELP:AlgebraicCode Exitation Linear Prediction)技術。(實際上,AMR-WB還是跟AMR_NB, G.729一樣,都是參數編碼,利用聲道模型)。

     AMR-WB語音編碼的多碼率語音編碼器是一個集成語音編碼器,由9種編碼模式組成,其編碼速率分別爲:6.6,8.85,12.65,14.25,15.85,18.25,19.85,23.05和23.85kbit/s。多碼率語音編碼器還有一個低碼率背景噪聲模式,主要用在GSM非連續傳輸(DTX)操作中,也可以在其它系統中作爲一種低速率的信源獨立傳輸模式,以便用來編碼背景噪聲,在GSM中這種模式編碼速率爲1.75kbit/s。12.65 kbit/s及以上碼率模式都能夠提供高質量的寬帶語音,專門設計的兩個低碼率模式6.6 kbit/s和8.85kbit/s主要用在惡劣的無線信道環境或網絡堵塞的場合。    

    編碼時分成兩個頻帶,即50Hz~6400Hz的低頻帶和6400Hz~7000Hz的高頻帶。它們的編碼是獨立的,這樣做主要是爲了降低複雜度和讓最重要的頻帶範圍傳遞更多的參數信息。

     AMR-WB語音編碼器輸入語音的採樣率爲16kHz,編碼每幀爲20ms,320個樣點。輸入信號先經下采樣使信號速率變成12.8kbit/s,每幀長度爲256樣點,再經過截止頻率爲50Hz的高通濾波器,濾掉異常的低頻成分。爲了防止定點運算產生溢出錯誤,在預加重之前,所有的樣點都進行幅度除2處理。經過高通濾波和預加重後的信號開始進行ACELP編碼。

    與AMR_NB比較一下,AMR_NB支持8種速率,採樣率爲8KHz, 編碼每幀也爲20ms,160samples,但沒有做降採樣處理,AMR-WB有將16KHz降到12.8KHz操作,這部分要好好學習一下,因爲最新正在做一個"抽取和插值"的DLL,爭取做到變速率不變音質。還就是不同速率下,對子幀的劃分和處理也是不一樣的。但基本原理還是一樣。把speech codec學習一下,由三大知識點:一是filter,裏面在很多種濾波器,好好研究一下,夠我喝一壺的。但這些都是可以reuse的,所以值得去好好研究和學習:LP,BP 還有HP。二是、語音數據模型(激勵加線性預測係數),主要碼本的生成 和 LP--》LSP等。 三是、定點化,有很多代碼已經定點化好了,但從讀代碼也能學到很多相關的知識。

   AMR-WB: 編碼線性預測(LP)分析每幀(20ms)執行一次,每組LP係數被轉換成ISP(Immittance Spectrum Pairs)參數,並進行分裂多級矢量量化(S-MSVQ)。每幀被分成4個子幀64個信號樣點,自適應和固定碼本參數是基於每個子幀傳輸的,量化和未量化的LP係數或者其插值也是基於每個子幀進行的,開環基音延遲每幀估計一次(6.6kbit/s模式)或者兩次(非6.6kbit/s模式)。執行完上述操作後,基於不同的子幀,執行下列操作:計算目標信號(x( n))和感覺加權合成濾波器的衝激響應(h( n));由目標信號和衝激響應在開環基音估計的基礎上再作更精細的搜索即閉環基音分析,得到最佳基音延遲和增益;目標信號減去自適應碼本部分作爲更新後的目標信號(x 2(n)),進行代數碼本即固定碼本搜索;自適應碼本和固定碼本增益採用6比特或7比特矢量量化;最後進行濾波器狀態更新,用於下一子幀的分析。在23.85kbit/s模式,對經過帶通濾波後的輸入語音進行分析得到高頻帶增益。最後,每一幀信號編碼後得到的比特流中包含有VAD索引、長時預測濾波器索引、ISP矢量索引、自適應碼本索引(4組)、固定碼本索引和碼本增益(4組),在23.85kbit/s模式中還包含高頻帶增益索引(4組)。

    AMR-WB 解碼: 在解碼器輸入端,從接收的比特流中獲得VAD索引、長時預測濾波器索引、ISP矢量索引、自適應和固定碼本參數(索引和增益)等。在23.85kbit/s模式下,還要獲得高頻帶增益索引。ISP參數還需要轉化爲LP係數,再根據LP係數內插得到各個子幀的合成濾波器係數。在給定編碼模式下,對每子幀64個樣點作下列運算:由自適應碼本和固定碼本矢量經過各自的增益加權後獲得重建的激勵矢量;將激勵矢量(或經過後置處理的激勵矢量)輸入合成濾波器得到採樣率爲12.8kbit/s的重建語音信號;重建的語音信號被去加重;最後,重建的語音信號還需要經過升採樣處理(把採樣率從12.8kbit/s轉換到16kbit/s)。

 

      至此,簡單介紹了一下AMR-WB codec,接下來將會是與AMR-NB對比性的進行分析和優化。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章