史萊姆論壇

返回   史萊姆論壇 > 教學文件資料庫 > 多媒體影音轉檔燒錄技術文件
忘記密碼?
論壇說明 標記討論區已讀

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2004-01-17, 02:42 PM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 EncSpot & pro 這個mp3 tool 軟體!

開 發 商: http://www.guerillasoft.com

軟體簡介: 一個分析網路音瀕的優秀工具。它能將你個人電腦中所有的庫存 mp3 音樂搜匯出來,並對檔案名、編碼器、比特率、音瀕結構、音軌長度、文件大小、結構損壞、音樂品質等作一詳盡的分析報告,同時支持 mpc 等新興網路音樂格式,功能強大,配合專業音瀕錄製程序,可對個人的 mp3 音樂進行一個詳盡的掌握,方便後期製作
home page:
http://www.guerillasoft.nstemp.com/EncSpot2/。
轉自技術討論參考:
http://forums.dearhoney.idv.tw/viewt...er=asc&start=0





download file:
http://soft.ttdown.com:8080/SoftView...iew_13310.html
Name: Mark Andrews
Email Address: mark.maker@suisse.ch
Code: 572CCE9E-84BC8716-7E934AA6-46D81022

Q:
我想知道有沒有什麼軟體可以檢視vbr比特率的啊
就是vbr的最麻煩拉~

A:
vbr是動態編碼,用播放器可以看它的平均數
XP裡看文件內容裡的Summary,點擊Advanced可以看MP3、WMA、WAV文件的采樣率等參數


這個方法最好


附件: 1.gif
該檔案已經被下載 29 次.
就是阿~
在XP裡面選項文件詳細資料就可以看到阿~
或者wmp9也行
無需什麼專業軟體的




Q:
這個軟體好像是可以分辨MP3的品質
還可以猜出MP3壓縮時所用的編碼器
可是我看不懂他分辨的依據是什麼
因為同樣的品質等級有128k也有64k的
同樣的位元率也會有最高品質跟最低品質的
還有一些圖表分析但是我完全看不懂
另外有人可以告訴我Bad Last Frame是什麼意思嗎
直接翻譯好像是壞掉的最後分頁
看起來似乎蠻糟糕的
不幸的是我有不少MP3這項都是YES
可是聽起來又好像沒有問題呀
我想這個軟體應該是很不錯的
但是我就是看不太懂 !

A:

EncSpot 評估 MP3 的品質是用很簡單的推算方式,只能當作參考,不能當作很精確的音質評價的依據。
EncSpot 是根據使用的 Encoder,資料流量,壓縮的聲道模式來推算品質
首先如果 Encoder 是
Blade, dist, QDesign (fast mode), Shine, Xing
等較差的 Encoder,也就是說他們會需要較高的 bitrate 才能獲得較好的音質,則加權的數值 weight 設為 = -1

FhG, Lame 3.8, Lame 3.9, Gogo (after 3.0)
weight = 1

mppenc
weight = 2

RCA, Thomson
weight = 3

然後由加權的數值找出不同 Encoder 的高低音質標準
如 Xing 的加權 = -1,高音質的 index = 10- (-1) = 11
查表(作者定義好的表),高音質標準是 192kbps 以上。
低音質的 index = 8- (-1) = 9
查表得到低音質標準 = 128kbps。
如果是 Lame,加權 = 1,高音質的 index = 10-1 = 9 = 128kbps 以上。

如果是單聲道模式,128kbps 相當於 dual channel 模式的 256kbps(因為單聲道需要壓縮的資料少一半,等於兩倍於雙聲道模式的有效流量。dual channel 左右聲道各只有 64kbps 的流量)。所以相對於 dual channel,單聲道模式的有效 bitrate = 實際 bitrate * 2
但是相對於 joint stereo 模式,因為 joint stereo 模式會混合 stereo 和 MS Stereo 模式,壓縮上比較有效率,相對的音質會更好,所以相對於 joint stereo 模式,有效 bitrate = 實際 bitrate * 1.85
stereo 模式(不使用 MS Stereo,但是兩聲道共用 128kbps,那邊難壓那邊分多一點,不像 dual channel 是兩個獨立的聲道分開壓縮,一邊類BIOS 64kbps),相對於 joint stereo 模式,有效 bitrate = 實際 bitrate * 09
joint stereo 模式 = * 1(不變)
使用 VBR 的話 bitrate * 1.2

