PCM脈沖編碼調(diào)制是Pulse Code Modulation的縮寫。PCM編碼廣泛應(yīng)用于數(shù)字音頻信號的處理,它的最大的優(yōu)點就是音質(zhì)好,最大的缺點就是體積大。
一. 編碼過程
模擬信號數(shù)字化必須經(jīng)過三個過程,即抽樣、量化和編碼,以實現(xiàn)話音數(shù)字化的脈沖編碼調(diào)制(PCM,Pulse Coding Modulation)技術(shù)。
1.抽樣(Samping)
抽樣是把模擬信號以其信號帶寬2倍以上的頻率提取樣值,變?yōu)樵跁r間軸上離散的抽樣信號的過程。例如,話音信號帶寬被限制在0.3~3.4kHz內(nèi),用8kHz的抽樣頻率(fs),就可獲得能取代原來連續(xù)話音信號的抽樣信號。對一個正弦信號進行抽樣獲得的抽樣信號是一個脈沖幅度調(diào)制(PAM)信號,如下圖對模擬正弦信號的抽樣所示。對抽樣信號進行檢波和平滑濾波,即可還原出原來的模擬信號。
2.量化(quantizing)
抽樣信號雖然是時間軸上離散的信號,但仍然是模擬信號,其樣值在一定的取值范圍內(nèi),可有無限多個值。顯然,對無限個樣值一一給出數(shù)字碼組來對應(yīng)是不可能的。為了實現(xiàn)以數(shù)字碼表示樣值,必須采用“四舍五入”的方法把樣值分級“取整”,使一定取值范圍內(nèi)的樣值由無限多個值變?yōu)橛邢迋€值。這一過程稱為量化。
量化后的抽樣信號與量化前的抽樣信號相比較,當(dāng)然有所失真,且不再是模擬信號。這種量化失真在接收端還原模擬信號時表現(xiàn)為噪聲,并稱為量化噪聲。量化噪聲的大小取決于把樣值分級“取整”的方式,分的級數(shù)越多,即量化級差或間隔越小,量化噪聲也越小。
3.編碼(Coding)
量化后的抽樣信號在一定的取值范圍內(nèi)僅有有限個可取的樣值,且信號正、負幅度分布的對稱性使正、負樣值的個數(shù)相等,正、負向的量化級對稱分布。若將有限個量化樣值的絕對值從小到大依次排列,并對應(yīng)地依次賦予一個十進制數(shù)字代碼(例如,賦予樣值0的十進制數(shù)字代碼為0),在碼前以“+”、“-”號為前綴,來區(qū)分樣值的正、負,則量化后的抽樣信號就轉(zhuǎn)化為按抽樣時序排列的一串十進制數(shù)字碼流,即十進制數(shù)字信號。簡單高效的數(shù)據(jù)系統(tǒng)是二進制碼系統(tǒng),因此,應(yīng)將十進制數(shù)字代碼變換成二進制編碼。根據(jù)十進制數(shù)字代碼的總個數(shù),可以確定所需二進制編碼的位數(shù),即字長。這種把量化的抽樣信號變換成給定字長的二進制碼流的過程稱為編碼。
話音PCM的抽樣頻率為8kHz,每個量化樣值對應(yīng)一個8位二進制碼,故話音數(shù)字編碼信號的速率為8bits×8kHz=64kb/s。量化噪聲隨量化級數(shù)的增多和級差的縮小而減小。量化級數(shù)增多即樣值個數(shù)增多,就要求更長的二進制編碼。因此,量化噪聲隨二進制編碼的位數(shù)增多而減小,即隨數(shù)字編碼信號的速率提高而減小。自然界中的聲音非常復(fù)雜,波形極其復(fù)雜,通常我們采用的是脈沖代碼調(diào)制編碼,即PCM編碼。PCM通過抽樣、量化、編碼三個步驟將連續(xù)變化的模擬信號轉(zhuǎn)換為數(shù)字編碼。
二. 編碼實現(xiàn)
1.采樣率和采樣大小(位/bit)。
聲音其實是一種能量波,因此也有頻率和振幅的特征,頻率對應(yīng)于時間軸線,振幅對應(yīng)于電平軸線。波是無限光滑的,弦線可以看成由無數(shù)點組成,由于存儲空間是相對有限的,數(shù)字編碼過程中,必須對弦線的點進行采樣。采樣的過程就是抽取某點的頻率值,很顯然,在一秒中內(nèi)抽取的點越多,獲取得頻率信息更豐富,為了復(fù)原波形,一次振動中,必須有2個點的采樣,人耳能夠感覺到的最高頻率為20kHz,因此要滿足人耳的聽覺要求,則需要至少每秒進行40k次采樣,用40kHz表達,這個40kHz就是采樣率。我們常見的CD,采樣率為44.1kHz。光有頻率信息是不夠的,我們還必須獲得該頻率的能量值并量化,用于表示信號強度。量化電平數(shù)為2的整數(shù)次冪,我們常見的CD位16bit的采樣大小,即2的16次方。采樣大小相對采樣率更難理解,因為要顯得抽象點,舉個簡單例子:假設(shè)對一個波進行8次采樣,采樣點分別對應(yīng)的能量值分別為A1-A8,但我們只使用2bit的采樣大小,結(jié)果我們只能保留A1-A8中4個點的值而舍棄另外4個。如果我們進行3bit的采樣大小,則剛好記錄下8個點的所有信息。采樣率和采樣大小的值越大,記錄的波形更接近原始信號。
2.損和無損
根據(jù)采樣率和采樣大小可以得知,相對自然界的信號,音頻編碼最多只能做到無限接近,至少目前的技術(shù)只能這樣了,相對自然界的信號,任何數(shù)字音頻編碼方案都是有損的,因為無法完全還原。在計算機應(yīng)用中,能夠達到最高保真水平的就是PCM編碼,被廣泛用于素材保存及音樂欣賞,CD、DVD以及我們常見的WAV文件中均有應(yīng)用。因此,PCM約定俗成了無損編碼,因為PCM代表了數(shù)字音頻中最佳的保真水準(zhǔn),并不意味著PCM就能夠確保信號絕對保真,PCM也只能做到最大程度的無限接近。我們而習(xí)慣性的把MP3列入有損音頻編碼范疇,是相對PCM編碼的。強調(diào)編碼的相對性的有損和無損,是為了告訴大家,要做到真正的無損是困難的,就像用數(shù)字去表達圓周率,不管精度多高,也只是無限接近,而不是真正等于圓周率的值。
3.使用音頻壓縮技術(shù)
要算一個PCM音頻流的碼率是一件很輕松的事情,采樣率值×采樣大小值×聲道數(shù)bps。一個采樣率為44.1KHz,采樣大小為16bit,雙聲道的PCM編碼的WAV文件,它的數(shù)據(jù)速率則為44.1K×16×2=1411.2Kb/s。我們常說128K的MP3,對應(yīng)的WAV的參數(shù),就是這個1411.2Kb/s,這個參數(shù)也被稱為數(shù)據(jù)帶寬,它和ADSL中的帶寬是一個概念。將碼率除以8,就可以得到這個WAV的數(shù)據(jù)速率,即176.4Kb/s。這表示存儲一秒鐘采樣率為44.1KHz,采樣大小為16bit,雙聲道的PCM編碼的音頻信號,需要176.4KB的空間,1分鐘則約為10.34M,這對大部分用戶是不可接受的,尤其是喜歡在電腦上聽音樂的朋友,要降低磁盤占用,只有2種方法,降低采樣指標(biāo)或者壓縮。降低指標(biāo)是不可取的,因此專家們研發(fā)了各種壓縮方案。由于用途和針對的目標(biāo)市場不一樣,各種音頻壓縮編碼所達到的音質(zhì)和壓縮比都不一樣,在后面的文章中我們都會一一提到。有一點是可以肯定的,他們都壓縮過。
4.頻率與采樣率的關(guān)系
采樣率表示了每秒對原始信號采樣的次數(shù),我們常見到的音頻文件采樣率多為44.1KHz,這意味著什么呢?假設(shè)我們有2段正弦波信號,分別為20Hz和20KHz,長度均為一秒鐘,以對應(yīng)我們能聽到的最低頻和最高頻,分別對這兩段信號進行40KHz的采樣,我們可以得到一個什么樣的結(jié)果呢?結(jié)果是:20Hz的信號每次振動被采樣了40K/20=2000次,而20K的信號每次振動只有2次采樣。顯然,在相同的采樣率下,記錄低頻的信息遠比高頻的詳細。這也是為什么有些音響發(fā)燒友指責(zé)CD有數(shù)碼聲不夠真實的原因,CD的44.1KHz采樣也無法保證高頻信號被較好記錄。要較好的記錄高頻信號,看來需要更高的采樣率,于是有些朋友在捕捉CD音軌的時候使用48KHz的采樣率,這是不可取的!這其實對音質(zhì)沒有任何好處,對抓軌軟件來說,保持和CD提供的44.1KHz一樣的采樣率才是最佳音質(zhì)的保證之一,而不是去提高它。較高的采樣率只有相對模擬信號的時候才有用,如果被采樣的信號是數(shù)字的,請不要去嘗試提高采樣率。
5.流特征
隨著網(wǎng)絡(luò)的發(fā)展,人們對在線收聽音樂提出了要求,因此也要求音頻文件能夠一邊讀一邊播放,而不需要把這個文件全部讀出后然后回放,這樣就可以做到不用下載就可以實現(xiàn)收聽了。也可以做到一邊編碼一邊播放,正是這種特征,可以實現(xiàn)在線的直播,架設(shè)自己的數(shù)字廣播電臺成為了現(xiàn)實。