Dither的影響

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

版主: DearHoney

WavOX
大師
文章: 168
註冊時間: 2003-02-24 23:34
來自: 香港
聯繫:

回覆 teamJDK

文章 WavOX »

由於本人在香港生活, 所以在稱呼上的用詞會跟台灣有點出入, 請各位真大大見諒! :D

原來泛音是Overtone. 以前中學時期有學過有關學問, 不過, 實在太久之前了(超過十年), 而且現在工作上又不是接觸有關聲學的職務, 所以勞煩了各位! :D
頭像
kouyoumin
神人
文章: 1612
註冊時間: 2001-01-05 08:00
來自: 中正紀念堂
聯繫:

文章 kouyoumin »

teamJDK 寫:按第一頁最下面的箭頭便會連到第二頁
原來有第二頁呀.. ^^;
teamJDK 寫:Dither 會增加聽覺範圍內的動態,會把低位元的資訊帶到高位元,讓 16bit 的 CD 保留 20bit 的一些細節資訊
我比較難理解的是, 那些低位元的資訊不會因此被放大嗎?
節約用電 - VIA EPIA CN運作中
teamJDK
大師
文章: 125
註冊時間: 2002-10-09 08:00

文章 teamJDK »

kouyoumin 寫:
teamJDK 寫:按第一頁最下面的箭頭便會連到第二頁
原來有第二頁呀.. ^^;
還有第三頁喔 :p
teamJDK 寫:Dither 會增加聽覺範圍內的動態,會把低位元的資訊帶到高位元,讓 16bit 的 CD 保留 20bit 的一些細節資訊
我比較難理解的是, 那些低位元的資訊不會因此被放大嗎?
不會被放大。

難理解.... 我想要怎麼解釋比較好理解.....
加入的那些雜訊的總音量 = -132dB sine wave + 其他雜訊的音量
所以 -132dB sine wave 還是 -132dB,沒有被放大,只是被埋在一堆雜訊裡。

這樣解釋會比較容易理解嗎? ^^;
jgj
初學者
文章: 31
註冊時間: 2001-05-13 08:00

文章 jgj »

teamJDK 寫:
kouyoumin 寫:
teamJDK 寫:按第一頁最下面的箭頭便會連到第二頁
原來有第二頁呀.. ^^;
還有第三頁喔 :p
teamJDK 寫:Dither 會增加聽覺範圍內的動態,會把低位元的資訊帶到高位元,讓 16bit 的 CD 保留 20bit 的一些細節資訊
我比較難理解的是, 那些低位元的資訊不會因此被放大嗎?
不會被放大。

難理解.... 我想要怎麼解釋比較好理解.....
加入的那些雜訊的總音量 = -132dB sine wave + 其他雜訊的音量
所以 -132dB sine wave 還是 -132dB,沒有被放大,只是被埋在一堆雜訊裡。

這樣解釋會比較容易理解嗎? ^^;

那篇文章不就解釋了一切了嗎?

圖三的訊號 對應到 圖四的Psychoacoustic weighting(反映真實人耳的感覺)
所以使人耳感覺是聽到-1xx db以上 但是實際的訊號還是 -9xdb 訊號並沒有影藏 純粹是耳多的錯覺

因此圖五他舉了一個例子是對於圖1的訊號 要讓人耳 感覺 1k 有-132db 4k 有 -120db的感覺時 我們該如何設計noise shaping

圖六就是 合成後的結果 果然 1k有 -132db的感覺 4k也有-120db的感覺
而圖六就是Psychoacoustic weighting 圖 也就是 (被騙的人耳感覺圖)

根據information theory 16bit量化的訊號理論上就是只有96db
而dithering的設計 是利用Psychoacoustic 來騙人的
這樣說能了改嗎 ?