然後比較有效 bitrate 是否大於剛剛計算出來的高音質標準,如果大於高音質標準,則顯示為高音質,介於高音質標準和低音質標準之間,則顯示不好不壞,低於低音質標準則顯示為低音質。

好簡單的判斷方法。
所以作者說這個判斷只能當作參考...

猜測是用那個 Encoder 壓的,則是根據壓出來的 MP3 的特性(譬如說 Xing 不會使用 short block),檔尾附加資料的長度(不同 Encoder 有不同長度),某些 Encoder 會做的"標記"(如 Lame 會在檔尾加上 Lame 3.xx (beta/alpha) 等字串)... 等等,來猜測這個 MP3 是用哪一個 Encoder 壓的。譬如說分析階段發現該 MP3 沒有使用 short block,又是 dual channel 模式,而且又沒有用 scale factor,那麼... 這一定是 Shine 這個 Encoder 壓出來的東西

Bad Last Frame 代表這首 MP3 的最後一個 frame 的資料沒有正常結束,有些 Encoder 會漏掉最後一個 frame 的結束標記,通常來講對音質不會有太大的影響。另一種情況是網路下載,沒有正常傳完,最後的 frame 錯誤,也會顯示 Bad Last Frame,不過這種情況應該很少。

那些圖表和參數的意義,這個說來話長,等我手邊的事情忙完再寫...

音訊資料因為其資料內容的特性,以傳統的壓縮法難達到很高的壓縮率,不過我們人耳並沒有無限的時間解析度和頻率解析度,其實原始的音樂訊號中包含了很多我們聽不到的資料,把這些對我們來講其實無意義的資訊給去掉,這樣就可以達到很高的壓縮率。這種利用人類感官知覺的特性作的失真壓縮法,就叫做 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(或者叫 module)叫做 TNS,可以用來解決 pre-echo 的問題。

這個,越扯越遠,寫不完了 ><
解決 pre-echo 的方法下次繼續....


Q:

譬如說現在量化的位階只有 0~8 九個數字,每一個位階的間隔大小是一格,對一個 4.9 的訊號作量化,得到的數字是 5,和原來 4.9 相差 0.1,這個誤差叫做量化噪音。假設我們把量化的位階減少到 5 個,分別等於原來 0~8 的 0, 2, 4, 6, 8 這幾個數字,位階的間隔大小擴大變成二格,此時再對 4.9 量化,量化的結果是 4,誤差擴大到 0.9,也就是說量化的位階越少,量化的間隔就越大,量化噪音也就越大。

請問D/A部分的S/N要如何解釋?


A:

這篇又浮上來了 -_-||

對量化噪音的 SNR(S-QN-R,Sign to Quantization Noise Ratio)為
SNR = 6.02N + 1.76
N 是量化的 bit 數
每增加一個 bit(兩倍)SNR 上升差不多 6dB
16bit 理論上最大的 SNR = 98.08dB

算式怎麼來的...
SNR = RMS Signal / RMS Noise

Q:
一個 N-bit 加上 oversampling 的 DAC
SNR = 6.02N + 1.76 + 10*logR
...
A:
也就是說
計算D/A的S/N時, N取的仍是量化時(A/D)的誤差
而非單純D/A這一段的誤差?
如果使用比訊源更高位元的DAC (如:在CD唱機上使用24bitDAC)
是否影響S/N?


也就是說
計算D/A的S/N時, N取的仍是量化時(A/D)的誤差
而非單純D/A這一段的誤差?

那個算式"計算"的是 "SQNR" Signal to Quantization Noise Ratio。
D/A 的輸入端是數位的,不會增加 quantization noise,SQNR 取決於 bit 數。
除非原始資料動過手腳(例如動態壓縮、音量正規化..),才會增加 quantization error。
另外 D/A 因為電子元件限制或濾波電路設計造成的誤差(不是 quantization error),例如電阻值誤差造成 16bit D/A 只有 12bit 解析度的這種影響,我不是學電機電子的,這個要請專家來解說
"測定"這種 SNR 的方法是 1KHz Full Scale Output / 當輸入的數位資料為 0000... 時輸出的電壓。

