音頻基礎知識
前段時間在閃存區(qū)發(fā)了一篇關(guān)于解碼與音質(zhì)的帖子,漏洞百出,在小小了解了音樂CD的原理之后,重作此文。
本文參考了維基和一些資料。
全文結(jié)構(gòu)較亂,本來準備再整理,看到有研究wav和ape之類的帖子,決定提前發(fā)。
下面簡述音樂從制作到變成聲音進入我們耳朵的流程:
歌手在錄音棚里唱歌,對于這些聲音,專業(yè)設備每秒采樣44100次,以16個二進制數(shù)表示電壓(44100Hz,16bit,另外196KHz之類同理),將聲音(模擬信號)轉(zhuǎn)換為數(shù)字信號,稱為AD(模數(shù)轉(zhuǎn)換)。由于聲音要后期處理,這些數(shù)字信號還要再DA(數(shù)模轉(zhuǎn)換),AD多次,最終還是數(shù)字形式保存。
這些數(shù)字信號具體形式為一串串16位的二進制數(shù)字(中間包括定位符),稱為線性PCM,DAC只認識這些東西。
對于CD機,它們讀取CD碟中的二進制數(shù)字,然后每隔1/44100秒輸出一組16位的二進制數(shù)字(PCM)到到DAC。
DAC負責數(shù)模轉(zhuǎn)換,它把PCM轉(zhuǎn)換為電壓值。每次轉(zhuǎn)盤給他一組16位的二進制數(shù)字,他就輸出一個電壓(根據(jù)這16個二進制數(shù)字里的定位符確定左右聲道)。對于mp3播放器,DAC出來的一個個電壓值直接進入運算放大器(運放),就是Line Out口。
還有一條路是DAC出來進入信號放大電路,這就是Phone Out口。
上述過程中有一個很重大問題,名曰Jitter。二進制數(shù)字在傳輸過程中不可能出現(xiàn)一丁點錯誤(0,1的世界里有完善的糾錯體制),那么理論而言CD機輸出的數(shù)字信號是完全正確的。但由于世界上沒有精準的時鐘,每隔1/44100秒輸出的那個數(shù)字信號雖然完全正確,但時間不對,本來要在1s時的PCM變成了1s+50ps的PCM,最后輸出的模擬信號波形是變形的!比如大家高中描點畫正弦波形,x=1對應Y=1,結(jié)果變成x=1+5*10^(-11)對應Y=1,波形就不對了。Jitter在錄音棚里就產(chǎn)生,由于人家的家伙很貴,Jitter都是ps級別的。到了CD機之類的,就是ns級別的,甚至更高(當然貴CD的就?。訡D輸出到DAC的信號變形不小,mp3播放器之類就更悲劇了。(ps為皮秒,10^(-12)秒;ns為納秒,10^(-9)秒)
每一個過程都會產(chǎn)生jitter,第一步錄制就有jitter(這個很?。珻D轉(zhuǎn)盤輸出也有jitter,到DAC也有jitter。。。。。最后播放也有jitter。包括自己刻錄盤也jitter,jitter無處不在。所以刻錄盤和原版CD的區(qū)別是有的,就是刻錄機產(chǎn)生的jitter,而0101001這樣的二進制數(shù)字當然沒有變化。jitter的實質(zhì)就是在不準確的時間輸出了正確的數(shù)(這是俺的理解,嘻嘻)。
對于44100hz,16bit的音樂文件,DAC一秒鐘要轉(zhuǎn)換44100串16位數(shù)字,然后輸出,苦也。至于一些196Khz,32bit的音樂,卻不是要了很多MP3的DAC的命?要知道很多mp3解碼DAC都是一個主控里面的,就那點電壓和空間。所以很多時候一些碼率高的無損放不了(當然,不能播放不一定是這個問題),DAC表示鴨梨很大!
下面介紹音頻文件。本來那一串串的數(shù)字,叫PCM,或者叫.wav文件,是的,就是CD抓軌的東西(還有一種wav是dts的,不予討論)。wav是老子,兒子分兩種,一種是有損格式mp3,wma,aac之類的,還有一種無損,如flac,ape之類的。
Mp3流行的背景,是人們發(fā)現(xiàn)wav太肥了,一首歌要50MB+。大家經(jīng)歷過128MB的mp3的時代,那個時候閃存貴啊,128MB和256MB價格差很多!于是大家就用mp3格式來存儲。mp3是根據(jù)一種算法(MPEG-3),把wav簡化,比如去掉20Hz以下和20000Hz以上的頻率(一般人耳聽不到)和心理上忽略的,最后把體積減小到十二分之一,音質(zhì)卻沒有劣化太多,wma貌似加上了版權(quán)之類的。
無損之類的就是很多人發(fā)現(xiàn)mp3的音質(zhì)不滿足他們要求,于是通過算法把wav壓縮,就像zip壓縮一樣,但沒有一個字節(jié)的損失。所以播放無損不用懷疑音質(zhì)和原始wav有任何一點點區(qū)別!當然耗電。在這里,無損格式推薦flac,由于只涉及整數(shù)運算,而且支持硬解碼之類,解碼簡單,ape則涉及浮點運算。很多人發(fā)現(xiàn)一些無損無法播放的一個原因就是壓縮率太高(使用footbar2000轉(zhuǎn)化無損格式的話可以看到"最大壓縮"和"最快解碼")。
Flac官網(wǎng)的形容就是"為音頻文件優(yōu)化的zip壓縮",播放前解壓縮,因為DAC只認識那一串串的PCM。具體流程參考被壓縮成zip的word文件,你雙擊那個word文件,于是先有一個提示框解壓縮,然后打開word。而且,對于無損播放前的轉(zhuǎn)換,再垃圾的mp3都能不出一點錯誤地轉(zhuǎn)換為線性PCM,沒有一點錯誤!這就是強大的數(shù)字世界。你解壓縮zip文件,如果出錯而又不能修復,就會提示錯誤,道理一樣。無損和wav之間可以無限次地轉(zhuǎn)換而不出一個字節(jié)的錯誤,就像你可以把一個文件無數(shù)次地壓縮解壓而不會改變文件一樣。
Wav是一個容器,不代表無損,很多人遇到所謂的"假無損",就是wav已經(jīng)劣化為了mp3,大量細節(jié)已經(jīng)丟失。mp3此時仍然可以轉(zhuǎn)化為wav(下面介紹這個過程),無損,由于編碼原因,體積成倍增加,但是音質(zhì)已經(jīng)劣化,這就是"假無損"。
對于上述mp3轉(zhuǎn)wav過程,在直接播放有損音頻時都要遇到。一個mp3播放器在播放mp3文件時流程如下:從內(nèi)存讀取文件,解碼芯片根據(jù)算法,對其進行近似,潤色,修補,最后輸出線性PCM(wav)。你可能會問:俺直接播放無損不就行了?對,就是這樣,如果直接播放無損,這一步就沒有,所謂的"飛芯"的音頻解碼沒有用!另外有人發(fā)現(xiàn)一些老式或低端播放器不支持wav格式,這是因為他們的緩存太小,廠家為了提高效率,省電,不支持wav。
最后還是回到我們的mp3播放器。
主控是整個播放器的核心,指揮整個運作。他要負責控制音頻解碼芯片解碼,輸出PCM,指揮DAC輸出模擬信號,還有負責最后的運算放大,潤色,根據(jù)算法體現(xiàn)各種EQ,而且他還要插手電源管理,所以主控是大腦。
DAC是核心(反正這種小型播放器Jitter都是一個級別),DAC直接決定Lo的質(zhì)量,決定Po到放大電路信號的純度,他要保證及時準確地輸出純凈的模擬信號。反正,DAC應該決定所謂的"素質(zhì)"。DAC的供電也至關(guān)重要,DAC供電不足是無法達到理論的水平的,而QA350則采用了所謂的各部分獨立供電。
至于Po的放大電路,這里決定聽感,一部分調(diào)音,一部分EQ都在這里完成。
還有一個很重要的地方是電路設計,我拆開過國產(chǎn)平板,真是慘不忍睹,一塌糊涂。mp3的電路設計很大程度上也決定了他的素質(zhì)和續(xù)航(電源管理),電路走向,電容的質(zhì)量都至關(guān)重要,這也是sony,創(chuàng)新機子能夠如此牛逼的一個原因,看看njb里面密密麻麻的電容,再看看國產(chǎn)的,嘖嘖,用料就不是一個級別啊。
最后介紹一下隨身播放器調(diào)音和EQ。我認為調(diào)音和EQ幾乎沒有的就是所謂的錄音筆,這是高素質(zhì)的代表,完全靠強大的電路和元件把回放做到了極致。
調(diào)音過程不僅僅是模擬放大電路的功勞,DSP處理過程中就已經(jīng)開始參與調(diào)音了。
EQ分為兩種,通俗來講就是硬件EQ和軟件EQ,在隨身里,前者往往是被植入到DAC芯片中的,歐勝的CODEC,比如WM8750、8970等,都有這個功能的。軟件EQ就非常常見了,什么BBE,SRS之類的算是比較高級的,簡單的自定義EQ也是軟EQ,這些EQ通過DSP運算,對音頻數(shù)字信號進行簡單或者復雜的處理來實現(xiàn)調(diào)音。
Po口一定可以實現(xiàn)EQ,而Lo口則不一定(新款一般都有),T51和艾利和的H120等,EQ改變,LO輸出的聲音也會改變。而老款的sony HD5在這方便做了優(yōu)化,在采用LO輸出的時候,EQ被強制使用了“正?!倍也荒芨?。
總之在播放器中的各個環(huán)節(jié)都遵循木桶原理,任何一方面偷工減料都將直接影響到最終聲音的輸出。盡情佩服那些設計出好聲播放器的設計者吧,好的聲音一定需要技術(shù)的沉淀與積累!





