相信不少人在音頻採集處理的時候,會遇到這樣的設置界面,那採樣率、比特率、通道這樣的術語,代表的是什麼意思呢?
圖1
1、基本常識
- 頻率的單位是HZ,中文爲赫茲,是電,磁,聲波和機械振動每秒的週期次數(週期/秒)。
- 人類的耳朵能聽到的聲音頻率範圍爲20Hz~20000Hz,如果低於這個範圍的話就叫做次聲波,而若是高於這個範圍的則是叫做超聲波。無論次聲波和超聲波,耳朵都覺察不到
- 人發出的聲音信號爲模擬信號,想要在計算機上處理的話,必須把它們轉爲數字信號,這個轉換過程叫模數轉換。
(模擬信號示例)
(數字信號示例)
- 對於人聲信號而言,處理一般經過以下步驟:
人嘴說話——>聲電轉換——>採樣(模數轉換)——>量化(將數字信號用適當的數值表示)
——>編碼(數據壓縮)——>傳輸(網絡或者其他方式)——>解碼(數據還原)
——>反採樣(數模轉換)——>電聲轉換——>人耳聽聲。
2、採樣率是什麼?(即圖1的44100Hz)
採樣率,又叫採樣頻率、取樣頻率。我們把人聲模擬信號(簡單理解爲正弦波或餘弦波)轉爲計算機識別得到的數字信號(可以理解爲0101010101比特位),需要對聲音樣本進行採樣(即模數轉換)。根據耐奎斯特(NYQUIST)採樣定理,用兩倍於一個正弦波的頻繁率進行採樣就能完全真實地還原該波形。
因此,我們在單位時間內,對原始聲音讀取採樣的次數越多,得到聲音數據就越多,對信號波形的表示也越精確。在後續數字化處理中,聲音還原就越真實、自然。所以採樣率就是:錄音設備在一秒鐘內對聲音信號的採樣次數。
- 採樣率越高,聲音的質量越好,所表現的頻率範圍越大。
- 高採樣率,會使文件變得很大,加上人耳的分辨率非常有限,高了也幾乎聽不出區別,沒什麼意義。
- 採樣頻率一般共分爲22.05KHz、44.1KHz、48KHz三個等級。
22.05 KHz 只能達到FM廣播的聲音品質,
44.1KHz 理論上的CD音質界限(可以表現的頻率範圍:0Hz - 22050Hz)
48KHz 可達到DVD音質 (可以表現的頻率範圍:0Hz - 24000Hz)
PS:爲什麼CD採樣率會採用44.1KHz 這個數值呢?
最早期的數碼錄音設備,就是一個PCM編碼器加一部錄像機!世界上的錄像機主要有兩大制式:歐洲的PAL制式和美國日本的NTSC制式。PAL制式,場頻50Hz,行頻15625Hz,每一場625條掃描線。NTSC制式,場頻59.94Hz(接近但不是60Hz),行頻15575Hz,每一場525條掃描線。
適用於PAL制式錄像機的編碼器,其採樣頻率就是44.1kHz。適用於NTSC制式錄像機的編碼器,其採樣頻率就是44.056。早期,日本確有一些採用44.056kHz採用頻率的數碼錄音,但後來統一到44.1kHz了。
那麼44.1和44.056kHz這二個數字是怎麼來的呢?
44,100=294 x 50 x 3
44,056=245 x 59.94 x 3
50Hz和59.94Hz分別是PAL和NTSC的場頻, 294和245是從PAL和NTSC的線數上來的,因爲是隔行掃描的,所以掃描線數要除2。故此PAL的掃描線就變成312.5而NTSC則變成262.5。但在模擬電視時代,爲確保電視畫面內容完整,所以攝像機,錄像機,電視機都採用過掃描技術,最上,最下,最左,最右的部分都給捨去了。因此,無論PAL還是NTSC制式的實際掃描線,都比625和525少。PAL制式下可用掃描線數是294線,而NTSC則是245線。至於x3,則是在一條視頻掃描線的磁跡中,紀錄三個數碼音頻數據塊。於是,就有了上面的式子,就有了44.1kHz。
至於採樣頻率是44.1kHz可以表現的頻率範圍是0Hz - 22050Hz,根據耐奎斯特採樣理論,採樣頻率必須是信號最高頻率的兩倍,才能保證不失真。例如:音頻信號頻率爲20KHz的話,其採樣頻率一般需要40KHz。人耳所能聽到的頻率範圍是20Hz - 20000Hz,20KHz * 2 = 40KHz,考慮到一定的餘量採用44.1KHz。
3、採樣位數是什麼?(即圖1中的"16位")
也叫採樣值、取樣值。它客觀地反映了數字聲音信號對輸入聲音信號描述的準確程度。8位代表2的8次方--256,16位則代表2的16次方--64K。一段相同的音樂信息,8位聲卡只能處理256個精度單位,而16位聲卡能把它分爲64K個精度單位進行處理。8位採樣的差別在於動態範圍的寬窄,動態範圍寬廣,音量起伏的大小變化就能夠更精細的被記錄下來,如此一來不論是細微的聲音或是強烈的動感震撼,都可以表現的淋漓盡致,而CD音質的採樣規格正式16位採樣的規格。
4、通道數是什麼?(即圖1中的“2通道”)
即聲音的通道的數目。常有單聲道和立體聲之分,單聲道的聲音僅僅能使用一個喇叭發聲(有的也處理成兩個喇叭輸出同一個聲道的聲音),立體聲能夠使兩個喇叭都發聲(一般左右聲道有分工) ,更能感受到空間效果,當然還有很多其它的通道數,如5.1聲道、7.1聲道等。
5、比特率是什麼?
比特率,也叫碼率、位速。
是指在一個數據流中每秒鐘能通過多少比特的數據量。如705kbps,705---k---bit---per---second,表示每秒705600bit的容量。
對於音頻信號而言,必須進行編碼(即數據壓縮)。如果,未經過數據壓縮,直接量化進行傳輸則被稱爲PCM(脈衝編碼調製)。計算一個PCM音頻流的比特率公式爲:比特率 = 採樣率值 × 採樣位數 × 聲道數 bps。
如:一個採樣率爲44.1KHz,採樣大小爲16bit,雙聲道的PCM編碼的WAV文件,它的數據速率則爲 44.1K×16×2 =1411.2 Kbps。我們常說128K的MP3,對應的WAV的參數,就是這個1411.2 Kbps,這個參數也被稱爲數據帶寬,它和ADSL中的帶寬是一個概念。
將比特率除以8,就可以得到這個WAV的數據速率,即176.4KB/s。這表示存儲一秒鐘採樣率爲44.1KHz,採樣大小爲16bit,雙聲道的PCM編碼的音頻信號,需要176.4KB的空間,1分鐘則約爲10.34M,這對大部分用戶是不可接受的,尤其是喜歡在電腦上聽音樂的朋友,要降低磁盤佔用,只有2種方法,降低採樣指標或者壓縮。降低採樣指標是不可取的,因此專家們研發了各種壓縮方案。最原始的有DPCM、ADPCM,其中最出名的爲MP3。所以,採用了數據壓縮以後的比特率遠小於原始碼。
原則上,音頻位速越高質量越好。不過,對於有損壓縮音頻,不同的壓縮算法,即使比特速相同,也會導致音質結果完全不同。
典型代表:96kbps的WMA音頻格式的音質明顯要比96kbps的MP3音質好。爲什麼會這樣呢?因爲不同的壓縮算法,對數據的利用率不同而造成的差異。再舉例,假如MP3壓縮至48kbps以下,已經慘不忍睹,而如果是AAC音頻格式,同樣是48kbps的比特率下,音質明顯比MP3好。
而對於無損壓縮音頻,即使比特率完全不同,但是最後的音質卻相同。比如把同一個WAV文件分別壓縮成FLAC格式和APE格式,得到的文件,比特率是不太相同的,但是音質卻是一樣的。即使是同一種格式,壓縮級別不同,比特率也完全不同,可是最後的結果,音質還是一樣(但編碼解碼時,CPU佔用率不同,編碼時間也不同)。
6、PCM 分別是什麼?
PCM(Pulse Code Modulation)也被稱爲 脈碼編碼調製,用於模擬信號的數字化,簡單點理解,它是錄音後得到的音頻文件格式,特點是聲音數據沒有被壓縮。當然,它可以通過編碼壓縮,變成有損格式的音樂文件(如:amr、MP3、AAC)
常見的PCM音頻數據參數描述方式:
44100HZ 16bit stereo:每秒鐘有 44100 次採樣,採樣數據用 16 位(2字節)記錄,雙聲道(立體聲)
22050HZ 8bit mono:每秒鐘有 22050 次採樣,採樣數據用 8 位(1字節)記錄,單聲道
7、Android的SDK提供了哪些音頻採集API?有什麼區別?
Android SDK 中有兩套音頻採集的API,分別是:MediaRecorder 和 AudioRecord。兩者區別如下:
- 輸出文件格式不同
a)AudioRecord 輸出的是最原始、沒有經過壓縮、PCM格式的音頻文件。
b)MediaRecorder 會對麥克風錄入的音頻數據,設置編碼器,進行編碼壓縮(如AMR、MP3等),最終輸出的是
對應編碼 器(*.anr、*.mp3)格式的文件。
- 代碼邏輯結構不同
MediaRecorder 是對AudioRecord的封裝,內部會創建AudioRecord 用來與AudioFlinger 進行交互。 C++ 層MediaRecorder 創建AudioRecord 類的代碼位於AudioSource 類構造函數中。
- 使用的播放器不同
a)AudioRecord 對應的播放器是AudioTrack。AudioTrack只能播放已經解碼的PCM流或wav格式的音頻文件,因爲wav格式的音頻文件大部分都是PCM流。AudioTrack不創建解碼器,所以只能播放不需要解碼的wav文件。
b)MediaRecorder 對應的播放器是MediaPlayer。可以播放多種格式的聲音文件(MP3、AAC、WAV、OGG、MIDI等)。MediaPlayer會在framework層創建對應的音頻解碼器
c)兩個播放器的區別:MediaPlayer 是對AudioTrack 的封裝。
MediaPlayer在framework層還是會創建AudioTrack,把解碼後的PCM數流傳遞給AudioTrack,AudioTrack再傳遞
給AudioFlinger進行混音,然後才傳遞給硬件播放。
建議:
1、如果只是想簡單地做一個錄音機,錄製音頻文件,就使用 MediaRecorder;
2、如果需要對音頻做進一步的算法處理、或者編碼壓縮、以及網絡傳輸、直播等應用,則建議使用 AudioRecord。
部分參考資料源自互聯網,如有侵權,請聯繫作者刪除。