我們平時在互聯網上聽到的聲音,都是先經過錄制后,再傳輸到互聯網上的。比如歌曲、電影、主播等的聲音。
PCM
錄音的原理可以簡單理解為:把聲源的振動記錄下來,需要時再讓某個物體按照記錄下來的振動規律去振動,就會產生與原來一樣的聲音。
如何把聲音(聲源的振動)記錄下來呢?聲音屬於模擬信號,但更便於計算機處理和存儲的是數字信號(二進制編碼),所以需要將模擬信號(Analog Signal)轉成數字信號(Digital Signal)后進行存儲。這一過程,我們可以稱之為:音頻數字化。
將音頻數字化的常見技術方案是脈沖編碼調制(PCM,Pulse Code Modulation),主要過程是:采樣 → 量化 → 編碼。
采樣
模擬信號的波形是無限光滑的,可以看成由無數個點組成,由於存儲空間是相對有限的,數字編碼過程中,必須要對波形的點進行采樣。采樣(Sampling):每隔一段時間采集一次模擬信號的樣本,是一個在時間上將模擬信號離散化(把連續信號轉換成離散信號)的過程。
采樣率
每秒采集的樣本數量,稱為采樣率(采樣頻率,采樣速率,Sampling Rate)。比如,采樣率44.1kHz表示1秒鍾采集44100個樣本。
采樣定理
根據采樣定理(奈奎斯特–香農采樣定理,Nyquist-Shannon sampling theorem)得知:只有當采樣率高於聲音信號最高頻率的2倍時,才能把采集的聲音信號唯一地還原成原來的聲音。人耳能夠感覺到的最高聲音頻率為20000Hz,因此為了滿足人耳的聽覺要求,需要至少每秒進行40000次采樣(40kHz采樣率)。這就是為什么常見的CD的采樣率為44.1kHz。電話、無線對講機、無線麥克風等的采樣率是8kHZ。
量化
量化(Quantization):將每一個采樣點的樣本值數字化。
位深度
位深度(采樣精度,采樣大小,Bit Depth):使用多少個二進制位來存儲一個采樣點的樣本值。位深度越高,表示的振幅越精確。常見的CD采用16bit的位深度,能表示65536(216)個不同的值。DVD使用24bit的位深度,大多數電話設備使用8bit的位深度。
編碼
編碼:將采樣和量化后的數字數據轉成二進制碼流。
其他概念
聲道(Channel)
單聲道產生一組聲波數據,雙聲道(立體聲)產生兩組聲波數據。
采樣率44.1kHZ、位深度16bit的1分鍾立體聲PCM數據有多大?
- 采樣率 * 位深度 * 聲道數 * 時間
- 44100 * 16 * 2 * 60 / 8 ≈ 10.34MB
1分鍾10.34MB,這對於大部分用戶來說是不能接受的。要想在不改變音頻時長的前提下,降低音頻數據的大小,只有2種方法:降低采樣指標、壓縮。降低采樣指標是不可取的,會導致音頻質量下降,用戶體驗變差,因此專家們研發了各種壓縮方案。
比特率
比特率(Bit Rate),指單位時間內傳輸或處理的比特數量,單位是:比特每秒(bit/s或bps),還有:千比特每秒(Kbit/s或Kbps)、兆比特每秒(Mbit/s或Mbps)、吉比特每秒(Gbit/s或Gbps)、太比特每秒(Tbit/s或Tbps)。
采樣率44.1kHZ、位深度16bit的立體聲PCM數據的比特率是多少?
- 采樣率 * 位深度 * 聲道數
- 44100 * 16 * 2 = 1411.2Kbps
通常,采樣率、位深度越高,數字化音頻的質量就越好。從比特率的計算公式可以看得出來:比特率越高,數字化音頻的質量就越好。
信噪比
信噪比(Signal-to-noise ratio,SNR,S/N,訊噪比),指信號與噪聲的比例,用於比較所需信號的強度與背景噪聲的強度,以分貝(dB)為單位。
位深度限制了信噪比的最大值,它們的關系如下表所示。
位深度 | 信噪比 |
---|---|
4 | 24.08 |
8 | 48.16 |
11 | 66.22 |
12 | 72.24 |
16 | 96.33 |
18 | 108.37 |
20 | 120.41 |
24 | 144.49 |
32 | 192.66 |
48 | 288.99 |
64 | 385.32 |
音頻的編碼與解碼
編碼(Encode)
PCM數據可以理解為是:未經壓縮的原始音頻數據,體積比較大,為了更便於存儲和傳輸,一般都會使用某種音頻編碼對它進行編碼壓縮,然后再存成某種音頻文件格式。
壓縮分為無損壓縮和有損壓縮。
- 無損壓縮
- 解壓后可以完全還原出原始數據
- 壓縮比小,體積大
- 有損壓縮
- 解壓后不能完全還原出原始數據,會丟失一部分信息
- 壓縮比大,體積小
- 壓縮比越大,丟失的信息就越多,還原后的信號失真就會越大
- 一般是通過舍棄原始數據中對人類聽覺不重要的部分,達成壓縮成較小文件的目的
- 壓縮比 = 未壓縮大小 / 壓縮后大小
解碼(Decode)
當需要播放音頻時,得先解碼(解壓縮)出PCM數據,然后再進行播放。
常見的音頻編碼和文件格式
需要注意的是:音頻文件格式並不等於音頻編碼。比如:
-
WAV只是一種文件格式,並不是一種編碼
-
FLAC既是一種文件格式,又是一種編碼
下面對常見的音頻編碼和文件格式做一個簡介,以后有需要時再進行詳細介紹。
名稱 | 無損壓縮 | 文件擴展名 |
---|---|---|
Monkey's Audio | ✔️ | .ape |
FLAC(Free Lossless Audio Codec) | ✔️ | .flac |
ALAC(Apple Lossless Audio Codec) | ✔️ | .m4a/.caf |
MP3(MPEG Audio Layer III) | ❌ | .mp3 |
WMA(Windows Media Audio) | ❌ | .wma |
AAC(Advanced Audio Coding) | ❌ | .acc/.mp4/.m4a |
Vorbis | ❌ | .ogg |
Speex | ❌ | .spx |
Opus | ❌ | .opus |
Ogg | .ogg | |
WAV(Waveform Audio File Format) | .wav | |
AIFF(Audio Interchange File Format) | .aiff、.aif |
無損
Monkey's Audio
Monkey's Audio,是一種無損的音頻編碼和文件格式,文件擴展名為.ape,壓縮率一般在55%左右。
FLAC
FLAC(Free Lossless Audio Codec),是一種無損的音頻編碼和文件格式,文件擴展名為.flac。雖然壓縮率稍有不及Monkey's Audio,但FLAC技術更先進,占用資源更低,有更多的平台及硬件產品支持FLAC。
ALAC
ALAC(Apple Lossless Audio Codec),是由Apple開發的一種無損的音頻編碼,文件擴展名為.m4a、.caf。
有損
MP3
MP3(MPEG Audio Layer III),是非常流行的一種有損音頻編碼和文件格式,文件擴展名為.mp3。
- 第1版是:MPEG-1 Audio Layer III,屬於國際標准ISO/IEC 11172-3
- 第2版是:MPEG-2 Audio Layer III,屬於國際標准ISO/IEC 13818-3
- 第3版是:MPEG-2.5 Audio Layer III,並不是由MPEG官方開發的,不是公認的標准
WMA
WMA(Windows Media Audio),是由Microsoft開發的音頻編碼和文件格式,文件擴展名為.wma。包括4種類型:
- WMA:原始的WMA編解碼器,作為MP3的競爭者,屬於有損音頻編碼
- WMA Pro:支持更多聲道和更高質量的音頻,屬於有損音頻編碼
- WMA Lossless:屬於無損音頻編碼
- WMA Voice:屬於有損音頻編碼
AAC
AAC(Advanced Audio Coding),是由Fraunhofer IIS、杜比實驗室、AT&T、Sony、Nokia等公司共同開發的有損音頻編碼和文件格式,壓縮比通常為18:1。
AAC被設計為MP3格式的后繼產品,通常在相同的比特率下可以獲得比MP3更高的聲音質量,是iPhone、iPod、iPad、iTunes的標准音頻格式。
AAC編碼的文件擴展名主要有3種:
- .acc:傳統的AAC編碼,使用MPEG-2 Audio Transport Stream(ADTS)容器
- .mp4:使用了MPEG-4 Part 14的簡化版即3GPP Media Release 6 Basic(3gp6)進行封裝的AAC編碼
- .m4a:為了區別純音頻MP4文件和包含視頻的MP4文件而由Apple公司使用的擴展名
- Apple iTunes對純音頻MP4文件采用了.m4a文件擴展名
- M4A的本質和音頻MP4相同,故音頻MP4文件可以直接更改文件擴展名為.m4a
Vorbis
Vorbis,是由Xiph.Org基金會開發的一種有損音頻編碼。通常以Ogg作為容器格式,所以常合稱為Ogg Vorbis,文件擴展名為.ogg。
Speex
Speex,是由Xiph.Org基金會開發的一種有損音頻編碼和文件格式,文件擴展名為.spx。
Opus
Opus,是由Xiph.Org基金會開發的一種有損音頻編碼和文件格式,文件擴展名為.opus。用以取代Vorbis和Speedx。經過多次盲聽測試,在任何給定的比特率下都比其他標准音頻格式具有更高的質量,包括MP3、AAC。
文件格式
Ogg
Ogg是一種多媒體文件格式,由Xiph.Org基金會所維護,可以納入各式各樣的音視頻編碼(音頻、視頻都可以),文件擴展名常為.ogg。
Ogg常用的音頻編碼有:
- 有損壓縮:Speex、Vorbis、Opus
- 無損壓縮:FLAC
- 未壓縮:PCM
WAV
WAV(Waveform Audio File Format),是由IBM和Microsoft開發的音頻文件格式,擴展名是.wav,通常采用PCM編碼,常用於Windows系統中。
WAV的文件格式如下圖所示,前面有44個字節的文件頭,緊跟在后面的就是音頻數據(比如PCM數據)。
- NumChannels:聲道數
- SampleRate:采樣率(Hz)
- ByteRate:每秒多少個字節(Byte/s)
- BitsPerSample:位深度
AIFF
AIFF(Audio Interchange File Format),由Apple開發的音頻文件格式,擴展名是.aiff、.aif。跟WAV一樣,通常采用PCM編碼,常用於Mac系統中。
有損和無損
根據采樣率和位深度可以得知:相對於自然界的信號,音頻編碼最多只能做到無限接近,任何數字音頻編碼方案都是有損的,因為無法完全還原。目前能夠達到最高保真水平的就是PCM編碼,因此,PCM約定俗成叫做無損音頻編碼,被廣泛用於素材保存及音樂欣賞,CD、DVD以及常見的WAV文件中均有應用。
但並不意味着PCM就能夠確保信號絕對保真,PCM也只能做到最大程度的無限接近。我們習慣性的把MP3列入有損音頻編碼范疇,是相對於PCM編碼的。要做到真正的無損是困難的,就像用數字去表達圓周率,不管精度多高,也只是無限接近,而不是真正等於圓周率的值。