如果使用比訊源更高位元的DAC (如:在CD唱機上使用24bitDAC)
是否影響S/N?

理論上不會,增加到 24bit 並沒有產生更多的資訊。16->24 數位處理的時候是尾巴多加八個 0,實際有效位元還是 16bit,SQNR 不變。
而 upsampling,理論上也沒有增加任何的資訊,但是聽起來就是有差異。dCS 公司的說法是,upsampling 雖然沒有增加額外的資訊,但是經過 upsampling 處理後,能夠讓更多包含在 source 裡面的資訊被表現出來(原本的系統沒有 100% 的發揮出 44.1KHz 全部的實力)。
但是我相信這跟 interpolation filter 設計的好壞一定很有關係,拿 SSRC upsampling 會不會有 dCS Purcell 的效果?我猜想不會..

另,SNR究竟是用電壓算,還是用功率算?
在Google翻的時候
發現有些地方是用10*log(Signal Power/Noise Power)...

電壓 20log(S/N)
功率 10log(S/N)

to Tib 大大
pre-echo 的解決法?這個要再等一下...
(打完這篇我就要睡了... )
上面寫的東西錯字很多,而且也沒有好好分段,文句也不通順,講的東西也沒有講到重點,若要收進文件說明裡恐怕還得要經過大修改,我想還是不要比較好

另,SNR究竟是用電壓算,還是用功率算?
在Google翻的時候
發現有些地方是用10*log(Signal Power/Noise Power)...

SNR = 20*log(RMS Full Scale Output / RMS Quantization Noise)dB
加上 20*log 服務機構變成 dB
Full Scale Output 和 Noise 的服務機構是 RMS Voltage
RMS Volt = Peak Volt / 2^0.5(最大 Voltage 除以根號 2)

量化誤差會介於 +/- 0.5 的 LSB 之間(量化間距的一半)
1 LSB = Full Scale Output Range / 2^N
例如量化間距等於 0.25,0.375~0.625 之間的值都會取為和 0.5 一樣,誤差在 +/- 0.125 之間。
量化噪音分散於 fs/2(取樣頻率一半)的頻譜範圍
假設誤差是均勻分散於 +/- 0.5 LSB 之間的亂數,經過計算可以求出 quantization noise 的 RMS Power(數字忘記了)

RMS Full Scale Output = LSB*(Full Scale Output Range/2) / 2^0.5 = (LSB * 2^(N-1)) / (2^0.5)
例如 16bit => 2^16 = 65536 => +32767~-32768 => 32768 = (2^16)/2 = 2^(16-1),所以 LSB * (FSR/2) = LSB * 2^(N-1)
將算出來的 RMS Full Scale Output 和 RMS Quantization Noise 兩者相除得到... 一個數字(忘記了)
取 log 乘上 20 就得到最後的結果 6.02N + 1.76

一個 N-bit 加上 oversampling 的 DAC
SNR = 6.02N + 1.76 + 10*logR
R 為 oversampling 超取樣的倍率,取樣頻率 fs 每提高兩倍(x2),SNR 上升差不多 3dB
加上 noise shaping,把量化噪音移到高頻,SNR 會更高。
10*logR 這個算式怎麼來的?
經過一陣運算得來的..(爆死)
原理是雖然總量化噪音沒變,但是量化噪音分散於 fs/2 的頻譜範圍內,現 fs 提高,fs/2 的頻譜範圍變寬,量化噪音分散到更廣的範圍,各個頻率的量化噪音量便會下降,經過低通濾波以後,就可以濾掉一大部分的量化噪音。


pre-echo 的解決方法,其實這一系列的開頭第一篇文章就有提到了。我本來要解釋的是 long block 和 short block 的意思,我說這個牽扯到心理聲學模型的判斷,還有 MDCT window 大小的轉換,目的是為了解決 pre-echo 的問題。經過上面的說明,我想應該很容易猜到解決 pre-echo 的方法就是切換 MDCT window 的大小,遇到 attack 波形的時候換用比較小的 window size,提高時間解析度,避免 pre-echo 的瑕疵擴散。

