录音/制作/创作 吉他 扩声技术 视频技术 作品展示 生活 信息 更多... | 音频应用专卖店

[教程] 关于Dither/Parallel Dither,以及一些未解问题的思路整理

( 29 )
12
 
[收藏]
-  第 1 页  -

关于Dither/Parallel Dither,以及一些未解问题的思路整理


915
先说明,这篇帖子对你能不能做出好音乐,没有半毛钱关系,所以如果没有兴趣了解的话,直接右上角就好。
因为是我自己一个人研究所写的,不敢保证完全正确,如果有明显错误/或者不太合理的地方,还请各位老师不吝赐教。

写这篇帖子的原因,是为了解答一些之前所遗留的问题,详情来源于这篇帖子:
http://audiobar.cn/forum.php?mod=viewthread&tid=531771

关于这个帖子遗留的问题,因为我自己要是有问题想不明白,就会比较苦恼,想了很久依然不能想出为什么,所以昨天发邮件去请教了母带大师Bob Katz和Ian Shepherd,因为语言的关系,虽然不能详细说清楚遇到的问题细节,但还是得到了一定的回复,理清了思路,现在,我把我所知道的有关Dither的内容在这篇帖子里做一个汇总。
观众反应

915
多图警告,码字码字码字...

以下内容来自我之前写的一篇小文章——抖动处理的作用以及使用时的几个注意事项。


Dither,翻译过来,也就是我们所说的抖动,注意,不是“防抖动”,就仅仅只是“抖动”而已,“防抖动”是门外汉一知半解瞎叫的名称(看了下面Dither的作用,你就知道“防抖动”这种说法的错误了)。

Dither不同于Jitter,Jitter是抖晃,时基抖晃,虽然Jitter中文也是“抖动”的意思,但是为了以示区分,我们把“Dither”称作“抖动”,而把“Jitter”称作“抖晃”。

那么,Dither到底是什么东西呢?
这个问题很复杂,要解答这个问题,还要先说一下Dither的作用,那么,Dither到底有什么作用呢?

本帖最后由 Erilan 于 19-1-21 15:35 编辑


915
Dither的作用就是,能够在降比特(Down Bit)处理之后,依然保留信号(Signal)中本应该被舍弃的低电平(Low Level)信号的信息,比如Reverb Tail(混响尾音)等。
所以,Dither就是能够在降比特处理之后,依然保留信号中的低电平信息的这么一种处理程序。

Dither通过添加随机噪声,从而达到保留低电平信号的目的。
不过需要注意的是,随机噪声并不是白噪声(White Noise)或者粉红噪声(Pink Noise),网上有人把Dither的随机噪声仅仅认为是白噪声,这是不对的;
而且,保留低电平信号的信息也并不是利用了掩蔽效应(Masking Effect),或者说不仅仅是掩蔽效应,它背后其实还隐藏了更加复杂的算法;
不过我们并不需要知道这个算法究竟是怎么回事,就跟我们知道EQ(均衡器)能够调节各个频段的能量,但是我们并不需要知道它到底是怎么实现这个功能的,我们只需要Just Dither It(抖动它)!

那么,说是这么说,Dither是否真的能保留低电平信号呢?
下面,我就带着大家来做一个实验证实一下。

915
先说一下实验的原理,既然说Dither能够保留降比特之后的低电平信号,那么,我们只要在经过Dither处理之后的降比特信号中,找到本应该被舍弃的信号(没有Dither自然肯定是找不到的,因为会被舍弃,请继续看下面的实验,实验也做了没有Dither时的情况),那么我们也就证实了Dither的作用。

我们都知道,24比特(Bit)的动态范围(Dynamic Range)是144 dB(分贝),而16比特的动态范围是96 dB,只要把比特数乘以一个6,就能得到对应的比特深度(Bit Depth)下的动态范围。

这是我们的做实验用的信号处理链路:

下面,我一步一步进行解释,首先是第一个插件(Plugin),Tone Generator,这是一个Studio One自带的信号生成插件,用它来生成测试信号(Test Signal):

我用它生成了-110 dBFS(分贝满量程)的1 kHz(千赫)的正弦波(Sine Wave)测试信号,因为我的工程(Project)是24比特的,而且-110 dBFS的信号,如果我把这个信号不进行Dither处理,而直接从24比特给降比特到16比特的话,它就会丢失。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

