作者louis0407 (RH)
看板AudioPlayer
标题Re: [讨论] Dither (in数位音讯)
时间Wed Apr 2 10:54:21 2008
※ 引述《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
1F:推 exFREEzy:推 04/21 16:12
2F:推 exFREEzy:推 04/21 16:12
3F:推 exFREEzy:推 04/21 16:13
4F:推 exFREEzy:推 04/21 16:13
5F:推 exFREEzy:推 04/21 16:13
6F:推 exFREEzy:推 04/21 16:13
7F:推 exFREEzy:推 04/21 16:13
8F:推 exFREEzy:推 04/21 16:13
9F:推 exFREEzy:推 04/21 16:13
10F:推 exFREEzy:done ^^ 04/21 16:13