前面提到 transform coding 是將要壓縮的資料轉換到另一個座標空間,目的是轉換後能以較少的數值記錄原本的資料,或者是能夠依據資料的特性刪除一些比較不重要的部分。但是轉換後會喪失原本空間的一些 information,例如 JPG 圖檔由 pixel domain 轉換到 frequency domain 會喪失空間解析度;MP3 由 time domain 轉換到 frequency domain 會喪失時間解析度,造成後面量化之後的雜訊擴散,這種瑕疵在音訊壓縮裡面稱為 pre-echo。

既然有 pre-echo 當然就有 post-echo。想像有一個波形是大音量之後急遽縮小的波封,量化雜訊也會向後擴散到小音量的區域。那麼為什麼很少聽到有人提及 post-echo 的問題?這是因為 post-echo 的問題不重要,我們聽不到 post-echo 的瑕疵,所以也不必去處理。前面沒有貼圖所以大家可能沒有注意到,pre-masking 和 post-masking 的遮蔽能力不一樣,pre-masking 的時間很短,必須很靠近大音量的部分才能被遮蔽到,而 post-masking 的作用時間很長,在大音量之後很長的一段時間之內都有遮蔽的效果。所以 post-echo 通常會被 post-masking 給遮蔽掉,因此我們不用 care post-echo 的問題。

那麼 MP3 是如何解決 pre-echo 的問題?
MP3 有兩個方法,第一個方法是使用 Bit Reservoir。Bit Reservoir 翻成位元儲存槽,LukeLo 大大在「漫談數位音樂」一文中有說明,請大家看一下。MP3 CBR 壓縮時,當某個 frame(1152 個 sample)不需要那麼多 bit encode 時,剩下的空間可以保留起來,留給後面的 frame 使用,這個功能叫做 Bit Reservoir。可以想像為將剩下的 bit 放到 Bit Reservoir 裡面儲存起來,以備後面不時之需。每個 frame 開頭有紀錄這個 frame 真正資料的起始位置(往前 offset 多少 bit),所以能夠正確的播放。記錄 offset 的位元有一定的大小,所以能 offset 的距離也有限制,Bit Reservoir 的大小也有限制,超過能夠容許的範圍即使有多餘的空間,那個 frame 也必須把剩下的空間填上 0(padding zero bit),所以 Bit Reservoir 還是有其限制。MP3 的 Bit Reservoir 很小,而 AAC 的 Bit Reservoir 則比較大,所以使用的彈性比 MP3 大。不論如何,有 Bit Reservoir 的設計,當遇到 attack 波形的時候,就可以增加量化的 bit 數,給多一點 bit,降低量化噪音,如此便可以減小 pre-echo 的壓縮瑕疵。

第二個辦法就是切換 MDCT 的 window size。遇到 attack 波形的時候,將原來長的 window size,叫做 long block,切成三個短的 window size,叫做 short block。原來的 window size 18 個 sample 除以 3 = 6 加上前一次的 6 個 sample 總共 12 個 sample 送進去做 MDCT 轉換。因為 block 縮短,時間解析度提高,就可以有效的控制 pre-echo。(最後一個 short block 可以利用 pre-masking 的遮蔽曲線。block 縮短,量化雜訊擴散的範圍縮小,雜訊分散的位置(時間)就越接近大音量起始的部分,此時 pre-masking 就可以發揮作用。沒有圖,大家只好用力想像一下 ^^;)
要如何判斷現在是 attack 波形呢?交給前面說明的心理聲學模型來處理。心理聲學模型會保留過去兩個 window 的資料和現在的 window 來作分析,根據頻譜的變化判斷是否發生 attack。如果有 attack,便控制 MDCT 轉換的程式做 window switch。切換的 window 不是立刻切換,中間會經過幾個變形窗,這裡就不詳述了,有一個 EncSpot 圖表中出現的名詞是 mixed block,這個意思是 ISO 容許同一個 granule 中,包含長、短兩種不同的 block。我們知道低頻的頻率解析度很重要,所以 ISO 允許遇到 attack 時,最低頻的兩個 scale factor band 使用 long block,其他的 band 用 short block,這叫做 mixed block。
看 EncSpot 的圖表,你便可以知道這個 encoder 會不會使用 short block 的技巧。沒有用 short block 的 encoder(如 Xing)就會被 EncSpot 的作者歸類到爛 encoder 裡面去。
兩個方法並用,就可以控制 pre-echo 的問題。
各家 encoder 多少都會改良 ISO 的設計,像 FhG 的 encoder,Bit Reservoir 的使用就更有效率,long block 也會使用 Bit Reservoir。(ie. 不止 attack 的時候會使用 Bit Reservoir,代表心理聲學模型的判斷更為複雜)