915
我们再来看最后一个插件,是Fabfilter Pro-Q 2,它是用来检测的:

可以看到,虽然插件的频谱仪(Frequency Analyzer)显示界面上,并没有显示1 kHz的测试信号,但是这并不是说这个测试信号就不存在,而是因为Fabfilter Pro-Q 2的精度不够,不足以显示-110 dBFS如此低的信号;
但是,我们可以看插件界面右侧电平表(Level Meter)的上面,还是清楚的写着“-110”,也就是说,现在这个-110 dBFS的1 kHz的信号是确实存在着的。

我们再来看第三个插件,是PM-Degradiator,是一个降比特插件,我们就用它,来把信号从24比特降低到16比特:

如上图所示,看左下角,我已经把信号降到了16比特,那么,为了证实一下降比特是否真的会使之前的-110 dBFS的信号丢失,我们再打开Fabfilter Pro-Q 2查看一下:

可以看到,原本显示“-110”的地方,现在显示为“-INF”,也就是说,现在,-110 dBFS的1 kHz的信号真的被舍弃而不存在了。

现在,我们要做的就是,打开第二个插件,是Waves的L2,打开L2的Dither处理功能,接着再打开Fabfilter Pro-Q 2进行查看:

我只是打开了Dither,并且选择了“16 Bits”,其他参数都没动,如上图所示,接着:

这样根本看不出什么,只能看到能量主要集中于10 kHz以上的-70 dBFS左右的噪声,那么此时,我们的第四个插件就派上用场了,这是Studio One自带的Mixtool,我用它来增加电平,让结果能够以肉眼可见的方式显示在Fabfilter Pro-Q 2里:

我用它增益(Gain)了24 dB,接着再来看一下Fabfilter Pro-Q 2:

可以看到1 kHz的小山峰,也就是说,原本应该被舍弃的信号,现在通过Dither而被保留了下来。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

915
PS:上一楼中说到Fabfilter Pro-Q 2的精度不够,不足以显示-110 dBFS如此低的信号,这是我的一个疏忽,其实Fabfilter Pro-Q 2可以切换显示精度的,最高可以显示120 dB的范围,所以也就其实不需要再通过增益让结果能够以肉眼可见的方式显示在Fabfilter Pro-Q 2里,补两张图:


这两张图里面低频的量和前面的不一样,这是因为我更改了“Tilt”的显示设置,不用在意,明白意思就好,这不是重点,重点是存不存在1 kHz的那个小山峰。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

915
到目前为止,我们已经实验证实了Dither的作用,那么我们可以更进一步,做实验的时候,我们是先Dither,再降比特,那么如果先降比特,再Dither还会不会有用呢?

我们更换一下2和3的插件位置:

再查看一下Fabfilter Pro-Q 2:

可以看到,1 kHz的小山峰不见了,也就是说,先降比特再Dither,并不能保留本应被舍弃的低电平的信号。
这个结果其实应该是显而易见的,因为在实际的Mastering(母带处理)中,Dither是最后才插入到信号处理的,而Dither之前是Limiter(限制器),接着我们才把音频(Audio)给导出(Exporting),而降比特就是发生在导出的时候。
Bob Katz对此形象的解释是,马全部在马棚里,你把马棚关上能阻止马跑出去,但是如果马已经跑出去了,你再把马棚关上,还有用吗?
这里把Dither比作了把马棚关上,而把降比特比作了马跑出去。

而作为额外的实验,并且作为上面的实验的补充,而且为了更好的说明Shape(噪声整形)的作用,我又复制了一遍Mixtool,使整个信号又提高了24 dB:

再调节L2的一些设置,参数如下,此时Dither使用的是“Type1”,并没有使用Shape功能:

再查看一下Fabfilter Pro-Q 2:

接着,我调节了一下Shape,再查看一下Fabfilter Pro-Q 2:

接着我再把Shape关掉,并且做了一点EQ处理:

再进行Loudness Match(响度匹配):

可以看到,Shape实际上其实就是对抖动的随机噪声做EQ处理,把人耳比较敏感的2-5 kHz左右的能量移动到了人耳相对十分不敏感的10 kHz以上,这就是Shape的作用。

本帖最后由 Erilan 于 19-1-21 16:27 编辑

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

