看板 AudioPlayer 關於我們 聯絡資訊
※ 引述《exFREEzy (~RadicalDreamer~)》之銘言: : Dither 果然是好主題 這篇作為延伸閱讀和總結 : (沒意外的話 往後延伸閱讀 都是分享相關的英文資訊 : 有養分的中文資訊 會作節錄後排版轉貼至看板文章中) : 一樣先從 teamJDK 的「看圖理解音訊 dither」節錄出來 : --------------------------------------- : 這個網頁有各家 dither 技術的比較,包括 SONY 的 SBM : http://audio.rightmark.org/lukin/dither/dither.htm : 以上是很簡單的介紹,對詳細原理有興趣的人請看 : (連結失效)http://www.glowingcoast.co.uk/audio/theory/dither/ : --------------------------------------- : 另外是相關不錯的網頁連結 : http://en.wikipedia.org/wiki/Dithering#Digital_audio : What is Dither? http://www.hifi-writer.com/he/dvdaudio/dither.htm : Q&A http://www.earlevel.com/Digital%20Audio/Dither.html : http://www.digido.com/bob-katz/dither.html : 我想再列下去…我自己也看煩了這樣 o(一︿一+)o : 關於 Dither 總結幾句話: : 在以類比音樂為比較對象的前提下 : 基本上 Dither 對於數位音訊 在聽感上會比較有幫助 : 至少從科學角度上來說 應該是成功地欺騙大腦了 : 但換個講法 : Dither 如此『加料』的作法 : 即使聲明是 隨機方式 加入 white noise 白噪音 : 但這種模糊聽感的手法 有些人還是不太能接受 : 不啟用 Dither 能節省不少 CPU 運算 : 我想對我來說這是最大的好處 : 各位可以比較看看 : 有無 Dither 開啟時的 CPU 使用程度 :) : 網路討論中有看到對於數位音訊更深入的 Dither 比較 : 像是對於 Lossy v.s. Lossless 的影響 : (有損破壞性壓縮) (無損壓縮格式) 針對這裡來回一下好了,其實簡單的說,dither最實用的地方在於, 當因為一些原因,要將一串高精度(譬如24bit)的音訊流(audio stream) down到低精度格式來播放(譬如16bit最常見)時.原本最簡單的做法就是, 砍掉第17-24bit的資料,例如101110101110010101011101,把他砍成 101110101110010101 就變成16bit了,但是相對的16bit以上所保留的資訊也會被犧牲掉,所以這 是最粗糙的方式,一般也不會這樣幹.此時就可以使用dither,透過在高頻段 參入雜訊的方式,可以讓一些高位元精度的資訊down到低位元精度.如此在 降轉之後能保留更多的有效資訊.日本JVC公司有名的K2編碼器也是利用這 樣的原理,透過dither將原始母帶高於16bit的資訊儘量多的down進16bit 的標準CD用pcm格式,所以他家才會以20bit/24bit作為行銷口號,最後產生 集大成(JVC龜毛技術大成XD)的XRCD. 所以,相較於在不改變格式的情況下,加入dither好還是不好,這個有爭議的問題. 在非降轉不可的情況下,使用適當的dither方式來保留高精度的音樂資訊應該確 實會是比較好的方式. 回到lossy vs lossless的播放這邊,播放這兩種不同類型的檔案,在位元深度上 (bit depth)會有一些不同.lossless因為是數學上的無損,所以解碼後會得到和 原始音樂檔案(CD是44.1/16bit的wave檔)相同的data,此時加入dither就變成 "在不改變格式的情況下,加入dither好還是不好?" 這樣的情況,因此不太推薦. 但是對於lossy(mp3 mpc ogg...etc)檔案,由於他們的編碼方式和pcm不同,是先 將音樂轉換成各種不同頻率的波形組合後,再根據各自的模型刪除高頻與低頻. 因此他們會造成波形的失真,解碼後的結果雖然一樣是pcm格式,但卻很可能出現 高於16bit的結果(用個很爛的例子,我現在有10跟15兩筆資料,但是我現在想縮減 成一個,所以我把他們做平均,得到新資料12.5,此時雖然資料少了一半,但是需要 的位元深度卻增加了,當然我可以直接再砍掉0.5變成12就好,不過顯然這又是一次 失真的來源),此時我們就必須決定,留不留下這些高於16bit的數據.foobar內部的 運算精度是64bit,所以如果我們決定保留的話,foobar是沒有任何問題的,它最高支 援32bit的資料輸出.但是問題會出在你後端的音效裝置,一般的音效卡,他可能只支 援最標準的44.1/16bit,這表示即使您透過foobar send 32bit的資料給音效卡,他 也會自己砍掉後面多出來的16bit,這樣的話,一開始就在foobar的playback那裡設定 成16bit輸出並加上dither會是比較好的方法.再來我們考慮音效卡支援24/96的d/a 解碼,理論上,這時候就應該直接丟32bit資料讓音效卡處理(foobar的dither只能在 16bit以下使用),但是這時候還有一個問題,就是音效卡能讓24bit的資訊發揮多少. 這個部分比較難解釋,比較簡單的說法是,越高精度的d/a解碼,在音響工程上的難度就 越高,這很直關也很好理解,所以即時我們給他send了高精度資料,他也receive了沒問 題,但能發揮多少就是一個很大的問題,所以這時候是不是乾脆先用dither降轉,直接 給他16bit的資料(16bit的解碼一來難度較低 二來技術成熟多了),反而會有更好的效 果也不一定. 所以結論出來了,如果你只聽無損,那dither沒有打開的意義,如果你常聽lossy檔案, 那很可能你要自己玩看看,打開/關掉dither試試.如果聽不出來,那就別開吧,省點運 算資源. 再補充一下,有些音效卡標示著大大的"24/96" "24/192",但是那很多時候是指主I/O 晶片(via的envy24 emu的xxxx等)有支援24/96 24/192的i/o,能不能支援24bit的解碼 還得看他上面的da chip. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.133.78.194
exFREEzy:推 04/21 16:12
exFREEzy:推 04/21 16:12
exFREEzy:推 04/21 16:13
exFREEzy:推 04/21 16:13
exFREEzy:推 04/21 16:13
exFREEzy:推 04/21 16:13
exFREEzy:推 04/21 16:13
exFREEzy:推 04/21 16:13
exFREEzy:推 04/21 16:13
exFREEzy:done ^^ 04/21 16:13