再回到此篇討論串的最先前那幾張圖
仔細看peak level 跟 最小的noise level 比
這其實是一種動態壓縮 (把小聲的高頻區level放大 使得泛音列的聲音變大
但是對應的Psychoacoustic weighting時卻不會很大 而有很大的聽感失真(波形外型失真)
可是實際上訊號的失真(數值失真)可是不小

所以noise shape 可以說是 dithering + dynamic compression技術的結合
不知道這樣有沒有說錯!

反著說也就是不見得你加隨意的dithering就能夠達到-1xxdb(那不就可以亂加了嗎?)
而是要根據Psychoacoustic weighting
teamJDK
大師
文章: 125
註冊時間: 2002-10-09 08:00

文章 teamJDK »

jgj 寫: 那篇文章不就解釋了一切了嗎?
是的,所以要仔細看,強力推薦。
有關原理的部分,精華全在第二頁。
圖三的訊號 對應到 圖四的Psychoacoustic weighting(反映真實人耳的感覺)
所以使人耳感覺是聽到-1xx db以上 但是實際的訊號還是 -9xdb 訊號並沒有影藏 純粹是耳多的錯覺
........

嗯,解釋起來好麻煩 ^^;
錯覺?其實不能這麼說啦,這不算是一種錯覺,而是我們人耳構造先天的特性。
人耳對不同頻率的敏感度不一樣,不同頻率相同音壓,但是我們聽起來會覺得聲音大小聲不一樣。
可以參考 JamesT 大大寫的好文章
http://forums.dearhoney.idv.tw/viewtopic.php?t=28913

圖三是實際的頻譜圖,可以看出加入 dither 消除了諧波失真,但是整體的雜訊量增加,noise floor 上升。
原文:
Notice that the Total Harmonic Distortion is significantly reduced.
However the Signal/Noise ratio and the total Noise Floor measurements are much worse.

但是這樣的測法並不能表現出實際上聽起來的情況,因為 Noise Shaping 的關係,雜訊集中在高頻,而人耳對高頻較不敏感,所以實際上聽起來 SNR 並沒有那麼糟糕。
原文:
The measurements are correct, they just don't tell the whole story. When using Noise Shaping techniques, it is the shape of the Spectral response which is of more interest than the absolute Noise Measurements. Theses noise measurements take no account of the way we hear sound.

為了反應實際上聽覺的感受,我們把原資料過一個 weighting filter,這個 filter 按照人耳對不同頻率的聽覺特性,對不同頻率的音壓做 -增益,將原訊號各個頻率的音壓調整成接近我們人耳聽起來的樣子。

這種 weighting filter 有很多種,例如常見的 A, B, C weighting filter,三種 weighting 的曲線分別對應
A: 40 phons (1KHz 40dB SPL) 的等響曲線
B: 70 phons 的等響曲線
C: 100 phons 的等響曲線

(請參考 JamesT 大大貼的那張圖)
聆聽的音量越大,曲線越接近直線(音量越大,我們對各個頻率的敏感度越差不多)。

而網頁上作者用的是自己設計的 Psychoacoustic weighting,意即接近人類聽覺心理的 weighting filter。
原文:
These measurements with Psychoacoustic weighting take account of the way we hear sound.

經過 filter 以後,可以看出,加了 Dither + Noise Shaping 後,實際上人耳聽起來的好處有
  • Decreased Distortion
    Increased Signal/Noise ratio
    Lowered noise floor
接下來你說的
所以使人耳感覺是聽到-1xx db以上 但是實際的訊號還是 -9xdb 訊號並沒有影藏 純粹是耳多的錯覺
我們和下面的一起來解釋
因此圖五他舉了一個例子是對於圖1的訊號 要讓人耳 感覺 1k 有-132db 4k 有 -120db的感覺時 我們該如何設計noise shaping
不是這樣。
圖五作者是將一個 32bit 浮點數的原始 PCM,裡面包含了
1. -132dB 1KHz
2. -120dB 4KHz

這樣兩個 sine 訊號,轉成 16bit,使用 Dither + Noise Shaping 的技術。
這是一個新的實驗,用新的測試訊號,不是拿圖一的訊號來用,把圖一的訊號調整成圖五的樣子。
原文:
The Original signal was created in floating point format and Quantised down to 16 bits, it contains:
  • 1kHz at 132dB down
    4kHz at 120dB down
圖六就是 合成後的結果 果然 1k有 -132db的感覺 4k也有-120db的感覺
而圖六就是Psychoacoustic weighting 圖 也就是 (被騙的人耳感覺圖)
..... 不是這樣。

這個軟體用的 Dither + Noise Shaping 技術,可以保留到多小的訊號?
原文:
How small a signal can be quantised using this technique?

我們來試試看這個軟體的極限。
原文:
Here is an example of our Quantiser as it approaches its limits.
The Original signal was created in floating point format and Quantised down to 16 bits, it contains:
  • 1kHz at 132dB down
    4kHz at 120dB down
圖五是將一個原本 32bit 浮點數的 PCM 資料,裡面包含了 -132dB 1KHz 和 -120dB 4KHz 的 sine 訊號,轉成 16bit。re-quantization 的過程中加入 Dither + Noise Shaping。
將結果作頻譜分析,可以發現原始的 1KHz -132dB, 4KHz -120dB 訊號都有保留下來。
雖然作者說
As you can see there is negligible distortion even as you approach the limits of the noise shaping algorithm.

但是高頻有非常高的 noise,達到 -96dB 以上,這樣這些保留下來的訊號還聽得到嗎?

將這個 16bit PCM 過 weighting filter,我們可以發現,實際上人耳聽起來高頻的雜訊並沒有那麼大聲,-132dB 1KHz 訊號的音量還是高於 noise 的音量,所以這個訊號並沒有被 noise 給埋沒,我們還是可以聽得到。
將原圖轉貼過來
圖檔
原文:
The Psychoacoustic weighting indicates that the limit is probably at about the -132dB level, after which the signal will start to become too hard to distinguish from noise, so we can say the useful dynamic range is about 132dB [22 bits].

由以上的說明可知,所以我們並不是 "被騙" 喔,而是實際上就有這麼一個 -132dB 的 1KHz 訊號存在,它的音壓就是 -132dB,圖五的原始頻譜中也清楚明白地顯示了有這麼一個音量的訊號,並不是 -96dB 聽起來像 -132dB,也不是耳朵的錯覺。

我們要探討的,是這個 -132dB 的訊號能不能夠被聽到,所以才將原始訊號過了一個 Psychoacoustic weighting filter,將音壓調整成人耳聽起來樣子,看看實際上聽起來,這個 -132dB 的訊號會不會被 noise 的音量給蓋掉。\r

這個 Psychoacoustic weighting filter 的目的是,測量訊號在人耳聽起來,會是什麼樣子,讓我們知道經過 Dither + Noise Shaping 後,會有什麼實質上的效果,反應人耳實際上的聽覺感受。

Psychoacoustic weighting filter 只是用在測量成績上,並不會用在 Dither + Noise Shaping 的過程中,也可以說是和 Dither + Noise Shaping 完全沒有關係。
根據information theory 16bit量化的訊號理論上就是只有96db
information theory 會教這個? ^^;

是的,一般自然的量化,所得到的 SQNR 就是 6.02dB * bit + 1.76dB,可以簡略地說為是 96dB,但是加入 Dither + Noise Shaping 後,就突破了這個限制。
所以原文中作者說:
How small a signal can be quantised using this technique?
Using a Natural Quantiser the minimum signal which could be resolved would be 96dB down.
而dithering的設計 是利用Psychoacoustic 來騙人的
這樣說能了改嗎 ?
是利用到 Psychoacoustic 沒錯啦,不過說是"騙人的"好像有點怪怪的..... :P
再回到此篇討論串的最先前那幾張圖
仔細看peak level 跟 最小的noise level 比
這其實是一種動態壓縮 (把小聲的高頻區level放大 使得泛音列的聲音變大
但是對應的Psychoacoustic weighting時卻不會很大 而有很大的聽感失真(波形外型失真)
可是實際上訊號的失真(數值失真)可是不小

所以noise shape 可以說是 dithering + dynamic compression技術的結合
不知道這樣有沒有說錯!
完全聽不懂,所以也不知道有沒有錯(爆)
不過 Noise Shaping 和 動態壓縮 並沒有關係是可以肯定的。
反著說也就是不見得你加隨意的dithering就能夠達到-1xxdb(那不就可以亂加了嗎?)
而是要根據Psychoacoustic weighting
Dither 確實是亂加的(不然怎麼叫雜訊 :P 不過你可以決定要用哪種 PDF,雜訊值出現的分佈機率,以及最大雜訊值)。
Noise Shaping 則是經過設計的 filter,確實是要好好設計,不是每種 Dither + Noise Shaping 的設計都可以提升動態範圍到 -132dB。
JamesT
神人
文章: 1347
註冊時間: 2001-01-04 08:00

文章 JamesT »

adomu 寫:24bit全彩
圖檔

降色至64color 有 Dither
圖檔

降色至64color 無 Dither
圖檔

這樣大家應該可以了解Dither的用處吧
ray_f
初學者
文章: 38
註冊時間: 2003-03-07 23:19
來自: 香港
聯繫:

文章 ray_f »

小弟想請教一下關於 noise shaping 的問題!

是否當由 32bit dither 至 16bit 的時候, 加入一個 8bit (Q/4) 長的 1KHz sine wave、 與及一個 16bit (Q/2) 長的 random noise 就可以呢?

那麼, 如果要由 32bit dither 至 24bit 的時候, 那個 1KHz sine wave 與及 random noise 該怎麼處理呢? ?_?
ray_f
初學者
文章: 38
註冊時間: 2003-03-07 23:19
來自: 香港
聯繫:

文章 ray_f »

還有一個問題...

如果想將 24bit 轉成 16bit 又該如何做 noise shaping 呢?
bennetng
神人
文章: 665
註冊時間: 2001-05-07 08:00
來自: 香港
聯繫:

文章 bennetng »

既然好像沒有人答, 就讓我獻醜吧

dither + noise shaping 並不是「加入 1khz sine wave 和 noise」, 而是「用 noise 去塑造一個用來盛載 signal 的容器」

至於 24-bit 轉 16-bit 的話其實主要是看 sample rate 吧, sample rate 低的話 (例如 44.1khz) 也許只可以把 noise 集中在 15khz-22khz 左右, 反之高 sample rate (例如 96khz) 就可把 noise 推遠一點了, 例如在 20khz 後 noise 才開始提高

其實很簡單的, 只要在 foobar2000 用 8-bit 輸出然後播一些音樂, 然後在 dither 那裡選什麼 Strong ATH, 然後又與 No Noise Shaping 做比較, 就會很明顯地聽得出 noise shaping 的效果了
ray_f
初學者
文章: 38
註冊時間: 2003-03-07 23:19
來自: 香港
聯繫:

文章 ray_f »

謝謝你這麼詳細解說, 這麼說那個 noise 越高頻率便越是理想! 最好能夠超出耳聽的範圍是吧?
回覆文章