上面又提到一個名詞,叫做 scale factor band(SFB)。SFB 是 MDCT 轉換完以後,將 MDCT 轉出來的係數,幾個幾個集合起來,分成幾個群組,這每一個群組(也就是一個頻帶)叫做 SFB。分成 SFB 做什麼呢?SFB 很接近人耳特性的 critical band,基本上你可以就將它視為 critical band,包成 SFB 之後再送進去量化,如前所述遮蔽計算會好很多。這些 SFB 為什麼命名為 SFB?因為這些 SFB 頻帶裡的 MDCT 數值,都用同一個 scale factor。那什麼是 scale factor 呢?scale factor 就是科學記號 0.125 x (10^2) 的那個指數 "2"。假設現在 SFB 裡面包含了三個 MDCT 係數: 2.6, 1.3, 0.2,encoder 會找那個最大的係數 2.6,把他改成科學記號表示法,使有效位數的範圍落在正負 1 之間。例如 2.6 = 0.65 x (2^2) 然後再送進去量化,這時候只量化前面的有效位數。解碼的時候反量化之後的數值再乘上這個 scale factor 就可以還原回原本的 MDCT 係數。那為什麼不乾脆就叫它指數就好還要給它取一個新名字叫做 scale factor 呢?因為這個指數的作用,會重新 scale(放大)有效位數的長度,使有效位數的大小剛剛好符合量化所提供的 bit 數。
詳細的原理,必須說明 MP3 的量化程序 ^^;

先說明一下 EncSpot 的圖表裡面另外提到的兩個名詞:
1. Scalefac_scale: scale factor 的底數一般是 2(2^Scalefac,二進位),但是可以換為以根號 2 為底(sqrt(2)^Scalefac)。以 2 為底可以調整較大的範圍,以根號 2 為底可以做較細的微調。Scalefac_scale 為 0 或 1(EncSpot 顯示打勾)代表切換以 2 或根號 2 為底,這個參數是在告訴 decoder 要用那個數字為底數才能還原正確的 MDCT 係數。
2. Scfsi: Scale Factor Selection infomation,這個參數在 MP2 和 MP3 的 Format 裡面意思不一樣,我現在忘記了,沒時間查資料,總之是告訴 decoder 解碼的時候哪幾個 SFB 是用哪幾個 Scale Factor 乘的,正樣才能乘出正確的係數。沒有共用 Scale factor 就不用有這個資訊。

量化的程序:
量化的程式分為內外兩個迴圈。內部的迴圈叫做 bitrate control,它會根據可用的總 bit 數,分配 bit 給各個 SFB,並且控制最後編碼的 bit 總數會小於可用的 bit 數,所以這個迴圈叫做 bitrate control loop。如果編碼的結果超過可用的 bit 數,bitrate control 就會提高一個參數叫做 global gain,提高這個參數會使得需要編碼的有效位數變短,所以需要的 bit 數便會降低,使得編碼後的 bit 數符合可用 bit 數。
外部的迴圈叫做 quality control loop,當內部迴圈 encode 完以後,會將結果送出給外部迴圈,外部迴圈會計算目前內部迴圈編碼完以後所產生的量化噪音,並且和心理聲學模型送來的 SMR(可以容許的量化噪音)做比較。如果有 SFB 目前的量化噪音大於可以允許的量化噪音(代表目前的量化噪音超過遮蔽曲線),程式便會放大(提高)一個參數叫做 Scale factor
放大 Scale factor 會使得需要編碼的有效位數變長,所以需要的 bit 數便會增加,bit 數增加會使得量化噪音減小,直到產生的量化噪音符合可以容許的界限為止。外部迴圈放大 Scale factor 的動作叫做 amplify Scale factor band,放大這個參數以後會重跑一次內部迴圈,重新分配一次 bit。此時 Scale factor 有放大的 SFB 會需要較多的 bit,當然其他的 SFB 就必須減少 bit。因為其他的 SFB 本來的量化噪音是符合容許的,所以我們就開始祈禱經過重新分配以後,bit 數被減少的 SFB 的量化噪音仍然會低於可以允許的界限。如果是,那麼太好了,經過調整以後所有的 SFB 的量化噪音都小於允許的界限,那麼就跳出迴圈,大功告成。如果不是,經過調整以後還是有 SFB 超過可以允許的量化噪音,那麼就再放大這幾個 SFB 的 Scale factor,重跑一次內部迴圈。重新分配完以後外部迴圈再檢查,還有沒有 SFB 不符規定.....如此週而復始,直到:
1. 所有的 SFB 都小於或等於可以允許的量化噪音
2. 所有的 Scale factor 都已經放大到最大值

