MP3壓縮原理詳解:Zip壓縮命令在數字音樂文件中的操作應用及影響 2024版
其實在眾多音頻技術中,MP3壓縮技術并不代表最好,但當前它依然是主流的存在。
音樂信號中存在著多種冗余成分,其中包括不易被人耳分辨的間隔信息及混雜在較強背景中的弱信號。CD聲音若未經壓縮,則采用固定的44.1kHz采樣率,這能確保最大動態(tài)音樂的良好再現。信息量較少處的數據量與信息豐富處相同,因此存在壓縮的可能性。目前,音響的頻寬標準為20~20kHz,即使是頂級CDPlayer也只能延伸至2Hz左右。
為了降低聲音失真,MP3采用了名為“感官編碼技術”的算法。這一過程首先對音頻文件進行頻譜分析,接著用過濾器剔除噪音電平,通過量化將剩余數據打散排列,最終形成具有高壓縮比的MP3文件。這樣壓縮后的文件在回放時,可以接近原音源的聲音效果。盡管它是一種有損壓縮,但通過極小的聲音失真換取了較高的壓縮比。現今的MP3技術還運用了與杜比AC-3相似的變壓縮比率(VBR)技術,根據音樂中信息的多少調整采樣壓縮比,并利用人耳的掩蔽效應來減少冗余數據。
音頻壓縮的原理在于利用人耳的生理結構和聽覺特性。人耳的耳蝸內有許多絨毛細胞,對不同頻率產生反應,并將聲波轉換成神經電流信號傳給大腦。人耳對2~5KHz的頻率最為敏感,越往高頻感覺越不敏銳。當有一個頻率的音量很大時,它可能掩蓋了其他較弱頻率的聲音,這種遮蔽效應稱為“頻率掩蔽”。聲音震動從基底膜傳導至穩(wěn)定狀態(tài)和完全停止都需要一定時間,這期間可能存在聽不見其他聲音的情況,即“掩蔽”。
基于這些生理和聽覺特性,我們可以建立心理聲學模型(psychoacoustic model)。通過這一模型,我們可以了解并利用人耳的感知特性來壓縮音頻資料,去除我們聽不到的聲音信息。具體操作中,將連續(xù)的類比信號轉化為離散的數字數據需要經過取樣和量化過程。量化過程中產生的量化噪音可以通過精心的頻帶分配和量化策略來降低,使其低于人耳的聽覺閾值,從而實現近似的無損壓縮。
為了更高效地實現壓縮,我們會將音頻信號分成多個次頻帶(subband),并根據心理聲學模型的遮蔽效應為每個次頻帶分配不同的比特數。這樣確保產生的量化噪音低于聽覺閾值,從而在保持聽覺效果的同時最大化壓縮比。不同版本的音頻編碼器會采用不同的心理聲學模型(如model 1和model 2)來適應不同層次(layer 1-3)的編碼需求。雖然存在例外情況,但總體上這些模型的應用提升了音頻壓縮的效率和音質。
音頻壓縮技術不僅關乎技術實現,更涉及到人耳的生理結構和聽覺特性。通過深入了解這些原理和特性,我們可以更有效地進行音頻壓縮,實現音質與文件大小的良好平衡。在MPEG1 Audio壓縮中,我們首先使用了一個polyphase filter bank將PCM數據分成若干個等寬的subband,等待進一步量化壓縮。接著,我們應用了psychoacoustic model,使用512(MP1)或1024(MP2/MP3)點的FFT轉換,將PCM數據轉換到頻率域,進行頻譜分析。之所以使用FFT來分析,是因為它具有較好的頻率解析度,能夠更精確地計算各個頻率的遮蔽效應。
Psychoacoustic model將頻率按照critical band(人耳聽覺特性的頻帶)分為好幾組,并計算各個critical band的遮蔽曲線。在計算遮蔽曲線時,我們首先區(qū)分出哪些聲音是tone,哪些聲音是noise。根據實驗發(fā)現,這兩種聲音的遮蔽能力不一樣,其中noise具有比tone更強的遮蔽效應。
在判斷哪些聲音是tone,哪些聲音是noise時,model 1和model 2采用不同的方法。Model 1是尋找區(qū)域范圍內音量最大的頻率,把這個頻率當作tone,其他剩下的部分就當成是noise。而model 2則給每個頻率一個tone index,由0~1,index數字越大,代表這個頻率越像tone,根據這個index的比例大小,分別計算他們的遮蔽影響力。
找出tone和noise后,我們接著把不重要沒有意義的tone/noise去掉,然后計算剩下來的tone/noise的遮蔽效應,求出每個critical band的遮蔽曲線,最后在合并這些曲線,找出全體的遮蔽曲線。
實際上,psychoacoustic model會計算一個數值,這個數值傳給量化階段的程序,讓量化階段的程序知道這個頻帶可以允許的量化噪音是多少,該分配多少的bit數。這個傳給量化程序的參數叫做SMR。
在MPEG1 Audio壓縮中,我們還使用了MDCT(Modified Discrete Cosine Transform)進行轉換,進一步劃分成更細的頻帶,提高對頻率的解析度。這個將原本資料轉換到另一個空間之后再進行壓縮的方法,我們稱為transform coding。
MPEG1 Audio壓縮通過結合psychoacoustic model和MDCT等技術,實現了對音頻數據的高效壓縮,同時保持了較好的音質效果。FFT計算與MP3編碼過程解析
在進行FFT(快速傅里葉變換)計算時,窗口大小的選擇對頻率分解的精確度有著直接的影響。窗口越大,即參與計算的樣本數越多,對頻率的分解能力就越強,頻率計算也越精確。這是因為PCM數據是按時間順序排列的,每次取一定數量的樣本進行計算。如果不使用重疊技術,那么頻率解析度為1.346Hz,但時間解析度則受到樣本率和計算窗口的影響。換句話說,頻率解析度和時間解析度兩個量之間存在權衡關系:追求更高的時間精確度(即更少的計算樣本)會導致頻率解析度下降,反之亦然。
接下來,讓我們詳細了解MP3經過polyphase filter bank后轉為MDCT(調制域頻譜分析)的過程:
1. MP3的編碼過程中,首先會將1152個PCM樣本分成兩部分,每部分576個樣本,這被稱為一個granule(顆粒)。
2. 這576個樣本被送入polyphase filter bank(多相濾波器組)。該濾波器組的輸出是按頻率順序排列的32個樣本組,每組有18個樣本,按時間排序。
3. 這些樣本組需要進行重排,變成按時間排序的18個樣本組,每組包含按頻率排序的32個樣本。這一步是為了適應MDCT轉換的需求。
4. 在MDCT轉換過程中,每一組中的18個樣本加上前一次轉換的18個樣本(共36個樣本)會進行重疊并送入MDCT進行轉換。這是因為MDCT窗口設計有50%的重疊率。
5. 轉換后的結果為按頻率排序的18個spectral line(頻譜線),每組仍按頻率排序。
這樣的過程是否覺得復雜呢?其實在音頻編碼的領域中,這是相當標準的操作流程。MDCT轉換完成后,時間信息在處理中逐漸消失(即轉換為純頻率信息),雖然頻率信息變得更加細致了。
那么丟棄時間信息會帶來什么影響呢?在音頻信號中,如果某一時刻前聲音非常微弱,而突然出現音量急劇上升的情況(如鼓手突然擊鼓),這種突然增大的音量被稱為“attack”,也就是波形突然拉起的情況。在心理聲學模型中,如果遇到這種突變的信號區(qū)域,它可能會誤判該區(qū)域的掩蔽曲線(masker),從而導致對壓縮過程中量化失真的處理不當。如果量化失真產生的噪聲擴散到整個block(即時間范圍),即使原本微弱的音量的區(qū)域也無法遮蔽這些噪聲。這就是所謂的“pre-echo”現象。
這種現象在壓縮技術中是常見的瑕疵之一,與JPEG圖像壓縮中的問題類似。JPEG壓縮時,當圖像區(qū)域包含銳利的邊緣或線條(含有大量高頻成分)時,DCT轉換和隨后的高頻量化失真可能導致噪聲擴散到整個像素區(qū)域。我們在JPEG或MPEG文件中經常能看到銳利線條周圍出現的斑斑點點的壓縮瑕疵。
與MP3相比,MP+和MPC由于不采用transform coding和MDCT轉換,其pre-echo問題相對較小。觀察MPC壓縮后的波形,我們可以發(fā)現其幾乎不出現pre-echo壓縮瑕疵。而像MPEG2 AAC和MPEG4 AAC這樣的編碼格式則完全不使用subband filterbank,而是直接進行MDCT轉換并輔以前置增益控制。不過AAC有一套解決pre-echo問題的工具叫做TNS(Temporal Noise Shaping)。
關于文件壓縮的原理和過程,簡單來說就是將文件的二進制代碼進行優(yōu)化,減少連續(xù)的0、1代碼數量。例如“000000”可以簡寫為“60”來減少文件所占用的空間。因為計算機處理的所有信息都是以二進制數的形式存儲的,所以壓縮軟件就是通過特殊的字符或算法來標記這些重復或可優(yōu)化的字符串,從而達到壓縮的效果。
以上內容對于理解文件壓縮和音頻編碼過程有很大的幫助。如果想要更深入地了解壓縮技術以及其背后的數學原理,可以查閱相關的專業(yè)資料或參加相關課程的學習。WinRAR是一款常用的文件壓縮和解壓縮工具,能夠處理多種格式的壓縮文件,如RAR和ZIP等。在處理大型文件或需要減小文件傳輸大小時,WinRAR是一個非常實用的工具。
參考資料來源:相關領域專業(yè)書籍、百度百科等。