VoIP學習筆記第二部分:語音編碼

我們在前一節提到過MOS(Mean Opinion Score)這個概念, 我們在傳輸語音的過程中, 因爲帶寬的限制問題理所當然的會把對語音數據進行有損的壓縮.這樣的話,語音的質量就會降低,但是通訊的壓力會很小,相應的MOS的得分就會低一些.語音編碼技術的目標就是在保持相對較少的信息量的情況下使MOS儘可能的高.

語音分爲三種主要的類型:
1) 濁音. 空氣從肺部向聲道不斷進行開合震動的聲帶所阻斷的時候就產生了濁音,聲帶開合的速率決定了聲音的音調.有明顯的週期性,週期一般在2ms-20ms之間
2) 清音  當聲門保持敞開的狀態,通過聲道的收縮來高速驅動空氣產生的類似噪聲的雜亂聲音的時候就是清音,這樣的聲音基本上沒有週期性。
3) 爆破音 聲道完全閉合,空氣壓力閉合後增大,然後突然被釋放而產生的。

        與視頻編碼類似,音頻編碼也主要是通過合理的預測來降低傳輸的能量,這樣就會有比較好的壓縮效果。

        在語音抽樣上,主要還是根據Nyqusit頻率進行取樣,人的語音頻帶在200Hz--3800Hz之間,可以認爲最大頻率都小於4000Hz,那麼使用低通濾波器過濾掉4000Hz以上的頻率信息,在每秒中取8000個樣本.這樣的取樣方法可以滿足會話的質量,但是對於唱歌或其他與會話差別較大的頻帶來講,這樣的取樣就會失敗,對於這種情況設置合理的截止值是很有必要的。

        我們在通訊中使用有限的bit數來表示無窮的數據範圍,實際上,必須使用量化來進行數據歸類.由量化造成的損失我們稱之爲量化噪音.解決這個問題最好的辦法就是使用更多的比特來進行量化,這樣就可以得到更細的粒度.
        接下來,我們來看一下語音編碼器的種類.總體上來講,它一共有三種分類:波形編解碼器,源編解碼器,混合編解碼器.

        波形編解碼器提供了高質量的輸出,而且實現很簡單,問題在於它使用了大量的帶寬,不是進行編碼比較合適的選擇.源編解碼順口溜試圖使輸入的信號符合於語音產生的數學模型.他們通常使用聲道的線性預測過濾模型.用一個清濁音標誌來代表使用的過濾器的激發信號.而聲編解碼器以低比特速率運行,但是試圖形成合成的語音.使用較高的比特速率並不能提供任何的幫助.一般用於私人通信系統或是軍事中.所以在編碼
語音的過程中,我們一般使用混合編解碼器.

G.711編碼標準

        它是現在用的最普遍的編碼技術.它是目前全世界電路交換電話網中使用的編碼技術.它以8000Hz爲採樣頻率,如果使用編一量化的方式,話音中通常的信號層次的每一個樣本需要用12比特來表示,這樣就有96kbps的比特率,如果用不統一量化模式,就可以達到64kbps的碼率,這樣就可以進行流暢的語音傳輸交互了.

        G.711的MOS等級在4.3左右,所以質量就相當不錯了,但是問題在於它需要64kbps的帶寬,如果能再小的話,那就更理想了.

        在G.711中PCM編解碼器把各個樣本傳輸到遠程終端,由於語音變化的速度比較慢,所以從先前的樣本中預測出當前的樣本的可能性是很大的,這樣我們就可以通過樣本預測值與實際樣本之差進行編碼,這樣的技術被稱爲差分PCM(DPCM).

        在有了DPCM的模型之後,我們還有一個更爲先進一些的模型: 自適音頻脈衝編碼(ADPCM),ADPCM是由以前的樣本信息通過語音的變化科研部中提取出公共信息作爲預測值.在ADPCM上最主要的標準就是.726.PCM與ADPCM都沒有算法上的時延,所以可以進行實時的編解碼.

        更加複雜的編碼器有分析-綜合編解碼器(AbS Codecs)比如G.728 LD-CELP,它實現了一個濾波器,它包括一個語音學向量的編碼本,每個向量包括一系列元素.這些元素代表激發信號的不同特徵.所以這時語音信號傳輸的內容就是一系列的濾波器係數,增益以及指向選定激發向量的指針.這樣在解碼器端就可以精確進行信號的重組了.而LD-CELP則是由5個樣本決定與之最匹配的編碼本向量的濾波器係數,通過這樣的方式,G.728可以把碼率降低到16kbps以下.

G.723.1 ACELP

        G.723.1定義了一種同時支持兩種速率的語音編碼方法,分別是6.3kbps以及5.3kbps. 編碼器取出輸入信號, 然 後進行標準的PCM量化,形成16位的信號,接下來編碼器在240個樣本構成的塊或幀上操作.這樣每個幀就對應到30ms的語音數據.加上一個7.5ms的前瞻,這樣的話,一共得到的時延是37.5ms. 這樣需要進行傳輸的數據有預測係數,增益係數,以及激發編碼本索引值.

        在通話的過程中總會有靜默期,在此時通過不以傳語音的同樣速率傳靜音來節約帶寬.G.723.1 Annex中提供了這樣的一種方法.使用SID靜音描述符來進行標記.

        G.723.1的MOS的值大約在3.8左右.

G.729

        它使用10ms爲幀長,加上5ms的前瞻,這樣的話,時延只有15ms,比起G.723.1就小很多了,而且還提出了語音活動檢測,不連續傳輸和補償噪音等再生的建議.它的MOS值大約爲4.0

        當然對於像CDMA,GSM這樣的特定網絡下,有特定的編解碼器,不再多講.

        從編碼技術上講,音頻編碼的內容很多,且看以後需不需要再專門花一些時間來看看前人是怎麼編碼語音的再寫下文.
 
發佈了5 篇原創文章 · 獲贊 2 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章