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這樣的特定網路下,有特定的編解碼器,不再多講.
從編碼技術上講,音訊編碼的內容很多,且看以後需不需要再專門花一些時間來看看前人是怎麼編碼語音的再寫下文.
下一節主要是H.323協議.
編者按:原文出自Jasonme的部落格
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24790158/viewspace-1040979/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 語音學習筆記5------時頻分析筆記
- 【部分】Java速成學習筆記Java筆記
- JavaScript學習筆記——基礎部分JavaScript筆記
- Pandas學習筆記1(序列部分)筆記
- JavaWeb學習筆記後端部分JavaWeb筆記後端
- 彙編學習筆記筆記
- 語音學習筆記5------subplot函式的用法筆記函式
- 韓語學習筆記(1)音標與輸入法筆記
- 英語學習筆記筆記
- 音視訊學習筆記(一)筆記
- webpack 學習筆記:實戰之 babel 編碼Web筆記Babel
- 學習筆記分享之彙編---2.彙編指令/語法筆記
- 【編譯openjdk學習筆記】編譯JDK筆記
- Solidity語言學習筆記————2、使用編譯器Solid筆記編譯
- Solidity語言學習筆記————38、Solidity彙編Solid筆記
- Solidity語言學習筆記————39、獨立彙編Solid筆記
- Python3學習筆記-字串和編碼Python筆記字串
- C 語言學習筆記筆記
- C語言學習筆記C語言筆記
- SQLite語句學習筆記SQLite筆記
- 拉丁語學習筆記 一筆記
- HTML5學習筆記 音訊HTML筆記音訊
- 語音學習筆記2------matlab實現傅立葉變換筆記Matlab
- [前端學習]js特效部分學習筆記,第三天前端JS特效筆記
- 彙編基礎學習筆記筆記
- XML學習筆記(一):關於字元編碼的理解XML筆記字元
- 彙編學習筆記07——BCD碼及調整指令筆記
- 學習筆記1——數字基帶訊號編碼筆記
- FFMPEG視音訊編解碼學習(1)音訊
- C語言之霍夫曼編碼學習C語言
- Python學習筆記 - if語句Python筆記
- Javascript 學習筆記--語法篇JavaScript筆記
- 組合語言學習筆記組合語言筆記
- Java學習筆記--sql語句Java筆記SQL
- JavaScript學習筆記---基本語法JavaScript筆記
- Html 語法學習筆記一HTML筆記
- Html 語法學習筆記二HTML筆記
- Html 語法學習筆記三HTML筆記