然後跳出迴圈。
以 2. 的條件跳出來的,代表還有 SFB 的量化噪音超過可以容許的範圍(例如 bitrate 太低,這種情況當然再怎麼調整還是會有 SFB 超過限制),此時就要從剛剛所有的量化結果中,挑一個失真最小的結果來編碼。
例如有兩種情況
1. 僅 SFB 9 (1.9-2.2kHz) 超過界限
2. SFB 0 (0-172Hz) 和 SFB 20 (13-16kHz) 超過界限

Lame 會選 1 來編碼。
ISO reference code 會笨笨的用跳出迴圈之前的最後一個結果來編碼,而最後一個計算的結果通常是最糟的 case

這個量化的程序,與其說是在做 bit allocation(分配 bit),倒不如說是在做 noise allocation(分配 noise),決定 noise 要分配到哪些地方,哪些地方 noise 多一點,哪些地方 noise 少一點。所以你看 MP3 的說明文件,它會把這個程序稱為 noise allocation,而不用一般的說法 bit allocation。

瞭解 Scale factor 這個參數的作用之後,接下來要解釋為什麼「這個指數的作用,會重新 scale(放大)有效位數的長度,使有效位數的大小剛剛好符合量化所提供的 bit 數」。
假設現在 MDCT 的數值是 9.6,改成 0.6x2^4(讓有效位數介於正負 1 之間),用二進位紀錄有效位數 0.6,最接近的是 .101 數值為 1x2^(-1) + 0x2^(-2) + 1x2^(-3) = 0.625 和原來 0.6 誤差 0.025,需要 3 個 bit 紀錄。現在放大 Scale factor,改成 0.3x2^5,用二進位記錄有效位數 0.3,最接近的是 .0101,數值為 0.3125,和原來誤差 0.0125,和上面相比誤差縮小,而所需的 bit 增加為 4 個。所以提高 scale factor,可以使有效位數剛剛好符合量化增加的 bit 數,或者說可以"用完"增加的 bit 數的所能提高的精確度。
上面的說明只是為了方便瞭解簡化之後的例子,真正 MP3 壓縮時用的 scale 指數相當複雜,包含了上面提到的 global gain 參數(global gain 越高,所需 bit 越少,品質越糟,和 Scale factor 的作用剛好相反)和 scale factor,還有 pre-emphsis tab 等等的參數混合在一起,才組成真正的 gain 參數。
long block 使用的式子
gain[sfb][i] = 2^ [ -.25 * ( global_gain -210 - ifqstep*scalefac[gr][ch].l[sfb] - ifqstep*pretab[sfb]) ]

如上所述調整 Scale factor 能夠有效的運用所有 bit 數的精確度,有助於音質提升。Xing 早期的 encoder 不會使用 Scale factor(Scale factor = 初始值 0),後來才加入 Scale factor 的功能。
http://www.xingtech.com/developer/mp3/
看到 EncSpot 顯示有使用 Scale factor(Scalefac > 0 佔百分之幾),代表這個 encoder 不會太笨
但是要注意的是,音質要好,Scale factor > 0 不是必要的,有可能各個 SFB 都沒有超過容許的量化噪音,所以也不需要放大 Scale factor。

說了這麼多,可能還是很難吸收(表達能力太差 >_<)
有興趣的人可以使用一個 tool,叫做 MP3x,其實就是 Lame 這個 encoder 的特別版本。它會在壓縮的時候用圖形的方式表現目前壓縮的狀態....放一張圖好了....

