banner
jzman

jzman

Coding、思考、自觉。
github

音頻基礎知識

了解了音視頻的相關知識,可以先閱讀下面兩篇文章:

本篇總結下音頻基礎知識,將從以下幾個方面進行介紹:

  1. 聲音的產生
  2. 聲音的三要素
  3. 模數轉換
  4. 原始音頻數據
  5. PCM 與 Wav
  6. 音頻處理流程

聲音的產生#

聲音是由物體振動產生的,通過空氣、固體、液體等介質進行傳輸的一種聲波,可以被人耳識別的聲波的範圍是 20Hz~20000Hz 之間,也叫做可聽聲波,這種聲波稱之為聲音,根據聲波頻率的不同可以主要分為:

  • 可聽聲波:20Hz~20kHz
  • 超聲波:> 20kHz
  • 次聲波:< 20Hz

此外,人的發聲範圍一般是 85Hz~1100Hz。

聲音的三要素#

聲音的三要素分別是音調、音量、音色,具體如下:

  • 音調:指的是聲音頻率的高低,表示人的聽覺分辨一個聲音的調子高低的程度,物體振動的快,發出的聲音的音調就高,振動的慢,發出的音調就低。
  • 音量:又稱音強、響度,指聲音的振幅大小,表示人耳對所聽到的聲音大小強弱的主觀感受。
  • 音色:又稱音品,指不同聲音表現在波形方面總是有與眾不同的特性,不同的物體振動都有不同的特點,反映每個物體發出的聲音的特有的品質,音色具體由諧波決定,好聽的聲音絕不僅僅是一個正弦波,而是諧波。

模數轉換#

聲音是一個模擬音頻信號,如果要將聲音數字化,則需要將模擬音頻信號轉換為數字信號,這就是模數轉換,主要流程包括採樣、量化、編碼,如下圖所示:

image

  • 採樣:連續信號轉換為離散信號的過程,每個一定時間的信號值來替代原來時間段連續的信號值,這個 1s 內的採樣次數就是採樣率,如 8KHz 是電話信號的採樣率,可以滿足通話需要,音頻 CD 一般是 44.1kHz,數字電視一般是是 48kHz,採樣率越高聲音的還原成度越高。
  • 量化:將採樣後 的模擬信號轉換為數字信號的過程,量化分為均勻量化和非均勻量化,上圖中顯然使用了均勻量化,量化級數是 8。
  • 編碼:將量化後的信號轉換為對應的二進制代碼,最簡單就是自然二進制碼,其他編碼方式感興趣自行去了解,上圖中編碼指的是信源編碼,除此之外還有信道編碼。

原始音頻數據#

PCM((Pulse Code Modulation)是脈衝編碼調製,實際上就是將模擬音頻信號轉換為數字音頻信號,音視頻中的 PCM 指的是未經壓縮的音頻採樣數據,是音頻信號經採樣、量化、編碼生成的原始音頻數據,PCM 數據關鍵量化指標如下:

  • Sample Size:採樣大小,也是量化級數,表示一個採樣用多少位 bit 存放,常用的是 16 位。
  • Sample Rate:採樣率,表示每次採樣的次數,單位 Hz,常見的採樣率有 8k、16k、32k、44.1k、48k 等。
  • Number of Channels:聲道數,表示當前 PCM 數據中包含的聲道數,如單聲道、雙聲道、多聲道等。
  • Byte Ordering:字節序,表示 PCM 數據存儲的字節序是大端存儲 (big-endian) 還是小端存儲 (little-endian),為了數據處理效率的高效,通常為小端存儲。
  • Sign:表示當前 PCM 數據是否有符號位
  • Integer Or Floating Point:表示當前 PCM 數據使用整型還是浮點型來表示。

了解了表示 PCM 數據的量化指標之後,那麼碼率如何計算呢,碼率就是一秒鐘採樣數據的多少,計算方式如下:

採樣率 * 採樣大小 * 聲道數

舉個例子:

image

採樣率 44.1KHz,採樣大小為 16bit,雙聲道的 PCM 編碼的 WAV 文件,其碼率為 44.1K *_16 *_2 = 1411.2Kb/s,假設傳輸上述音頻,每秒將超過 1M 的數據量,再加上在數據傳輸過程中,上行速率往往遠小於下行速率,這就需要壓縮音頻數據了。

PCM 與 WAV#

PCM 可以查看前面小節,WAV 是一種無損的音頻文件格式,其對音頻的編碼沒有硬性規定,可以是 PCM 也可以是其他編碼方式,比如 MP3 編碼等,簡單總結一下:

  • PCM:一種編碼方式,在音視頻領域則理解為原始音頻數據裸流;
  • WAV:一種音頻文件格式,可存儲 PCM 數據,相當於在 PCM 基礎上添加了 WAV 頭部。

最後附上一張 WAV 的 Header 示意圖:

image

更多細節後續研究後補充。

音頻處理流程#

簡單講一下音頻的處理流程,一是音頻文件的生成,如在 Android 中使用 AudioRecordMediaRecord 等採集到的音頻數據就是 PCM 數據,這種數據屬於數字音頻信號,是原始的 PCM 裸流,PCM 數據經過編碼也就是將 PCM 數據壓縮,在通過復用生成對應的音頻文件,二是音頻文件的播放,經解復用、解碼轉換成 PCM 進行播放。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。