627
说实话Dither算法得去问那些数学家或者设计硬件的,你问这些母带师说实话…问错人了。
普通的Dither就是白噪,两个白噪加起来/2,功能是避免truncation distortion。
你图上的dither已经不是普通的dither了,而是noise-shaping,这是为了达到dither的目的下,把噪音排到听觉不明显的频段范围里。这样听觉敏感的地方能保留更多的信噪比,微妙地影响最终听觉。

比起拿eq去match,多看几个开源的dither算法就完事儿了。

500
补充一下 Jack 说的内容,Airwindows 有一大票中规中矩的抖动,也有基于抖动做的实验性插件(例如 Dither Me Timbers“你以为我是抖动,其实我是均衡器”这种新鲜玩意;或是最新的 StudioTan)。
http://www.airwindows.com
观众反应

627
Airwindows一些Dither是TPDF减去[-n]的采样,例如PaulDither(Sony Oxford的Paul Frindle推荐的算法);有的是用]Benford's law来判断数字分布,例如Naturalize Dither、NJAD等。
你如果想看Noise-shaping形状,就先把信号降个8-16位,加dither,再把信号升回来。用bitshiftgain无损升降,尽量别用dB为单位的gain插件。Dither不是EQ,虽然dither算法可以达到一定的EQ效果。 本帖最后由 jaganshi 于 19-1-21 18:30 编辑


915
jaganshi 发表于 19-1-21 16:36
说实话Dither算法得去问那些数学家或者设计硬件的,你问这些母带师说实话…问错人了。
普通的Dither就是白 ...

谢谢老师的批评指正。

915
通过这个实验,我们可以得到一些结论:
1.Dither是在信号需要进行降比特的时候使用的,如果不降比特,那就不需要使用;
2.Dither能够保留降比特处理时所舍弃的低电平信号;
3.必须先Dither,再降比特,才能使Dither发挥作用;
4.如果需要使用Dither的话,那么只需要在MasterBuss(主总线)的最后,使用一次Dither即可,无需使用多次;
5.因为Dither加入了随机噪声,所以Dither之前的Limiter的Output(输出)不能设置的太高,否则可能原本不Clipping(爆音/冒红/过载)的信号在经过Dither之后就Clipping了;
6.据Bob Katz所说,降到16比特时使用Dither会比不使用Dither好,而如果是降到24比特的话,使不使用Dither对声音的影响完全听不出来,那是因为最好的设备的动态范围也就大约在120 dB左右,而24比特信号的动态范围是144 dB。

以上,因为Make Snese的关系,我是一个混音师,不是母带工程师,也不是算法编程人员,暂时就先这样了,不知道的人稍微理解一下Dither大概是没问题了,随缘再更,其实以上我的这个看似好像挺合理的实验,但是因为我自己的大意疏忽,却有个非常非常非常严重的Bug,直到zjfsswk这位朋友提出Parallel Dither,接着这几天,我才想明白。
观众反应

915
Ryusa 发表于 19-1-21 16:45
补充一下 Jack 说的内容,Airwindows 有一大票中规中矩的抖动,也有基于抖动做的实验性插件(例如 Dither M ...

感谢您的留言,感谢您的补充。

915
jaganshi 发表于 19-1-21 17:05
Airwindows一些Dither是TPDF减去[-n]的采样,例如PaulDither(Sony Oxford的Paul Frindle推荐的算法);有 ...

搜了半天,看得一懂不懂的,老师你真是太厉害了,赛高!

627
Erilan 发表于 19-1-21 18:38
通过这个实验,我们可以得到一些结论:
1.Dither是在信号需要进行降比特的时候使用的,如果不降比特,那就 ...

差不多。有几点个人有稍微不同的看法。
4,如果制作所有环节一气呵成,或者导出音频为浮点时,仅需在母带环节加个noise-shaping好听的dither,否则每次导出至wav时都需要dither(但不需要noise-shaping)。其实输出至硬件监听或硬件效果器的地方每一轨也都需要加dither。
6,他说的没错,但是加了dither的信号噪音永远比不加dither的要小,所以尽量需要加的地方都加上。Dither加多了的后果仅仅是降低信噪比,但你就算同一个信号过10次dither信噪比也比最昂贵的模拟信号链要强(而且由于是随机信号会经常相互抵消),有些人为了仿模拟信号刻意把(单轨道的)比特率降到16位以下加dither。而你如果不加dither,每次产生的都是6dB的固定失真,这个失真叠加速度比dither快多了。所以大胆地去dither吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

搜索