由上而下分別是
原始 PCM 視窗,三條黃線分割的區域,中間黃線的左右兩邊代表 1152 個 sample 分成的兩個 granule,
下面是經壓縮後,再合成(還原,也就是播放時的)波形
再下面是 MDCT window 轉換後的係數,對應上面兩個 granule 的視窗,黃線區分的是不同的 SFB。你可以切換顯示狀態,變成顯示"量化"之後的 MDCT 係數,由圖形變化,你可以看到經量化後產生的誤差。
然後下面是原始 PCM 經 FFT 的分析之後的頻譜,也就是心理聲學模型判斷的部分,每個 bar 代表 critical band。灰色的線是原始波形的頻譜,藍色的線是可允許的 distortion,紅色的線是經過 encode 之後,實際的 distortion。如果你看到紅色的線超過藍色的線,代表有些 SFB 的 distortion 已經超過心理聲學模型所可以容忍的範圍了,你應該要提高 Lame 壓縮的 bitrate。
最後一個視窗是 Scale factor band。
用這個軟體看圖說故事,比較能夠瞭解 MP3 encoder 內部到底是如何運作的。

以上,應該有很多打錯寫錯的部分,請原諒,我大概永遠都無力更正了

Q:
如原~~ 4.1 4.5 4.9 5.3 ~~的斜直線, 取整數量化後變4 5 5 5
播放時參考前後走勢推出這條直線以降低量化失真...(?)
A:
很難。
音樂性的內容很難預測他的變化波形(無法確定它會是一條"線性"的斜直線),這也是為什麼傳統 predict coding 在音樂壓縮上很難取得很高的壓縮比。
如果是語音的內容,比較容易使用 predict 分析,這種的就比較有可能作出來,不過這種推測(預測)的技術還是非常困難。
隨便亂 scale 的話量化誤差反而會擴大。
例如原來是 4.5 4.5 5.6 5.9 6.5 ... 量化之後假設是 5 5 6 6 7 ... 誤差為 [0.5][0.5][0.4][0.1][0.5]
量化間距放大 10 倍,假設要重新 scale,請問該怎麼 scale
假設我認定他的變化會是線性的,重新 scale 為 5 5.5 6 6.5 7 ... 誤差為 [0.5][1][0.4][0.6][0.5]
誤差反而更大

再者 16bit A/D 如果取 8bit 錄音,他送給你的是前面 8bit 的 MSB(原來 -48dB 以下的資訊就全沒了),如果重新 scale 為 16bit,而不是直接補八個 0,等於你做了動態擴展,而且是非線性的,聽起來恐怕會很恐怖
相同的 24bit A/D 錄音 --> mastering 16bit 光碟(剩前面 16bit MSB)--> scale 24bit D/A 會怎麼樣?
請問這是指?

Q:
00000001變成0000000000000011?
A:
差不多,看 scale 的演算法怎麼寫,總之不會是線性等倍擴展,否則有展等於沒展。
例如原來 8bit,擴展兩倍 x2 = 9bit
原來 0 --> 0
原來 1 --> 2
原來 2 --> 4
....
每個 sample 都等倍擴展,有展等於沒展。

至於我說重新 scale 等於動態擴展的意思是,原來 8bit 的 00000001 為 -48dB,scale 為 16bit,假設對應到 0000000000000001,輸出為 -96dB,你必須把音量調大,才能聽到原來所有的聲音。

似乎還是有些廠商對Hi-bit化有興趣...
(Victor Extended K2. DENON AL24 Processing...)

Extended K2 有一套他們自己自豪的演算法,這就不是小弟所能臆測的了

MP3x 的圖形示範說明
壓縮的 wav 檔是 EBU SQAM test tone 27,著名的 pre-echo 殺手 "castanets"
這個 wav 檔有非常多變態的 attack 波形,是各種 encoder 最痛恨的那一種壓縮對象
Lame CBR 128kbps 壓縮,所有參數都是預設值,移動到第 37 個 frame = 第 0.97 秒
畫面
最上面那行顯示的是 frame header information,紅色的字體代表 "on"
js 所在的這個欄位會顯示幾種情況: mono, joint-stereo, stereo,代表這個 frame 是以哪一種聲道模式壓縮。如果是 joint-stereo(js),還會顯示是 mid-side stereo,還是 intensity stereo。(ms 和 is 的意義,請參照 LukeLo 大大的「漫談數位音樂」一文)
mdb 代表 main data begin,告訴 decoder 往前移動多少 bytes 才是這個 frame 真正 data 的起始位置。後面兩個數字則是 壓縮這個 frame 的 MDCT 係數所花費的 bit 數/壓縮這個 frame 之前 Bit Resevior 的大小

