音頻PCM知識整理

簡介
PCM(Pulse Code Modulation),脈衝編碼調製。人耳聽到的是模擬信號,PCM是把聲音從模擬信號轉化爲數字信號的技術。原理是用一個固定的頻率對模擬信號進行採樣,採樣後的信號在波形上看就像一串連續的幅值不一的脈衝(脈搏似的短暫起伏的電衝擊),把這些脈衝的幅值按一定精度進行量化,這些量化後的數值被連續的輸出、傳輸、處理或記錄到存儲介質中,所有這些組成了數字音頻的產生過程(抽樣、量化、編碼三個過程)。

採樣頻率、量化精度(採樣位數)和聲道數
採樣頻率是設備一秒鐘內對模擬信號的採樣次數,在主流的採集卡上分爲:(8Khz的電話採樣率就可以達到人的對話程度)

22.05KHz:無線電廣播;
44.1KHz:音頻 CD,MP3等;
48KHz:miniDV、數字電視、DVD、電影和專業音頻。

人耳能夠感覺到的最高頻率爲20kHz,要滿足人耳的聽覺要求,則需要每秒進行40k次採樣,即40kHz。我們常見的CD採樣率爲44.1kHz。(也比如我對接過硬件的揚聲器最高是16KHz,則手機MIC採樣率就不用太高,節省傳輸帶寬)

採樣位數比如8bit(現在少見)、16bit(常用)和24bit,指的是描述數字信號所使用的位數。

聲道數:聲音在錄製或播放時在不同空間位置採集或回放的相互獨立的音頻信號。
單聲道 採樣數據爲8位的短整數(short);
雙聲道 採樣數據爲16位的整數,(int),高八位(左聲道)和低八位(右聲道)分別代表兩個聲道。

[時長]s * [採樣率]Hz * [採樣位數]bit * [聲道數] / 8 = [文件大小]byte
某音頻信號是採樣率爲8kHz、聲道數、位寬爲16bit,時長爲1s,則音頻數據的大小爲:
1 * 8000 * 16 *2 = 256000 bit / 8 = 32000 byte / 1024 = 31.25 KB

音頻幀
音頻跟視頻很不一樣,視頻每一幀就是一張圖像,音頻數據是流式的,不同的編碼格式各自不同的編碼標準,拿PCM和MP3做一個對比。PCM因爲沒有壓縮,根據採樣率位寬等數據可以得到每秒的音頻數據,並不需要幀的概念;MP3則是因爲壓縮後信息比較多,則有了類似H264的幀概念,每一個幀都有一個幀頭,有興趣可以詳見如下,有很詳細的MP3的幀解析:

http://blog.csdn.net/fulinwsuafcie/article/details/8972346

錄播過程
播放音樂時,應用程序從存儲介質中讀取音頻數據(MP3、WMA、AAC…),經過解碼後,最終送到音頻驅動程序中的就是PCM數據,反過來,在錄音時,音頻驅動不停地把採樣所得的PCM數據送回給應用程序,由應用程序完成壓縮、存儲等任務。所以,音頻驅動的兩大核心任務就是:
playback:如何把用戶空間的應用程序發過來的PCM數據,轉化爲人耳可以辨別的模擬音頻
capture:把mic拾取到得模擬信號,經過採樣、量化,轉換爲PCM信號送回給用戶空間的應用程序。
 

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