音响论坛 门户 查看内容

数字音频音质剖析(2)

2009-8-11 09:40| 发布者: | 查看: 6344| 评论: 0

你可能要提出疑问:如何才能正确地将一个20位的数变成一个16位的数呢?有一种方法是丢掉最后的4个最不重要的位(Least Significant Bits,英文简称为LSBs),并且就认为它们是不重要的。实际上这就是直接将低位的数据给截断了。还有一种方法是给我们的16-bit数据中加入随机的噪声数据。这种随机噪声数据采用线性方式,它只对最低位起作用,并且使得声音的变化更加平滑。

现在我们还是用儿童积木来进行类比,则这种操作就好像是我们用手抹了一下积木的边缘。这使得声波的轮廓与采用模拟录音带所录制的声音更加相似。当我们的噪声电平提高时(通常为3到6 dB),低音量的信号就会消失在这种随机的噪声电平信号中,但是不会造成声音音量突变的情况。由于人的听觉对于声音音量的非平滑变化异常敏感,因此量化误差所带来的声音失真其危害性要远大于低电平噪声所带来的失真,可以说,给声音中加入随机噪声数据是一个非常不错的折中方案。甚至我们还可以通过均衡或是滤波处理,对噪声信号的频率进行控制,使它们处于16 kHz以上的频率段,道理是人耳对这一频率段中的声音不十分敏感。

尽管抖动处理工作得已经相当好了,但是,使用更多的bit数来进行量化操作依然是更好的选择。在前面我们曾经提到过,bit数目越多,量化的精度就越高,同时,我们每增加一个bit,就可以使得声音的动态范围提高6 dB。但是你要注意,这并不意味着系统可以回放更大的声音。动态范围增大表示系统对于轻微信号的再现更加真实。当使用16-bit的量化精度时,从最大音量(全码)到音量为零(各个位上均为零)之间的动态范围为96 dB。如果我们增加bit的数目,那么就可以表现出更加轻柔的声音。

因此,如果我们采用20-bit的量化精度,那么动态范围就可以达到120 dB。目前,我们正在试图使用更多的bit来表达这一范围,在16-bit数字音频系统中音量比零电平高6 dB的声音信号在一个20-bit的数字音频系统中就变成了一个比零电平高30 dB的信号,这完全是通过提高量化的bit数目来实现的。如果我们将量化精度提高到24-bit,那么动态范围就将达到144 dB,其结果是提高了系统对低电平信号的分辨率(参见图3)。

— 市场与技术之战

为了使问题复杂化,大多数的音乐设备厂商都在谈及有关量化bit数目的时候,对自己的产品采用各种不同的数据指标。首先,他们通常都要谈论其模/数转换器和数/模转换器的转换深度。然后就是说存储到硬盘或是磁带上的数据所采用的bit数目。通常,他们所采用的规格都不外乎16、20和24-bit几种。但是,这里还隐藏着另外一个问题。任何具有数字化处理能力或是混音功能的设备(例如新型的音频工作站/硬盘机/软件/数字调音台等)都有一个处理深度(processing depth)问题。它表明了当使用音乐设备上的数字信号处理器对声音信号进行处理时所能达到的精度。

好了,我们现在可以搬回家一台全新的24-bit音乐工作站,将一切都调整得恰到好处,这时,我们的心情也会格外舒畅。但是,为什么在这套"24-bit"的音频系统上却只得到了93 dB的动态范围呢?这个问题嘛,它涉及到了技术上的数据与商业广告宣传的区别。有些设备厂商会对它的产品整体的各个部分进行测试,然后将精度最高的部分的数据当作整机的指标来进行宣传。假如一套设备中的转换器和存储单元均是采用16-bit的量化精度,但是它的内部效果处理单元的精度却是32-bit,那么你很可能就要被蒙骗了。

在真实世界中,如果一套数字音频系统内部采用24-bit或是32-bit的处理单元,但是它却是将数据以16-bit的格式来进行存储,那么你所听到的声音精度就将被限制在16-bit上。处理深度是由设备进行均衡、混响、淡入淡出处理时所使用的数字信号处理器的量化精度来决定的。如果你的数字音频系统只能向存储介质上记录16-bit的数据,即使所有的处理都是以24-bit或是32-bit的量化精度来进行的,最终得到的结果依然还是要回到16-bit的水平上,当然你可以通过抖动处理来进行适当的补偿。

当一套数字音频系统通过抖动处理对数据进行优化时,也不可避免要对数据进行舍入。处理的数据越多,这种舍入所带来的危险就越严重。你必须清楚一点,即使只是对声音中的一个频率段进行均衡处理,整个音频数据都要发生变化。这也正是一套采用16-bit进行数据存取的系统中使用24-bit或是32-bit数字信号处理的好处。

你要知道这样一件事情:当使用数字信号处理器对音频数据中的任何一个元素进行处理时,实际上处理芯片都要得到所有的采样点的数值,并在其中增加一些数据或是改变一些数据的值。当使用数字信号处理器进行声像和音量电平的调节这种最为简单的处理时,就属于上面这种情况。为了给电平增加1 dB,数字信号处理芯片需要将所有的采样点数据都乘以1.122018454(这是在24-bit处理精度下的情况,处理时采用的量化精度越高,则这个数在小数点后面的位数就越多)。如果要想将音量电平减低1 dB,则数字信号处理芯片需要将所有的采样点数据都乘以0.8912509383736(数字信号处理芯片不会做除法)。

找来一个计算器,然后随我一起来做这样一个小小的实验:在1到65535(这是16-bit音频系统中的全码)之间随便找一个数。将这个数乘以1.122018454(即增加1 dB),然后再乘以0.8912509383736(即降低1 dB)。于是结果又回到了原来的数。例如,我们选择一个数5,327。给它乘以1.122018454后得到5,976.9923045,然后再乘以0.8912509383736,于是计算结果又回到了5,327。

现在试着这样来做:还是选择我们刚才的那个数5,327,给它乘以1.122018454,于是得到了5,976.9923045。然后我们对它进行舍入处理,只给它在小数点后面留下4位(这就好象是数字信号处理芯片没有足够的量化精度一样),这时结果为5,976.9923。给它再乘以0.8912509383736,得到的结果为5,326.999996,与最初的5,327已经不一样了。(这不禁使我们想起了当年Intel公司不得不为用户更换有问题的计算机芯片,它们是同一个问题,现在知道了吧!)

当然,这种溢出现象在进行单步计算时不会显露出来,只有当连续使用数字信号处理芯片使得误差累计到一定程度时才会显现出来。显然,上面的实验只是一个非常简单例子。我们还没有考虑抖动处理中的情况,但是你对这一点应该是非常清楚的:在数字音频系统内部使用高精度的数字信号处理芯片可以降低计算所带来的误差,采用的bit数目越多,这个误差越小。这也正是目前市场上销售的所有数字音频系统内部都采用高精度的数字信号处理芯片的原因。

(编者按--通过上面的介绍和简单的实验,使得我们对这些问题有了一个非常清楚的认识。当小数点后面的位数过多时,通常的计算器就要进行舍入处理。要注意,我们在进行上面的实验时不能将0.8912509383736舍入成0.8912509,如果这样我们就只能够得到5,326.9994这样的结果了。因此,如果你的计算机位数不够多,那么可以使用计算机来进行计算,或是拿出一张纸,一枝笔,进行手算!无论你是使用什么方法,计算结果都会向你展示出高bit数所带来的优势。)

微信扫码关注公众号