1. 程式人生 > >WAV格式常見的幾種壓縮形式(compression code)

WAV格式常見的幾種壓縮形式(compression code)

WAV為微軟公司(Microsoft)開發的一種聲音檔案格式,它符合RIFF(Resource Interchange File Format)檔案規範,用於儲存Windows平臺的音訊資訊資源,被Windows平臺及其應用程式所廣泛支援,該格式也支援MSADPCM,CCITT A LAW等多種壓縮運演算法,支援多種音訊數字,取樣頻率和聲道。標準格式化的WAV檔案取樣頻率為44100Hz,取樣位元為16bit,因此標準的(這裡說標準,只是一種廣泛採用的波形音訊方案)WAV檔案和CD音訊格式一樣,也是44.1KHz的取樣頻率,16位量化數字,在聲音檔案質量和CD音訊相差無幾。

 下面由useiee

詳細介紹一下WAV格式檔案常見的10種壓縮碼形式(Compression Code)。[1]

 1. PCM/uncompressed
  Pulse Code Modulation,脈碼調製訊號。是模擬音訊訊號經模數轉換(A/D變換)直接形成的二進位制序列,該檔案沒有附加的檔案頭和檔案結束標誌。Windows的Convert工具可以把PCM音訊格式的檔案轉換成Microsoft的WAV格式的檔案。
  PCM脈碼調製數字音訊格式是70年代末發展起來的,80年代初由飛利浦和索尼公司共同推出。PCM的音訊格式也被DVD-A所採用,它支援立體聲和5.1環繞聲,1999年由DVD討論會發布和推出的。
  PCM的取樣精度從14bit發展到16bit、18bit、20bit直到24bit;取樣頻率從44.1kHz發展到192kHz。到目前為止PCM這種單純依賴提高取樣規格的技術,其可改進的地方已經越來越來小。只是簡單的增加PCM位元率和取樣率,不能從底層改善它的根本問題。

 2. Microsoft ADPCM
  Adaptive Differential Pulse Code Modulation,自適應差分脈碼調製訊號。是一種資料壓縮演算法,該演算法利用了語音訊號樣點間的相關性,並針對語音訊號的非平穩特點,使用了自適應預測和自適應量化。即對不同水平的差分序列,用一個相應引數delta作為平穩化引數去除差分序列的幅值,使得差分編碼自動的適應資料間大幅度的跳躍。
  Microsoft ADPCM是微軟標準的WAV格式檔案採用ADPCM編碼的檔案,區分於IMA ADPCM檔案。MS-ADPCM編碼是分塊的,每塊有塊頭資訊和編碼資料。對單聲道訊號,每塊由7個位元組組成,byte0是塊預測器predictor,byte1-2是初始delta,byte3-4和byte5-6分別是兩個取樣。[2]
  
 3. ITU G.711 a-law [3]
  G.711標準也是PCM碼的一種。是國際電報聯盟(International Telegraph Union, ITU)訂定出來的一套語音壓縮標準,主要用於電話。它主要用脈衝編碼調製對音訊取樣,取樣率為8kHz。它利用一個 64kbit/s 未壓縮通道傳輸語音訊號。起壓縮率為1:2,即把16位資料壓縮成8位。G.711是主流的波形聲音編解碼器。
  G.711 標準下主要有兩種壓縮演算法。一種是?μ-law algorithm (又稱μ-law),主要運用於北美和日本;另一種就是a-law algorithm,主要運用於歐洲和世界其他地區。其中,a-law是特別設計用來方便計算機處理的。

 4. ITU G.711 µ-law
  G.711標準下的另一種壓縮演算法,主要運用於北美和日本,美國電話格式(CCITT G.711)就採用這種演算法。

 5. IMA ADPCM
  IMA是ADPCM中使用較多的一種演算法。該演算法中對量化步長的調整使用了簡單的查表方法,對於一個輸入的PCM值X(n),將其與前一時刻的X(n-1)預測值做差值得到d(n),然後根據當前的量化步長對d(n)進行編碼,再用此sample點的編碼值調整量化步長,同時還要得到當前sample點的預測值供下一sample點編碼使用。通過此演算法可將樣點編碼成4bit的碼流,一個符號位和三個幅度位。該演算法較簡單,通過查表簡化了運算。編碼後採用WAV檔案格式,對編碼後的資料流進行了包裝,由檔案頭和資料碼流組成,檔案頭和標準WAV格式檔案一樣,指出了音訊資料所採用格式、取樣率、位元率、塊長度、位元數及聲道數等資訊。資料碼流以塊為單位,塊頭指出了該塊起始的預測值和index值,碼流中每byte的高四位和低四位分別對應一個PCM。當前該演算法以其簡單實用的特點廣泛應用到數字音樂盒和數字錄音筆中。

 6. ITU G.723 ADPCM (Yamaha)
  G.723是ITU在1996年制訂成型的一種多媒體語音編解碼標準。其典型應用包括VoIP服務、H.324視訊電話、無線電話、數字衛星系統、數電倍增裝置(DCME)、公共交換電話網(PSTN)、ISDN及各種多媒體語音資訊產品。G.723標準傳輸位元速率有5.3kbit/s和6.3kbit/s兩種,在程式設計過程中可隨時切換。該標準主要包含了編碼演算法和解碼演算法。原理是:從採集的語音訊號中解析出聲道模型引數,構造一個合成濾波器,採用合適的激勵源激勵,編碼傳輸的引數主要是激勵源與合成濾波器的引數。5.3kbit/s的編碼器採用代數碼線預測激勵(ACELP);6.3kb/s的編碼器則採用多脈衝最大似然量化(MP-MLQ)激勵。根據傳輸編碼引數,可重構激勵源與合成濾波器進行解碼,還原出來的數字語音訊號經D/A轉換器轉換成模擬語音訊號。
  G.723演算法對語音訊號有很好的編解碼效果,同時也可處理音樂和其它聲音訊號,典型輸入是64kb/s(8k×8)或128kbit/s(8k×16)的A-law或µ-law的PCM取樣語音訊號。每次處理一幀語音訊號,每幀240個取樣點(30ms)。在5.3kbit/s的位元速率下,每幀語音被壓縮成20個位元組傳輸;在6.3kbit/s的位元速率下,每幀語音被壓縮成24個位元組傳輸。

 7. GSM 6.10 [4]
  是我們熟知的全球移動通訊系統(Global System for Mobile communications)定義的一種音訊編解碼標準。廣泛應用於無線通訊裝置如手機、無線通訊終端中。音訊訊號被壓縮至介於5.6kbit/s和13kbit/s之間,這兩種位元速率被分別叫做半率(Half Rate)和全率(Full Rate),最初大部分只有這兩種位元速率的編碼。編碼基於線性預測編碼演算法(Linear Predictive Coding, LPC)。GSM 6.10除了在位元率上有很出色的表現外,這種編碼的音訊訊號在空氣通道中傳輸有著高保真度,因此廣泛使用在無線通訊裝置的語音訊號中。
  在1997年,GSM進一步開發出了一種增強型全率編解碼器(Enhanced Full Rate, EFR),這種編碼碼流位元率為12.2kbit/s。

 8. ITU G.721 ADPCM [5]
  G.721是ITU-T定義的一組標準協議組G.7xx其中之一,指的是32kbit/s的自適應差分脈衝編碼調製(ADPCM)。除去上面介紹的三種,此協議組的其他碼流標準如下:
  G.722 ―― 64 kb/s 下的 7 kHz 音訊編碼
  G.722.1 ――帶有低幀損耗的具有擴音操作的系統在24kbit/s和32kbit/s上的編碼 
  G.722.2 ――利用自適應多頻率寬頻(AMR-WB)以16kbit/s多頻率語音編碼
  G.726 ―― 40, 32, 24, 16kbit/s自適應差分脈衝編碼調製(ADPCM)
  G.727 ―― 5, 4, 3和2bit/s嵌入式自適應差分脈衝編碼調製(ADPCM)
  G.728 ――利用低延遲程式碼線性預測以16 bit/s 進行語音編碼
  G.729 ――利用共扼結構-代數激勵編碼線性預測(CS-ACELP)以8bit/s進行語音編碼

 9. MPEG
  Moving Pictures Experts Group,動態影象專家組。MPEG是世界上最為著名的一種音視訊壓縮標準之一。MPEG標準主要有以下五個,MPEG-1、MPEG-2、MPEG-4、MPEG-7及MPEG-21等。該專家組建於1988年,專門負責為CD建立視訊和音訊標準,而成員都是為視訊、音訊及系統領域的技術專家。及後,他們成功將聲音和影像的記錄脫離了傳統的模擬方式,建立了ISO/IEC1172壓縮編碼標準,並制定出MPEG-格式,令視聽傳播方面進入了數碼化時代。因此,大家現時泛指的MPEG-X版本,就是由ISO(International Organization for Standardization)所制定而釋出的視訊、音訊、資料的壓縮標準。
  MPEG標準的視訊壓縮編碼技術主要利用了具有運動補償的幀間壓縮編碼技術以減小時間冗餘度,利用DCT技術以減小影象的空間冗餘度,利用熵編碼則在資訊表示方面減小了統計冗餘度。這幾種技術的綜合運用,大大增強了壓縮效能。
  我們熟知的MP3格式的音訊檔案,就是MPEG-1 layer3的縮寫。

 10. Experimental
  稱為實驗性音訊。專門用來作音訊訊號處理的研究開發工作,主要包括優化壓縮演算法提高壓縮效率的工作。這種型別的壓縮碼流基本不被主流解碼器支援,只在一些音訊專家和發燒友的實驗室裡能夠流暢的播放出來。


 Compression code資訊在WAV檔案欄位的第21、22個byte,通過十六進位制檢視器我們可以看到一個WAV檔案的壓縮碼型別。對應關係如下表:

Code    Description 
0 (0x0000)     Unknown 
1 (0x0001)PCM/uncompressed 
2 (0x0002)Microsoft ADPCM 
6 (0x0006)ITU G.711 a-law 
7 (0x0007)ITU G.711 µ-law 
17 (0x0011)IMA ADPCM 
20 (0x0016)ITU G.723 ADPCM (Yamaha) 
49 (0x0031)GSM 6.10 
64 (0x0040)ITU G.721 ADPCM 
80 (0x0050)MPEG 
65,536 (0xFFFF) Experimental