第一個視窗是原始 PCM 的波形,平常是顯示左或右聲道,上面我切換為顯示 mid-channel,下面是 side-channel
最左和最右邊的黃色的線之間包含的是這個 frame 壓縮的 1152 個 sample。中間的黃色的線再把這個 frame 切成兩半,分為兩個 granule,各 576 個 sample。granule0 和 granule1 分別做 MDCT 轉換,對應下面的兩個 MDCT 視窗。可以看到圖中右邊的 granule1 有一個音量急遽上升的 attack 波形,所以 Lame 把這個 granule 再切成三個 short block(多出兩條黃線切成三等分),各 192 個 sample,分別做 MDCT 轉換。
視窗底部的藍色和綠色的線,代表 psy-model FFT window 的長度,分別對應下面的左右兩個 FFT 視窗。前面說 ISO 是用 1024 個 sample 的 FFT window size,Lame 則是用 768 個 sample 的 window size。(這是有原因的,因為 768 個 sample 的長度對於計算一個參數叫做 perceptual entropy 會比較準確。由 perceptual entropy 這個參數 psy-model 可以知道這個波形發生了 attack,告知 MDCT 做 window switch。768 個 sample 的長度較短,越少距離 granule 中心越遠 sample 會被扯進來干擾計算,對於 pe 的計算判斷會較準確。當然有一好沒兩好,FFT window size 越小,頻率的解析度就越不精確,遮蔽計算的效果越差。凡事都是對立需要妥協的,這是不管在那個領域都會成立的真理 )

第二個視窗是壓縮之後,synthesis filter bank 還原回來的 PCM 波形(播放時候的 PCM 波形)。
下面是 ISO 的 psy-model 壓出來的結果

可以看到 ISO 的 psy-model 漏掉了這個 attack,沒有做 MDCT 的 window switch(沒有切成三個短的 short block,看黃色的線)。事實上 ISO 的 psy-model 是慢了一步,在下一個 granule 才換成 short block。(因為 1024 個 FFT window size 的關係?)
所以可以看到右邊的 granule1 大音量開始的前面,波形多出了一堆雜訊,這個就是我們之前常常說的 pre-echo

第三個視窗是 MDCT 的係數,左邊的 MDCT0(start) 代表用的是中介窗 start(從 long block 換到 short block 不是立刻轉換,中間會經過幾中介的 window,照這樣的順序:normal--> start--> short--> end--> normal),右邊則是 MDCT1(short),代表使用 short block。
切換為顯示量化之後的 MDCT 結果

第三個視窗是 FFT 的頻譜,各個顏色的意思上次有說過,後面那些數字 pe 是 perceptual entropy,其他的不知道

最後一個視窗是 SFB,scale = Scalefac_scale, preflag = pre-emphasis flag, ggain = global gain
各個 bar 為 Scale factor band,一開始的 scale factor 都是 0,然後有放大的 band 長條圖會變長。

QuickTime 6.0 可以壓 MPEG4 AAC,用的是 Dolby AAC 的引擎(改自目前世界上最頂尖(?)的 FhG professional AAC Codec,速度比較快,音質稍微差一點,類似 MP3Enc 和 FastEnc 的差別)。psy-tel AAC 的開發者 Ivan 用這首 castanets 測試,結果發現 QT6.0 AAC 的 psy-model 會漏掉幾個 attack 沒有切換為 short block(而 FhG 的 AACdemo 2.2、LiquidAudio AAC 則正常)。不過也有人持反論,認為這幾個 attack 相隔距離太近,pre-echo 瑕疵可以利用前一個 attack 的 post-masking 遮蔽掉。也許有興趣的人可以試試看,看看 pre-echo 到底聽不聽得到
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
 


主題工具
顯示模式

發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用

相似的主題
主題 主題作者 討論區 回覆 最後發表
尋找連接阜與工作行程的關聯 psac 作業系統操作技術文件 1 2006-03-10 11:50 PM
談硬碟維修與資料恢復 psac 系統 & 硬體安裝及故障判斷技術文件 6 2004-11-22 01:57 PM


所有時間均為台北時間。現在的時間是 11:29 PM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1