Ⅰ 音頻有損壓縮技術
音頻壓縮:音頻編碼,不進行壓縮,每秒產生的數據大小是1M多,數據太大了
有損壓縮 :當我們把數據進行壓縮之後,無法還原回跟原來一模一樣的信息了
無損壓縮 :是對文件本身的壓縮,和其它數據文件的壓縮一樣,是對文件的數據存儲方式進行優化,採用某種演算法表示重復的數據陸坦信息,文件可以完全還原,不會影響文件內容,對於數碼圖像而言,也就不會使圖像細節有任何損失。
感謝分享
有損壓縮
無損壓縮
音頻壓縮技術是在保證信號在聽覺方面不產生失真的前提下,對音頻數據信號進行盡可能大的壓縮
壓縮的主要方法: 是取出採集到的音頻冗餘信息。所謂冗餘信息包括人耳聽覺范圍外的音頻信號以及唄。
信號的遮蔽 可以分為 頻域遮蔽 和 時域遮蔽 。
圖片1
現實生活中,聲音是一種復合聲音(各種聲音參雜在一起),在與人對話的時候,聽到對方說的,我們聽到的,是對方說話的聲音和好多環境的聲音,比如關冰箱、水壺響,其實是參雜在一起,但是我們為什麼能聽見對方說的話,而聽不見這些聲音呢?是因為對方說的聲音,覆蓋早大桐掉了例如水壺響啊、關冰箱聲音等,遮蔽掉了,如何遮蔽的呢?2種技術, 一種是頻域遮蔽,另一種是時域遮蔽 。
頻域遮蔽 和 時域遮蔽 這個太深奧,在這里不做解釋了,設計到的內容太深了,本人掌握的一點,不敢誤導人,所以就不寫了。
感謝分享
時域和頻域轉換 傅立葉變換
轉換之後,我們只關心我們需要的波形,不要的就要替換掉,那些數據應該保留,那些數據應該扔掉呢?
圖片1就給我們做了解釋,橫軸是它的頻率范圍,到0.02單位是khz,0.02也就是20hz,20hz一下的,人也不感知,縱軸是聲音的強度,有一條靜音門檻,這條曲線之下的聲音都是被屏蔽掉的,人都是聽不到的, 曲線之上的還有一個遮蔽效應,就是在不同的頻域上,它會有一個范圍,在這個范圍之內的聲音,也是被屏蔽掉的,2個女生說話,在相同頻域范圍內,聲音高的 會把聲音低的這個人的聲音屏蔽掉,這也是為啥2個女生吵架的時候,聲音高的很容易讓人聽見,男生和女生說話,雖然女生的聲音高,但是男生的聲音不一定被屏蔽掉,男生的聲音在橫軸0.25khz范圍上,縱軸在30dB上,沒在遮蔽源范圍內,還是可以聽見男生說話的。
時仿轎域遮蔽:隨著時間的推移,它是如何產生遮蔽效應的。橫軸是時間,縱軸是聲音強度,圖2所示,0-200,同時有很多聲音進來,聲強的會壓住聲弱的。聲強之前的聲音也會被屏蔽掉。在50毫秒內,越靠近這個人說話,越會被屏蔽掉。對於後面的屏蔽更長了,達到了200毫秒,你超過它,你就把前面的聲音給屏蔽掉了,就看圖2後屏蔽這。
Ⅱ 常見的聲音壓縮標准有哪些它們分別採用什麼壓縮方法(試舉3例)
mp3
MP3全稱是動態影像專家壓縮標准音頻層面3(Moving Picture Experts Group Audio Layer III)。是當今較流行的一種數字音頻編碼和有損壓縮格式,它設計用來大幅度地降低音頻數據量,而對於大多數用戶來說重放的音質與最初的不壓縮音頻相比沒有明顯的下降。它是在1991年由位於德國埃爾朗根的研究組織Fraunhofer-Gesellschaft的一組工程師發明和標准化的。
ape
APE是目前流行的數字音樂文件格式之一。與MP3這類有損壓縮方式不同,APE是一種無損壓縮音頻技術,也就是說當你將從音頻CD上讀取的音頻數據文件壓縮成APE格式後,你還可以再將APE格式的文件還原,而還原後的音頻文件與壓縮前的一模一樣,沒有任何損失。APE的文件大小大概為CD的一半,但是隨著寬頻的普及,APE格式受到了許多音樂愛好者的喜愛,特別是對於希望通過網路傳輸音頻CD的朋友來說,APE可以幫助他們節約大量的資源。
wma
WMA的全稱是Windows Media Audio,它是微軟公司推出的與MP3格式齊名的一種新的音頻格式。由於WMA在壓縮比和音質方面都超過了MP3,更是遠勝於RA(Real Audio),即使在較低的采樣頻率下也能產生較好的音質。
在64kbps的數據速率時,在13000-20000Hz頻率段就能保留了大部分信息。
但64kbps的WMA的低頻表現實在有點令人失望,聽上去比較硬,如同加入了哇聲效果般,感覺非常不好,當然比同比特64K的mp3要好感覺聲音更集中。聽覺上64WMA的表現基本接近128kbps mp3的音質水平,但沒有達到。96K的wma略好於128K的mp3,WMA在高於128以上的各種比特率表現相差不大,高頻和泛音都很豐富,一般人聽不出WMA128Kbps以上的音質和音色的差異,總體感覺WMA的聲音偏硬,適合流行搖滾,如果是古典或者純人聲的話,感覺有點生硬,在低於128K時,WMA對於MP3擁有絕對優勢!128以上的WMA相比MP3會有薄的感覺。
在128kbps及以下碼流的試聽中WMA完全超過了MP3格式,低碼流之王不是浪得虛名的。但是當碼流上升到128kbp以後,WMA的音質卻並沒有如MP3一樣隨著碼流的提高而大大提升。
flac
FLAC即是Free Lossless Audio Codec的縮寫,中文可解為無損音頻壓縮編碼。FLAC是一套著名的自由音頻壓縮編碼,其特點是無損壓縮。不同於其他有損壓縮編碼如MP3 及 AAC,它不會破任何原有的音頻資訊,所以可以還原音樂光碟音質。現在它已被很多軟體及硬體音頻產品所支持。
簡而言之,FLAC與MP3相仿,但是是無損壓縮的,也就是說音頻以FLAC方式壓縮不會丟失任何信息。這種壓縮與Zip的方式類似,但是FLAC將給你更大的壓縮比率,因為FLAC是專門針對音頻的特點設計的壓縮方式,並且你可以使用播放器播放FLAC壓縮的文件,就象通常播放你的MP3文件一樣(現在已經有許多汽車播放器和家用音響設備支持FLAC,在FLAC的網站上你可以找到這些設備廠家的連接)。
FLAC是免費的並且支持大多數的操作系統,包括Windows,「unix」 (Linux, *BSD,Solaris,OS X,IRIX),BeOS,OS/2,和Amiga。並且FLAC提供了在開發工具autotools,MSVC,Watcom C,和Project Builder上的build系統。
Ⅲ 什麼是音頻壓縮技術
音頻壓培伍縮技術指的是對原始數字音頻信號流(PCM編碼)運用適當的數字信號處理技術,在不損失有用信息量,或所引入損失可忽略的條件下,降低(壓縮)其碼率,粗仿也稱為壓縮編碼。它必須具有相應的逆變換,稱為解壓縮或解碼。音頻信號在通過一個編解碼系統後可能引入大量的雜訊和一定的失岩中纖真。
mp3格式就是
Ⅳ MP3是什麼
音頻壓縮技術。
MP3是一種音頻壓縮技術,其全稱是動態影像專家壓縮標准音頻層面3(),簡稱為MP3。它被橋並設計用來大幅度地降低音頻數據量。
利用MPEGAudioLayer3的技術,將音樂以1:爛汪1甚至1:12的壓縮率,壓縮成容量較小的文件,而對於敏歷跡大多數用戶來說重放的音質與最初的不壓縮音頻相比沒有明顯的下降。
Ⅳ MP3的壓縮原理是什麼
其實音頻壓縮技術很多,MP3壓縮技術並不是最好的。但現在看來它仍然是主流。
音樂信號中有許多冗餘成分,其中包括間隔和一些人耳分辨不出的信息(如混雜在較強背景中的弱信號)。CD聲音不經壓縮,採用44.1kHz的固定速率采樣,可以保證最大動態音樂的良好再現,當然,信息量較少處的數據量也是相同的,因而存在壓縮的可能性。音響頻寬為20~20kHz(頂級CDPlayer可向下延伸至2Hz)已成為目前的音樂標准。MP3為降低聲音失真採取了名為"感官編碼技術"的編碼演算法:編碼時先對音頻文件進行頻譜分析然,然後用過濾器率掉噪音電平,接著通過量化的方式將剩下的每一位打散排列,最後形成具有較高壓縮比的MP3文件,並使壓縮後的文件在回放時能夠達到比較接近原音源的聲音效果。雖然他是一種有損壓縮,但是它的最大優勢是一極小的聲音失真換來了較高的壓縮比。且現在的MP3採用與杜比AC-3相似的變壓縮比率(VBR)壓縮技術,采樣的壓縮比率依音樂中信息多寡,並利用人耳的掩蔽效應來減少冗餘數據。
Ⅵ Mp3音樂所採用的聲音數據壓縮編碼的標準是什麼
聲音數據壓縮編碼的標準是MPEG Audio Layer 3。
相關介紹:
MP3是一種音頻壓縮技術,利用MPEG Audio Layer 3的技術,將音樂以1:10 甚至 1:12 的壓縮率,壓縮成容量較小的文件。它是在1991年由位於德國埃爾朗根的研究組織Fraunhofer-Gesellschaft的一組工程師發明和標准化的。
(6)聲音壓縮技術擴展閱讀
1991年,MP3標準的制定由Leon van de Kerkhof(Layer I)和Gerhard Stoll(Layer II)完成。所有這些演算法最終都在1992年成為了MPEG的第一個標准組MPEG-1的一部分,並且生成了1993年公布的國際標准ISO/IEC 11172-3。
MPEG音頻上的更進一步的工作最終成為了1994年制定的第二個MPEG標准組MPEG-2標準的一部分,這個標准正式的稱呼是1995年首次公布的ISO/IEC 13818-3。
Ⅶ 音視頻入門-音頻壓縮技術(二)
音頻壓縮技術是保證信號在聽覺不失真的前提碼咐襪下,對音頻數據信號進行盡可能大的壓縮
壓縮的主要方簡和法就是去除採集到的冗餘信息,所謂冗餘信息就是超出人耳聽覺范圍的音頻信號和被遮蔽掉的音頻信號
遮蔽的音頻信號包括 頻域遮蔽 和 時域遮蔽
熵編碼:哈夫曼編碼、算術編碼、香農編碼
常見的遲激音頻編碼器包括:OPUS(文件小、壓縮率高)、AAC(運用最廣泛的音頻編碼器,IOS、Android 嵌入式)Ogg、Speex(解決了迴音消除,在AAC之前比較受歡迎的音頻編碼器)、iLBC、AMR、G.711
編解碼器總結:不同的場景使用的音頻編碼器可能不一樣,一般情況下,AAC在直播系統中使用比較廣泛、OPUS是比較新的編碼器,WebRTC默認使用的是OPUS音頻編碼器、固話使用的是G.711系列
AAC(Advanced Audio Coding)由Fraunhofer IIS、杜比實驗室、AT&T、Sony等公司共同開發、目前是取代MP3格式
最開始是基於MPEG-2的音頻解碼技術,MPEG-4標准出現後,AAC重新集成其特性,加入了SBR技術和PS技術
目前常用的規格有:AAC LC、AAC HE V1和AAC HE V2
AAC LC:(LOW Complexity)低復雜度規格,碼流是128K,音質好
AAC HE V1:AAC LC + SBR(Spectral Band Replication),其核心思想是按頻譜分保存,低頻編碼保存主要成分,高頻單獨放大編碼保存音質
碼率在64K左右
AAC HE V2:AAC LC + SBR + PS(Parametric Stereo)其核心思想是雙聲道中的聲音存在某種相似性,只需要存儲一個聲道的全部信息,然後,花很少的位元組用描述另一個聲道在不同的地方
這種格式的特性是可以確定找到這個音頻數據的開始,只能從頭開始解碼,不能從音頻數據流的中間開始,這種格式常用在磁碟文件中
這種格式的特性是每一幀都有一個同步字,所以可以在音頻流的任意位置開始解碼,它類似於數據流格式
ADTS由7/9個位元組組成 ADTS格式查詢
-i:輸入的多媒體文件
-vn:v表示的是video ,n表示的no 意思是過濾掉視頻數據
-c:a : c表示的是codecs編碼器,a表示的是audio,也就是指定的音頻編碼器
-ar:表示的是音頻的采樣率
-channels:聲道數
-profile:對fdk-aac編碼器設置了參數,對應的是a,也就是對音頻的參數
最後3.aac也就是輸出的aac格式的文件名稱
Ⅷ 音頻壓縮原理
音頻壓縮的原理
轉自http://forums.dearhoney.idv.tw/viewtopic.php?t=24378
引用:
音訊資料因為其資料內容的特性,以傳統的壓縮法難達到很高的壓縮率,不過我們人耳並沒有無限的時間解析度和頻率解析度,其實原始的音樂訊號中包含了很多我們聽不到的資料,把這些對我們來講其實無意義的資訊給去掉,這樣就可以達到很高的壓縮率。這種利用人類 感官知覺的特性作的失真壓縮法,就叫做 perceptual coding。
人耳的生理結構,由外耳的耳殼收集外界的聲波到達中耳的耳膜產生震動,經由三塊小骨連接前庭窗傳入內耳,其中由於耳殼的內凹形狀,外耳道的長度和寬度.. 等等生理的構造,會對不同頻率產生共振升壓的效果,尤其是 2~5Khz 的頻率,會在這個過程中被放大。人耳聽覺頻率的范圍,大約是 20~20KHz,音量范圍則是 130dB SPL,大於 130dB 會產生痛苦的感覺,小於 0dB 則會被當成是靜音。如上所述,人耳對 2~5KHz 的頻率最敏感,越往高頻感覺越不敏銳,音量要超過一定的界限以上查能被我們人耳察覺,這個最低可以聽聞的界限,叫做 ATH(absolute threshold of hearing)。內耳的耳蝸有許多絨毛細胞,分別會對不同的頻率產生反應,將基底膜淋巴液的波動轉換成神經的電流訊號,傳達給大腦。也就是說耳蝸的作用就像一個頻譜分析儀,把聲波轉換成不同頻率的訊號,每一個特定位置的絨毛細胞會受特定頻率的刺激,但是當基底膜傳導波動時其鄰近周圍的絨毛細胞也會受到刺激。這也就是說如果有一個頻率的音量很大,在它附近同時有一個比較弱的頻率的話,比較弱的頻率的聲音就會被比較強的聲音給遮蔽掉,我們人耳沒有辦法分辦出有另一個比較弱的頻率的聲音存在。這個遮蔽的作用叫 frquency masking。另外從基底膜受到聲音震動到達穩定狀態,還有聲音結束後完全停止,中間都需要一段時間。所以如果有一個很大聲的聲音出現,在這個聲音開始之前,到這個聲音結束之後,有一段時間我們是聽不到其他聲音的,這種遮蔽效應,我們稱為 temporal masking,之前的叫 pre-masking,之後的叫 post-masking。
前面提到耳蝸就像一部頻譜分析儀,或者說像一個 band pass filter,會把聲音分成許多不同的次頻帶,每個頻帶里都有一個中心頻率,越往兩邊遮蔽的效果就越弱,在同一個頻帶裡面的頻率會互相影響,我們對他們的感知特性也十分的接近,這種人耳知覺特性的頻帶,我們稱為 critical band。critical band 的寬度並不是都相等的,低頻的部分比較窄,高頻的部分則比較寬,總共分成 26 個 critical band。
除了人耳的生理結構特性以外,大腦的作用也佔了一個很重要的角色。我們都知道音高是由基音決定,而音色是由泛音決定,我們很驚訝的發現,人類的大腦會自動補上基音,即使這個基音並不存在。譬如說電話的頻寬只有 300~3200Hz,但是當我們聽一個基音在 120Hz 的男性講電話的時候,我們還是可以聽出他的正確的音高,不會把男生聽成女生。大腦是如何運用復雜的計算去重建這個不存在的基音,我們目前尚無法得知。
經過長期的實驗和觀察,我們可將人耳的聽覺特性定性,建立一個人耳的聽覺模型,叫做 psychoacoustic model。有了這些對人耳知覺特性的了解,我們就可以根據這些理論來壓縮音訊資料,把我們聽不到的聲音去掉。
說是去掉,實際上是怎麼做的呢?
要將無限的連續的類比訊號轉變為有限的離散的數位資料,中間必須經過取樣和量化的手續。譬如說現在量化的位階只有 0~8 九個數字,每一個位階的間隔大小是一格,對一個 4.9 的訊號作量化,得到的數字是 5,和原來 4.9 相差 0.1,這個誤差叫做量化噪音。假設我們把量化的位階減少到 5 個,分別等於原來 0~8 的 0, 2, 4, 6, 8 這幾個數字,位階的間隔大小擴大變成二格,此時再對 4.9 量化,量化的結果是 4,誤差擴大到 0.9,也就是說量化的位階越少,量化的間隔就越大,量化噪音也就越大。
我們做一個實驗,把 16bit 的聲波檔轉為 8bit,當場丟掉一半的資訊,檔案也就小了一半,最簡單的失真壓縮不過我們觀察頻譜發現,減少量化的 bit 數產生的量化噪音,會造成全頻帶都水平上升一定雜訊,你如果聽這個 8bit 的聲波檔,會發現背景充滿沙沙沙的噪音,這就是因為量化誤差產生的量化噪音。
那我們會想,這樣全頻帶都減少一定的 bit 數太沒有效率,為什麼不把他分成好幾個頻帶(critical band),再根據人耳的心理聲學模型的遮蔽效應,對不同頻帶分配不同的 bit 數,讓各個頻帶產生的量化噪音低於遮蔽效應的曲線以下,這樣這些產生的量化噪音我們就聽不到,對知覺來說等於是無失真壓縮,這樣豈不更好?
所以我們就把壓縮的工作分成兩個部分,一個部分將原來的 PCM data 經過 band pass filter 分成好幾個 subband 次頻帶,另一個部分就是心理聲學模型,分析頻譜,找出遮蔽效應的曲線,然後根據這個曲線,對每個 subband 分別量化,決定分配的 bit 數,讓產生的量化噪訊低於遮蔽效應的曲線,使量化的失真不會被人耳聽到,這樣就大功告成了
然後接下來要說的就是這個最復雜的心理聲學模型是怎麼工作的.... ^^;
怎麼講一講變成這麼長 ^^;;
都還沒進入主題...
我是要解釋什麼是 scale factor,這個牽扯到量化的過程,還有 short block 和 long block,這個牽扯到心理聲學模型的判斷和 MDCT window 大小的轉換,主要目的是解決 pre-echo 的問題,結果越講越多... ><
看的人就忍耐一下吧... -_-;;;
前面說到心理聲學模型是如何工作的。ISO MPEG1 Audio 提供了兩個心理聲學模型,分別是 psychoacoustic model 1 和 2,model 2 比 model 1 要來得復雜,但是判斷的效果較好。兩個聲學模型可以用在任何一個 layer,layer 1~3(MPEG1 layer 3 = MP3)。不過我們通常是將 model 1 用在 MP1 和 MP2,model 2 用在 MP3。不過當然也有例外,譬如說有一個特殊版本的 toolame(壓 MP1, MP2 最好的 encoder)就是改用 model 2 的心理聲學模型而不用 model 1。
MPEG1 Audio 壓縮的時候一邊是用一個 polyphase filter bank,將 PCM data 分成好幾個"等寬的" subband 等待進一步量化壓縮,一邊是 psychoacoustic model,使用 512(MP1)或 1024(MP2/MP3)point(取 512/1024 個 sample 計算,或者說 window size=512/1024)的 FFT 轉換,將 PCM data 轉換到頻率域,進行頻譜分析。之所以另外使用 FFT 來分析,是因為 FFT 有比較好的頻率解析度,計算各個頻率的遮蔽效應時會比較精確。然後 psychoacoustic model 會將頻率按照 critical band(人耳聽覺特性的頻帶)分為好幾組,計算各個 critical band 的遮蔽曲線。在計算遮蔽曲線時,第一件要做的工作是區分哪些頻率的聲音是 tone,哪些頻率的聲音是 noise。為什麼要這麼區分呢?因為根據實驗發現這兩種聲音的遮蔽能力不一樣,noise 具有比 tone 更強的遮蔽效應。這邊會提到兩個名詞,一個是 TMN(Tone Mask Noise),tone 遮蔽 noise 的能力,單位是 dB,比較弱,另一個是 NMT(Noise Mask Tone),noise 遮蔽 tone 的能力,比較強。這兩個名詞很眼熟嗎?MP+/MPC 就有提供讓使用者修改這兩個參數的設定。調降這兩個參數,會減低 tone 和 noise 的遮蔽能力,整個遮蔽曲線會往下降,可以容忍的量化噪音就比較低,量化噪音必須減少,分配的 bit 數就必須增加,所以 MP+/MPC 調低這兩個參數,bitrate 會往上竄升,但是量化雜訊也會隨之減少。
在判斷哪些聲音是 tone,哪些聲音是 noise,model 1 和 model 2 採用不同的方法。model 1 是尋找區域范圍內,音量最大的頻率,把這個頻率當作 tone,因為 tone 通常是一定的區域范圍內音量最大的。其他剩下的部分就當成是 noise,加起來以一個單一的頻率代表。
model 2 的作法則不是去區分 tone 和 non-tone(noise),而是給每個頻率一個 tone index,由 0~1,index 數字越大,代表這個頻率越像 tone,根據這個 index 的比例大小,分別計算他們的遮蔽影響力,這樣是不是更精確呢。那要怎麼判斷某個頻率有多像 tone 呢? model 2 是用 predict 的方法。predict 的意思是以現在的狀態,去預測下一個狀態是什麼。在這里 model 2 會儲存過去的兩個分析過的 window 頻譜,根據頻譜的變化,來判斷哪些頻率有多像 tone。因為 tone 的聲音會具有可預測性,前後的變化會有高度的關聯性,不會隨機的雜亂跳動。根據前後的頻譜變化,model 2 更可以准確的分辦出 tone 和 noise。
找出 tone 和 noise 以後,接著把不重要沒有意義的 tone/noise 去掉,譬如說兩個 tone 靠近,一強一弱,或是低於 ATH 絕對聽覺極限以下的 tone/noise,都可以把他去掉。然後計算剩下來的 tone/noise 的遮蔽效應,求出每個 critical band 的遮蔽曲線,最後在合並這些曲線,找出全體的遮蔽曲線。
實際上 psychoacoustic model 會計算一個數值,然後把這個數值傳給量化階段的程式,讓量化階段的程式知道這個頻帶可以允許的量化噪音是多少,該分配多少的 bit 數。這個傳給量化程式的參數叫做 SMR(Signal to Mask Ratio)。
很眼熟的名詞對不對
SMR=SNR-NMR
MP+/MPC/Lame 可以讓你自行設定 minimum SMR 的底線是多少。
前面提過,MPEG1 Audio 在分成好幾個 subband 准備做量化的時候,用的是"等寬"的 filter bank,這和我們人耳特性的 critical band 不同,由下圖可以看出,低頻的部分一個 subband,包含了好幾個 critical band。到了高頻的時候,好幾個 subband 包含在一個 critical band 裡面。這樣心理聲學模型計算出來的各個 critical band 的 SMR 要怎麼給呢?
model 1 是取 subband 涵蓋的范圍中,最小的 SMR。這麼做在低頻的時候,會將好幾個 critical band 的 SMR 取其最小的一個給 subband,因為 subband 包含了好幾個 critical band,如果用這幾個 critical band 中最大的 SMR,將會有部分頻率的遮蔽效應會估計錯誤,所以為了妥協,只好取最小的。高頻的時候則是好幾個 subband 共用一個 SMR。model 1 有一個致命傷,就是高頻的時候,前面我們說過 model 1 每個 critical band 的 noise 是以一個總和集中的頻率代表,現在這個 critical band 橫跨好幾個 subband,以這個中央代表的 noise 頻率計算出來的 SMR,就無法適用在每個 subband 裡面。(距離中央越遠的就越不正確)
model 2 低頻的時候取最小的 SMR,和 model 1 一樣,高頻的時候則是取 critical band 好幾個 SMR 的平均值給 subband。model 2 不用集中式的 noise,而是用 tone index 的方式來計算 tone 和 noise 的遮蔽效應,所以在高頻的時候會比 model 1 精確。
好了,心理聲學模型不能再講下去了,頭暈了... @_@
圖... 有機會再補 ^^;
終於進入主題了:MDCT 和 Quantization(量化)。
前面提到我們將 PCM data 分成好幾個 subband 等待心理聲學模型的判斷,做進一步的量化壓縮,這種壓縮法我們叫做 subband coding。這個 filter 我們用的是 polyphase filter bank,將 PCM data 分成 32 個等寬的 subband。這個 ployphase filter bank 有幾個缺點:
1. 它是有失真的 filter,也就是說,還沒有做會失真的量化步驟,經過 filtering 以後的 subsample 立刻將它還原回 PCM data,結果就已經和原來不一樣了。不過這個失真很小(小於 0.07dB)所以對品質不會有太大的傷害。
2. 它是等寬的頻帶,不符合人耳聽覺特性的 critical band,對後續量化階段的處理不利
3. 它的截止點平緩,所以當輸入頻率很靠近截止點的時候,相鄰的兩個 subband 會發生 aliasing(或者說 overlap,.....請看圖...有機會再補....-_-;;)
MP1 一個 frame 384 個 sample,MP2 和 MP3 用 1152 個 sample,而且 MP3 會將 polyphase filter bank 切出來的 32 個 subband 的 sample,再用 MDCT 轉換,進一步劃分成更細的頻帶,提高對頻率的解析度。這個將原本資料轉換到另一個空間之後再進行壓縮的方法,我們稱為 transform coding。因為MP3 混合了 subband filterbank 和 MDCT,所以我們把 MP3 的這個 filtering 的過程稱為 Hybird Filterbank。
MDCT 之後,可以運用 butterfly 的計算,消除 polyphase filter bank 產生的 aliasing。
不過成也 MDCT 敗也 MDCT,經過這個 MDCT 轉換之後,資料會完全喪失時間的資訊。什麼是喪失時間資訊?我們回頭來說 FFT。
做 FFT 計算的時候,window size 越大(取進來計算的 sample 越多),對頻率的分解能越強,頻率的計算越精確。但是這些 PCM data 的 sample 是照時間排列的,對 44.1KHz 的 PCM 一次取 32768 個 sample 進來計算,如果不用 overlap,則你的頻率解析度(ie. spectral line resolution)是 1.346Hz,而時間解析度只有 1sec * 32768/44100 = 743.04msec,你看不到小於 735.61msec 的頻率變化的過程。頻率解析度和時間解析度兩個量無法同時求得精確的值,時間越精確(取進來計算的 sample 越少),頻率解析就越差,頻率越精確(取進來計算的 sample 越多),時間解析就越差。
MP3 經由 polyphase filter bank 之後轉 MDCT 的過程如下
1. 1152 個 PCM sample 分成兩個部分,各 576 個 sample,稱為一個 granule。
2. 這 576 個 sample 送進 polyphase filter bank,輸出 32 sample(按頻率順序)x 18 組(按時間排序)
3. 重排為 18 個 sample(按時間排序)x 32 組(按頻率排序)
4. 每一組中的 18 個 sample 為時間順序,加上前面一次轉換的 18 個 sample,總共 36 個 sample 送進去做 MDCT 轉換(所以 MDCT window 有 50% 的 overlap 重疊)
5. 轉出來為 18 個 sepctral line(按頻率排序)x 32 組(按頻率排序)
好復雜嗎? ^^;
總之 MDCT 轉換完以後,時間資訊就不見了(每一個都是 spectral line,都是頻率資訊,不過頻率資訊更細了)。
丟掉時間資訊會有什麼影響呢?
假設現在轉換的這一塊聲音區塊前面是很微弱的聲音,到後面突然出現音量急遽升高的情形,譬如說鼓手突然開始打鼓,這種波形我們稱為「attack」:突然拉起的波形。遇到這種情況心理聲學模型會很笨的認為這個區塊裡面有很強的 masker,可以提供很高的遮蔽曲線,所以可以允許較大的量化失真,因此量化的步驟就會給比較少的 bit。MDCT 一次轉換就是取 576 個 sample,這個 block 的長度,同時也就是時間的長度,所以一次死就死全部的 block,量化失真產生的 noise 會擴散到整個 block 的長度范圍(也就是時間范圍),所以前面聲音很微弱的區段,也會發生這些量化噪音,想當然爾,原來微弱的音量根本無法遮蔽掉這些量化噪音,如果後面大音量區段的 pre-masking 前遮蔽曲線也不夠遮蔽這些 noise,我們就會聽到這些量化噪音了,那麼心理聲學模型也就破功了。
這種壓縮瑕疵叫做 pre-echo。
這個道理類似 JPEG 圖檔的壓縮瑕疵,JPEG 一次轉換是拿 8x8 的區塊去做 DCT 轉換,遇到區塊內包含銳利的邊緣、線條(有很多的高頻成分)的時候,經過 DCT 轉換,高頻的量化失真會擴散到整個 8x8 的像素區塊,所以我們常常看到 JPEG 或 MPEG 檔案畫面上銳利線條的周圍(譬如說文字的周圍)會有那種斑斑點點,破碎的壓縮瑕疵,這就是因為一次死死全部,整個區塊都完蛋的關系。
MP+/MPC 因為不用 transform coding,不做 MDCT 轉換,所以他的 pre-echo 的問題比較小,觀察 MPC 壓出來的波形,幾乎看不到 pre-echo 的壓縮瑕疵。
一個相反的例子,MPEG2 AAC/MPEG4 AAC 完全不用 subband filterbank,直接做 MDCT 轉換(前置有一個 gain-control),不過 AAC 有一套對付 pre-echo 的 tool(或者叫 mole)叫做 TNS,可以用來解決 pre-echo 的問題。
這個,越扯越遠,寫不完了 ><
解決 pre-echo 的方法下次繼續....