有人知道EncSpot這個軟體嗎?

討論MP3、WAV、MIDI、WMA甚至其他數位音訊的播放、製作、轉換等。

版主: DearHoney

頭像
bqin
神人
文章: 1471
註冊時間: 2001-07-14 08:00
來自: 靈堂
聯繫:

有人知道EncSpot這個軟體嗎?

文章 bqin »

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

文章 TMNEXT »

<!-- BBCode Quote Start --><FONT COLOR=GREEN>
這個軟體好像是可以分辨MP3的品質
還可以猜出MP3壓縮時所用的編碼器
可是我看不懂他分辨的依據是什麼
因為同樣的品質等級有128k也有64k的
同樣的位元率也會有最高品質跟最低品質的
還有一些圖表分析但是我完全看不懂
另外有人可以告訴我Bad Last Frame是什麼意思嗎
直接翻譯好像是壞掉的最後分頁
看起來似乎蠻糟糕的
不幸的是我有不少MP3這項都是YES
可是聽起來又好像沒有問題呀
我想這個軟體應該是很不錯的
但是我就是看不太懂
有人可以說明一下嗎?
</FONT><!-- BBCode Quote End -->
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 是兩個獨立的聲道分開壓縮,一邊固定 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 壓出來的東西 :P

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

那些圖表和參數的意義,這個說來話長,等我手邊的事情忙完再寫 :P
待續...
頭像
bqin
神人
文章: 1471
註冊時間: 2001-07-14 08:00
來自: 靈堂
聯繫:

文章 bqin »

感謝您詳盡的解說,
非常期待您的續篇.
TMNEXT
神人
文章: 271
註冊時間: 2002-01-02 08:00
來自: 人畜同樂促進會

文章 TMNEXT »

完全沒時間 T_T
只好很簡略的說一下 ^^;
音訊資料因為其資料內容的特性,以傳統的壓縮法難達到很高的壓縮率,不過我們人耳並沒有無限的時間解析度和頻率解析度,其實原始的音樂訊號中包含了很多我們聽不到的資料,把這些對我們來講其實無意義的資訊給去掉,這樣就可以達到很高的壓縮率。這種利用人類感官知覺的特性作的失真壓縮法,就叫做 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,當場丟掉一半的資訊,檔案也就小了一半,最簡單的失真壓縮 :D 不過我們觀察頻譜發現,減少量化的 bit 數產生的量化噪音,會造成全頻帶都水平上升一定雜訊,你如果聽這個 8bit 的聲波檔,會發現背景充滿沙沙沙的噪音,這就是因為量化誤差產生的量化噪音。
那我們會想,這樣全頻帶都減少一定的 bit 數太沒有效率,為什麼不把他分成好幾個頻帶(critical band),再根據人耳的心理聲學模型的遮蔽效應,對不同頻帶分配不同的 bit 數,讓各個頻帶產生的量化噪音低於遮蔽效應的曲線以下,這樣這些產生的量化噪音我們就聽不到,對知覺來說等於是無失真壓縮,這樣豈不更好?

所以我們就把壓縮的工作分成兩個部分,一個部分將原來的 PCM data 經過 band pass filter 分成好幾個 subband 次頻帶,另一個部分就是心理聲學模型,分析頻譜,找出遮蔽效應的曲線,然後根據這個曲線,對每個 subband 分別量化,決定分配的 bit 數,讓產生的量化噪訊低於遮蔽效應的曲線,使量化的失真不會被人耳聽到,這樣就大功告成了 :D

然後接下來要說的就是這個最複雜的心理聲學模型是怎麼工作的.... ^^;

怎麼講一講變成這麼長 ^^;;
都還沒進入主題...
我是要解釋什麼是 scale factor,這個牽扯到量化的過程,還有 short block 和 long block,這個牽扯到心理聲學模型的判斷和 MDCT window 大小的轉換,主要目的是解決 pre-echo 的問題,結果越講越多... ><
看的人就忍耐一下吧... -_-;;;
TMNEXT
神人
文章: 271
註冊時間: 2002-01-02 08:00
來自: 人畜同樂促進會

文章 TMNEXT »

前面說到心理聲學模型是如何工作的。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)。
很眼熟的名詞對不對 :P
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 精確。

好了,心理聲學模型不能再講下去了,頭暈了... @_@
TMNEXT
神人
文章: 271
註冊時間: 2002-01-02 08:00
來自: 人畜同樂促進會

文章 TMNEXT »

圖... 有機會再補 ^^;

終於進入主題了: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,我們就會聽到這些量化噪音了,那麼心理聲學模型也就破功了。\r
這種壓縮瑕疵叫做 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 的方法下次繼續....
頭像
kouyoumin
神人
文章: 1612
註冊時間: 2001-01-05 08:00
來自: 中正紀念堂
聯繫:

文章 kouyoumin »

<!-- BBCode Quote Start --><FONT COLOR=GREEN>譬如說現在量化的位階只有 0~8 九個數字,每一個位階的間隔大小是一格,對一個 4.9 的訊號作量化,得到的數字是 5,和原來 4.9 相差 0.1,這個誤差叫做量化噪音。假設我們把量化的位階減少到 5 個,分別等於原來 0~8 的 0, 2, 4, 6, 8 這幾個數字,位階的間隔大小擴大變成二格,此時再對 4.9 量化,量化的結果是 4,誤差擴大到 0.9,也就是說量化的位階越少,量化的間隔就越大,量化噪音也就越大。
</FONT><!-- BBCode Quote End -->
請問D/A部分的S/N要如何解釋?
TMNEXT
神人
文章: 271
註冊時間: 2002-01-02 08:00
來自: 人畜同樂促進會

文章 TMNEXT »

<!-- BBCode Quote Start --><FONT COLOR=GREEN>
<!-- BBCode Quote Start --><FONT COLOR=GREEN>譬如說現在量化的位階只有 0~8 九個數字,每一個位階的間隔大小是一格,對一個 4.9 的訊號作量化,得到的數字是 5,和原來 4.9 相差 0.1,這個誤差叫做量化噪音。假設我們把量化的位階減少到 5 個,分別等於原來 0~8 的 0, 2, 4, 6, 8 這幾個數字,位階的間隔大小擴大變成二格,此時再對 4.9 量化,量化的結果是 4,誤差擴大到 0.9,也就是說量化的位階越少,量化的間隔就越大,量化噪音也就越大。
</FONT><!-- BBCode Quote End -->
請問D/A部分的S/N要如何解釋?
</FONT><!-- BBCode Quote End -->
這篇又浮上來了 -_-||

對量化噪音的 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
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 的頻譜範圍變寬,量化噪音分散到更廣的範圍,各個頻率的量化噪音量便會下降,經過低通濾波以後,就可以濾掉一大部分的量化噪音。

更詳細的資料,可以問 JamesT 大大 :P
Tiberius
神人
文章: 931
註冊時間: 2001-01-03 08:00

文章 Tiberius »

真是受教了 ... 學到了不少東西呢! :D
絕.對 有整理收進文件說明區的價值 [XD]

不過,我更期待您解說上次預告的「Pre-Echo 解決法」 :P
頭像
kouyoumin
神人
文章: 1612
註冊時間: 2001-01-05 08:00
來自: 中正紀念堂
聯繫:

文章 kouyoumin »

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

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