• 沒有找到結果。

副資訊

在文檔中 MP3浮水印 (頁 29-0)

第三章 何謂 MP3

3.2 MP3 檔案格式

3.2.2 副資訊

副資訊(side infoernation)是用來控制解碼時所必須要的資訊,包 指標、專用位元(private_bits)、窗口型態(window

channel)則有32bytes。

最先

正副號的偏移量來

接下

表示每個 是由不同的

clefactors和Huffman encoded data的長度。

含main_data_end

type)、Huffman表格號碼及他們應用的區域、安全因子(scale factor) 描述符號的敘述等等。

在MPEG-1,單聲道(Single Channel mode)的Side information有 17bytes,而雙聲道(Dual

出現在Side information的九個bit是MainDataBegin。他是用來指 向每個Main Data開始位置的指標,利用一個帶有

紀錄與第一個Header的同步位元(Synchronization word)的相對位置。

緊連在MainDataBegin後面的是Private bits。若為Single Channel 的話,Private bits是五個bits,Dual Channel則為三個bits。

來的數值所代表的就是Scalefactor Selection

Information(SCFSI)。每個Channel有4bits的SCFSI,若為1則 granule是用同一個scalefactors;0表示每個granule

scalefactor band來表示。

在granule中所代表的第一個數值是12bits的Part23Length。

Part23Length是用來紀錄sa

Part_2代表saclefactors的長度而Part_3代表Huffman encoded 度。

在granule中接下來的九個位元是Big Value。Big Value紀錄著在 Main

data的長

Data中Big Value的長度,

Scalefactor Compress。他是用來紀錄 在M

意義。若Window Switch Flag等 於0則

lag、

ffman elect有五個位元。

egion1Count(3 bits)來決定。

Bloc

Golbal Gain有八個位元,他是用來紀錄經過量子化的音階大小。

在Golbal Gain後面的四個位元是 ain Data中Scalefactor的位元數。

接下來的是Window Switch Flag。這個數值是用來決定接下來的 22/44個位元(單聲道/雙聲道)所代表的

接下來的位元所代表的就是TableSelect0、TableSelect1、

TableSelect2、Region0Count和Region1Count。若Window Switch Flag 等於1則接下來的位元所代表的就是Block Type、Mixed Block F TableSelect0、TableSelect1、SubblockGain0、SubblockGain1和 SubblockGain2。

TableSelect是用來決定不同的Huffman table。一共有32個Hu table,每個TableS

在Main Data中Big Value後面還有兩個部分,region0和region1。

其長度分別由Region0Count(4 bits)和R

k Type是用來決定視窗型態。0代表一般視窗,2代表是利用三個

小視窗,1代表由一般視窗轉為小視窗,3代表由小視窗轉為一般視 窗。每個Block Type有兩個位元長。

Mixed Block Flag標是出要用哪一種視窗型態來紀錄高頻和低頻 的部分。

在Mixed Block Flag後面的是三個位元的Subblock Gain。Subblock Gain是只在短視窗型態下才有的變數(Block Type=2)。

在gr

.2.3 主要資料

主要資料(main data)是用來儲存主要音樂資料的地方,它的編碼 Huffman資料且Huffman編碼值是由低頻往高頻排序 anule後面的三個位元分別是Preflag、ScaleFactorScale和

Count1TableSelect。

3

包含安全因子與

的。一個Main Data中有兩個Granlue,而每個Granule包含了兩個 Channel,若該Frame的編碼方式為Single channel則其Granule的兩個 Channel為相同的。

圖六 MP3 主要資料圖

.3 MP3 壓縮原理

MP3 的基本原理是利用的人爾遮蔽效應,將人耳聽不到或是不 易辨認的部分省去,只針對我們可辨認的部分作壓縮,如此一來才能 使資

編碼流程:

3

料量大幅降低,又不至於影響音樂品質太大。

圖七 MP3 編碼流程圖

上圖是 MPEG-1 Layer3 音訊編碼的過程,以單聲道而言,MP3 的一 個編碼框包含 1152 個聲音取樣(一個編碼框又相當於 2 個 granules,

每個 granule 包含 576 個聲音取樣) ,每個聲音取樣為 16 位元。MP3 編碼時,首先將原始輸入的 16-bits PCM 音訊經過濾波器排的分析 (Filter Bank Analysis),轉換成 32 個等頻寬的子頻帶訊號(Subband signals),然後透過改良式離散餘弦轉換(MDCT)將每個子頻帶訊號,

在細分為 18 個次頻帶,然後根據第二聲響心理模型(Psychoacoustic Model II)所提供的遮噪比(SMR,Signal-to-Mask Ratio),對每一個子頻 帶訊號,作位元分配及量化編碼。最後只要將編碼後的資料依照 MPEG-1 定義的位元串的形式輸出即可。

(1)Polyphase Filter Bank(32 subbands):

這一節將藉由詳細的測試與分析讓我們來了解 MPEG/Audio Ployphase(多相)filter bank 的運作,也就是一個類似 decoder 的綜 合 filter bank 之應用,這種多相的 filter bank 對於一般 MPEG/Audio 壓縮的三層協定 layer 1、layer2、layer3 是一個重要的關鍵組成因素,

它將 audio 信號分成 32 個等寬的 frequency subbands,這些 filter 相當 的簡單並且能隨著合理的頻率分析對時間來提供一個良好的解答,這 種設計有幾點值我們來探討。

第一點,等寬的 subband 並沒有準確地反映出人類聽覺系統的聽 覺特性。許多心理聲學上的影響都始終和 critical band 的頻率規模大 小有關。例如,有兩個聲音較大的信號,其聲音清析度在一個遮罩信 號的存在下會不同於那些只有一個或更多 critical band 的信號。比較 多相 filter 的帶寬與那些 critical band 的寬度可知在低頻下,單一 subband 會遮蓋到數個 critical band,在這種環境下,量化的 bit 數無 法明確的調諧為可獲得各別 critical band 的 noise masking。換言之,

最少 noise masking 的 critical band 說明了對於整個 subband 是需要量 化 bit 的數目。

第二點,filter bank 與它的反向過程並不會喪失其轉換的形態,

甚至不用量化,這反向轉換也無法完美的由原始信號中找到。然而,

在前面介紹 filter bank 中,我們可知道這錯誤是很小的並且幾乎是聽 不出來的。

第三點,鄰近的 filter band 會有較多重疊的頻率部份,在單一頻 率下,一個信號可以影響兩個鄰近 filter bank 的輸出。有關於這些將 在下面作更詳細的說明。要了解多相 filter bank,最好的方法就是去 理解它的工作原理。ISO MPEG/audio 標準敘述了計算與分析多相濾 波器輸出的過程,這種過程很相似於 Rothweiler [8]所提出的方法。以 下是 filter bank 輸出等式(1):

等式(1)中,i 是subband index,範圍從 0 至 31。St[I]是在時間t時subband I 的filter 輸出取樣,其中t是audio取樣區間整數 32 的倍數,C[n]是標 準下定義的分析視窗之 512 因素之一,X[n] 是從 512 取樣buffer讀取 的audio 輸入取樣,而M[i][k] = cos[ (2*i+1)*(k-16)*p ⁄64 ]是分析矩陣 因子。上述的部份方程式已經最佳化來達到減少運算的時間。因為這 在括弧中的方程式是與i值獨立的,而且M[i][k]與j值也是獨立的,32 filter輸出只需 512 + 32*64 = 2,560 相乘與 64*7+32*63 = 2,464 相加,

或粗略地 80 加乘每個輸出。實際上,在運算乘和加的減少是可行的,

例如,一快速非連續的cosine轉換 [9,10]或是一快速的傅立葉轉換完

成過程。要注意到filter bank的完成是一臨界取樣:對於每 32 輸入取 樣,filter bank會產生 32 個輸入取樣。其中可運用方程式(1)轉換成較 熟悉的filter迴旋方程式:

X[t] 是在時間 t 時的 audio 取樣,Hi[n] = H[n]* cos[ (2*i+1)*(k-16)*p

⁄64 ]其中如果 n/64 的整數部份為奇數,則 H[n]=-C[n],不然的話對於 n=0 至 511 內 H[n]=C[n]。在這種形式下,每個 filter bank 的 subband 都有自己的 band-pass 濾波響應,Hi[n]。雖然這種形式對於分析來說 更方便,但很明顯的不是一個有效率的解決方法:這直接完成的方程 式需要 32*512 = 16,384 相乘與 32*511 = 16,352 相加來計算 32 個 filter 的輸出。H[n],對於多相 filter bank 符合低通濾波響應的標準。C[n]

使用了部份的最佳化方程式(1),對於 M[i][k]來說 H[n]的 64 個係數群 組每個都會有奇數。M[i][k]的 cosine 形式的範圍 k 只從 0 至 63,且 含蓋了半週期的奇數部份,其中 Hi[n] 的 cosine 形式範圍 n 從 0 至 511 並包含八倍半週期的數。Hi[n]的方程式明顯地表現出每個標準響 應的調整運用 cosine 形式來使低通響應移到適當的頻率帶,因此這些 就叫作多相濾波器( polyphase filter )。這些濾波器在 p ⁄(64T)的奇數倍 數有中心頻率,其中 T 是 audio 的取樣週期,每個都有 p ∕(32T)名

義上的帶寬。標準濾波響應在其帶寬並沒有尖銳的近路,所以當濾波 輸出用 32 來取樣時,會產生相當大的膺頻效應(aliasing)。標準濾波 器的設計和在 cosine 形式下的適當相位位移,可避免在 decoder 的綜 合 filter bank [8,12]完全的發生膺頻。另一個用比帶寬還寬的濾波器所 產生的結果是會使鄰近多相濾波器在頻濾覆蓋範圍會重疊,這現象會 不利於高效率的 audio 壓縮,因為在 subband 邊界附近的信號能量將 會出現在兩個鄰近的多相濾波輸出。

(2)MDCT(Modified Discrete Cosine Transform):

Layer3 的演算法是由 ASPEC ( audio spectral perceptual entropy coding ) OCF (optimal coding in the frequency domain ) 兩種演算法來 加強,雖然 layer3 使用的 filter bank 和 layer1、layer2 是相同的,但是 有些頻帶的濾波器輸出卻經由 modified discrete cosine

transform(MDCT)來補償。MDCT 進一步將頻率輸出的 subband 做細 分,以得較好的頻譜解析度。更甚者,由於將頻率的 subband 做更細 分,layer3 的編碼器能將一些經由 polyphase filter bank 所產生的重疊

消除掉,當然,解碼器會將消掉的重疊部份恢復,所以 inverse MDCT,

經由 filter bank 可以重建原來的聲音取樣和重疊。

Layer3 分成兩個不同長度的 MDCT 區塊:一個 18 sample 的長區 塊和一個 6 sample 的短區塊,因為連續的轉移窗口有百分之五十的重 疊,所以窗口長度是分別是 36 和 12。在聲音信號有穩定的特性時,

長窗口有較高的頻率解析度,而較短的窗口則提供較好的時間解析度 給暫態。注意短區塊是長區塊的三分之一,在短區塊的模式,可用三 個短區塊來替帶一個長區塊,所以 MDCT 的取樣區塊大小對 frame 的取樣數大小不會有影響。對於一個聲音信號的 frame,MDCT 的區 塊大小可以全是單一一種(長的或短的)。也可以是長短混合式的,在 混合的形式中,MDCT 對兩個較低頻的 subband 使用長區塊的模式,

而對其他以上的三十個 subband 用短區塊的模式。這樣為需要較高解 析度的低頻提供了較好的解析度,而又不犧牲較高頻的時間解析度。

長短區間的轉換不是立即的,一個長區塊會有特別的長變短窗口 或短變長窗口,來作長短區塊間的轉換。因為經由 MDCT 來處理 subband,提供較好的頻率解析度,也就是說提供了較差的時間解析 度,因為 MDCT 運作在 12 或 36 polyphase filter sample,所以實際處 理的時間窗口是 12 或 36 倍大。這個 MDCT 的量化值會引起整個時

間窗口的錯誤,所以這個量化就很像會產生聲音的失真。這種失真可 以從 pre-echo 中發現,這是由於信號之前部的雜訊遮罩比信號後部的 雜訊遮罩還微弱。

Layer 3 混用了多種方法來避免 pre-echo,第一,layer 3 的

psychoacoustic model 為了偵測出 pre-echo 而做了修改。第二,layer 3 使用保留位元(bit reservoir)的 bit 來減少 pre-echo 情形存在時的量化雜 訊。最後,還可以轉成較小區塊的 MDCT 大小,來減少實際的時間 窗口。

Layer 3 有特別的方法將處理 MDCT 值,以除去 polyphase filter bank 產生的重疊。為使整個的量化值能有一個一致的 signal-to-noise ratio,Layer 3 的量化器將其輸入的信號功率乘上 3/4 因子,而最後輸 出時乘上 4/3 因子還原原來功率。Scale-factor band. 不像 layer1、layer2 有不同的數量因數,layer3 使用 scale-factor band,這個頻寬包含了許 多 MDCT 的係數和適當的 critical band 的寬度。在 layer3 中,數量因

Layer 3 有特別的方法將處理 MDCT 值,以除去 polyphase filter bank 產生的重疊。為使整個的量化值能有一個一致的 signal-to-noise ratio,Layer 3 的量化器將其輸入的信號功率乘上 3/4 因子,而最後輸 出時乘上 4/3 因子還原原來功率。Scale-factor band. 不像 layer1、layer2 有不同的數量因數,layer3 使用 scale-factor band,這個頻寬包含了許 多 MDCT 的係數和適當的 critical band 的寬度。在 layer3 中,數量因

在文檔中 MP3浮水印 (頁 29-0)

相關文件