天天看點

wav檔案分析

一、簡介

    WAV音頻檔案格式,是微軟和IBM的音頻檔案格式存儲在pc上的音頻碼流标準。 它是一個應用程式的資源交換檔案格式( riff )碼流格式方法将資料存儲在" chunks "。 它主要是用于Windows系統,通常為無壓縮音頻格式。 通常碼流編碼是線性脈沖編碼調制( LPCM )格式。

二、wav規範格式介紹

wav檔案一共包括三個塊:The RIFF chunk descriptor、The fmt sub chunk 、The data sub chunk。

下面圖是WAV檔案格式規範

wav檔案分析
wav檔案分析
wav檔案分析
wav檔案分析

三、壓縮方法介紹

下面介紹一下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

參考資料:

[1]. Microsoft WAV datasheet

[2]. Microsoft ADPCM wiki

http://wiki.multimedia.cx/index.php?title=Microsoft_ADPCM

[3]. ITU reference literature

[4]. http://www.wikipedia.org/

[5]. http://baike.baidu.com/

[6]. Microsoft ADPCM編碼解碼算法實作

http://topic.csdn.net/u/20080407/15/aa98f445-9376-42a4-9d18-8181b206c6f0.html

wav

繼續閱讀