论文部分内容阅读
欧阳轩辕/编译
动态范围
正确的增益设置
使用得当的工具
关键词:
DSP(数字信号处理器)
floating point(浮点)
fixed potnt(定点)
double-precision (双精度)
前言
骗子总是会反复地说大话来夸大他们的产品。对于音频软件行业来说,最近的“大话”莫过于是浮点数字信号处理器(fIoattng-pointDSPs)要比定点数字信号处理器(fixed-pointDSPs)好,而你们所学的并非是这样。我们来看看在数字信号处理器上市以来,你为什么投入了那么多却收获得很少。
当前对于DSP内部的主题,在音频业存在许多混淆的事物与说辞。下面是一段有欺骗性的广告宣传“在别人的产品使用24位定点DSP芯片的时候,我们的产品已经在使用32位浮点DSP芯片了。很明显,32位要好过24位。”如果你不知道事实的话,好象看起来确实是那样。他们向用户隐瞒了一个事实-24位定点DSP产品可以在“双精度”的模式下操作,从而成为48位的产品。48位就要强过32位了,在位数上超出了一些。对于当今这个音频时代来说,定点比浮点的能力更加强大。可能不会是永远,至少现在是这样。
下面是对“为什么定点DSP有利于表现出众的音频”的原因概括:
1、较小的动态范围(DsP应用到音频方面,动态确实是这个的特点)
2、双精度48位处理能力
3、可以保证在音频信号持续出现问题的时候,还具有良好的灵活性。
4、较低的功耗《浮点硬件比定点硬件复杂的多:较多的晶体管需要更大的功率》
除了上述这些,我们再来回顾一些事情。
对DSP算法真实客观地比对并不容易,实际上,那都不太可能。最终,程序员软件编程技巧的好坏成了决定能否做出好音乐的主要因素。但是人们并不想听到这些。他们想要简单的回答。每个人都在找寻这其中的奥秘,可以区分出不同的数字比对。事实上,没有单独的数字来给这些区别做一个量化。不是位数,也不是每秒百万条指令数、或是浮点八进制速率、时钟速率、算法等等。
这两种截然不同DSP支配着专业音频软件:一种使用浮点方案,另一种使用定点处理。它们都是多种环境下的产物;然而,这个“多种”却使它们彼此之间有着很多的不同之处。
查询了电气和电子工程师学会的32位浮点处理器和24位定点处理器的规格,我们知道了这两种DSP设计都提出了相同的24位处理精度一精度不是主题。它们之间的不同就在于定点可以提供双精度模式,而浮点设备可以增加动态范围。以浮点处理器的缩放数据来增加动态范围,但缩放数据无法提高精度。实际上,这对于音频软件来说是降低了性能(后面我们会详细讨论)。而定点处理方法的实力所在就是对于浮点缺陷来说的双精度了。
最明显的表现就在于对音频低频的处理。位于音频低频段的地方有很多的能量。浮点技术对于低频的计算更趋向于产生较大的振幅。而无论你用什么方法,使用高Q(品质因数,均衡作用带宽)值的低频数字滤波是比较困难的。而在这个方面,定点双精度的能力就远超了浮点单精度。
从科学工程的角度来彻底解释,两种技术的优缺点和宽带音频应用软件紧密相关,这是非常复杂的概念,也超出了本文的技术范围。
动态范围
较高的动态范围是好还是坏呢?就如同较低的失真和较低的噪声是好的一样。我们会想起hi-fi(高保真)制造商的销售指南。这个指南用了“较低的是好的”以及“较高的是好的”来描述产品规格。听到音频制造商宣称“较高的动态范围会是个问题”,也许但是,在对现今的DSP音频信号处理器进行32位浮点处理器的超高动态范围能力测试的时候,人们发现这确实是个问题。
我们前面提到,这两种DSP设计对于主流功能来说,它们都是24位处理器。定点技术添加了双精度从而达到了48位的处理能力,而浮点设计只是添加了8位指数。这8位指数使浮点算法拥有惊人的1500dB动态范围规格(8位=256,2的256次方就近似等于1500dB),而它的核心仍然是24位的。浮点处理器会自动测定数据以维持在适度的范围。这就是它的弊病所在了。因此,定点对于音频来说要好过浮点。这不仅仅是动态范围成了问题,在1500dB范围之上的自动测定也成了问题。有了48位的处理能力,定点也就有了288dB的动态范围,这对于表现出众的音频来说已经足够了,但是编程器还是要仔细测定数据。浮点编程器会把它推给芯片,如果它们不够认真,会产生严重的错误和人造噪声。跳跃地对连续信号提升以及衰减都会产生讨厌的噪声泵吸(pumpfng)。
新的骗子们鼓吹它们的DSP动态范围,但那只能暴露它们的缺点。DSP芯片的动态范围规格对于整个产品的动态范围来说是很小的。box的动态范围是由它输入的模/数转换器以及输出的数/模转换器(即使没有转换器,两种DSP的输出都是24位定点字)所限定的,DSP芯片在整个处理过程中,只是一部分。DSP芯片的动态范围指的是可处理的最大和最小数字的比率。如果一台DSP设备在广告中宣称在输出转换器和输出转换器之间拥有1500dB的动态范围,而总的动态范围就被限定在转换器的动态范围之内了。这是不好的吗?不,这不在于它自身。
拥有1500dB动态范围的浮点处理器的缺点在于它是基于待处理信号的振幅来测定处理范围的,但是在处理不同振幅信号(比如:实时音频)的时候,对于混缩结果来说,测定可能无法被优化。在处理音频信号时,安装器无法简单地忽略系统设置的微秒所在,因为在他们使用的是浮点处理器。
考虑到典型的音频混音器情形任何时候,混音器都是在它的多个输入端口上表现出多个不同的电平。在输入2的电平相对较低的时候,输入1对于处理来说,电平却过高,而输入3的电平在它们中间的位置,等等情形。32位浮点DSP芯片会对对此以基于采样的工作方式来做出判断,但最终它还是会以相同的24位运算方式来表现这些参数。即使是在一个简单的双通道立体声处理器中,当平均电平非常相似时,由于声音相位的不同,通道间的信号电平还是会在瞬间发生巨大的变化。
在音频软件中使用浮点设备什么都得不到,除了很多可能的损失。它没有定点方案中48位双精度的能力,还会向音频中添加更多的人造噪声。
正确设置增益的重要性
只要我们在转换器和DSP处理器上所拥有的精度和动态范围是有限的,设置器对于保持正确的处理队列就有着绝对重要的作用。不正确的设置增益结构能够使定点处理器数据溢出。浮点数字信号处理器在不产生大量内部削波的情况下,它给系统(大多也是内部 增益)的错误调节创造了机会,同时就出现了他们所不希望看到的队列错误(比如,试图将电平大不相同的两轨混合起来)的结果,而浮点处理器却无法修复这个错误。他们只能通过设置器的查看来隐藏问题。或者更糟的是,当滤波器用在100Hz之下的时候,会产生可听且烦人的量化噪声。在这个方面,定点处理器会强制设置器通过避免内部削波来保持144dB的处理进程,而这些都是依靠正确的增益结构/配置来做到的,所以定点比浮点更容易保持音频总体的音质。
双精度
在处理时间较长的量时,双精度48位处理就可以派上用场了。尤其是使用低频滤波器以及让压缩器、扩展器、以及限制器工作在相对较低的启动和释放时间的设置之下的时候,这就更需要它了。如果需要更高的处理精度,而仅有24位可用,就会出问题了。功能的低劣以及破坏性的处理都会令音质受损。低劣的DSP交叉淡入淡出会损坏放大器和扬声器,所以双精度是超级音频的首选。
实例和反例
浮点的追捧者们喜欢使用一个例子,那就是处理器可以对输入通道进行60dB的衰减以及对输出通道进行60dB的增益补偿。先把这个虚构例子的谬论放在一边,用它来说明我们的定点是好的一向第二个输入添加这个例子,统一设置增益,0dB信号输入,将这些通道的信号通过处理器加合到总输出上,听一下结果一一你不会喜欢的。
另一个现成的实例就是你永远都听不到浮点广告中提到的低频/高Q值滤波器的表现。下次你有机会的话,设置一个浮点运算参数滤波器来使用,就如同一个凹槽滤器那样,使用50Hz的中心频率,20的Q值,先听一下在输出噪声上的增加。现在在输入运行一个扫频器,频率从20Hz到100Hz,聆听所有让人没食欲的声音,那就是结果。在100Hz之下的音频滤波器需要同时处理大数字和小数字一一定点DSP比浮点DSP在这个方面表现得就更好。
给开发者自由的空间
(free the developers)
对于音频DSP来说,真正的音质决定者是程序员。他们必须建议并设计准确有效的算法;他们对数学理解得越好,得出的算法就越优秀:算法越优秀,音质就越出众。定点处理给开发者带来了一定的负担,它也带来了等量的灵活度。一个掌握DSP产品到底需要什么而有天赋的工程师能够把功能的每个细节分配到所有位上。这和浮点设计并不相同。浮点在工程天赋达到限度的时候,会给编程带来比较诱人的易用性,但这不是最好的选择。一方面,它比较容易被编程,而另一方面,它很少可以控制到最终的结果。众所周知,那最终的结果对我们来说是多么重要。
使用合适的工具
如果定点DSP设备那么好,那浮点DSP的存在还有什么意义呢?问得很直接。它们是因为DSP广泛应用的领域不同而共同存在的。大部分的浮点应用程序都是应用在物理学、化学、气象学、流体动力学、图形识别、地震建模、数字理论、碰撞模拟、天气建模以及3D图形领域的。如果你正在设计一款图形处理器、雷达处理器、宇航设备或是数学矩阵转换器,你的最佳选择就是浮点方案。所以这些都是依应用程序的需求而定。
浮点DSP也并非是永远都无缘超级音频,只是现在无法达到。那它的未来会怎样7这里列举一些浮点赶超定点必要性的假设:如果它是56位浮点处理器(比如:48位相加尾数,8位指数位)或者双精度的32位处理器,如果它能和定点工作在相同的速度之下,如果它们的功耗相同,如果它们的造价相同。那么我们会选择的。
如果浮点DSP发展到对于同等价格(在固件上足以克服低频,高Q值问题)能够提供更为强大的处理能力,还能提供对外围芯片设备的兼容,这样才能在音频领域有所作为。
更进一步的研究
数字音频在实现出众的信号处理时,需要大量复杂的计算。我们仅仅是很少的触及了一些重要的主题。只选择一本书就可以对你更深入的研究数字音频有所帮助。John Watkinson的The Art of DigitaI Audio(数字音频的艺术)第三版(ISBN 0-240-51 587-0,英格兰牛津,2001年)。你可以找到的最好的参考书。
图一
图二
动态范围
正确的增益设置
使用得当的工具
关键词:
DSP(数字信号处理器)
floating point(浮点)
fixed potnt(定点)
double-precision (双精度)
前言
骗子总是会反复地说大话来夸大他们的产品。对于音频软件行业来说,最近的“大话”莫过于是浮点数字信号处理器(fIoattng-pointDSPs)要比定点数字信号处理器(fixed-pointDSPs)好,而你们所学的并非是这样。我们来看看在数字信号处理器上市以来,你为什么投入了那么多却收获得很少。
当前对于DSP内部的主题,在音频业存在许多混淆的事物与说辞。下面是一段有欺骗性的广告宣传“在别人的产品使用24位定点DSP芯片的时候,我们的产品已经在使用32位浮点DSP芯片了。很明显,32位要好过24位。”如果你不知道事实的话,好象看起来确实是那样。他们向用户隐瞒了一个事实-24位定点DSP产品可以在“双精度”的模式下操作,从而成为48位的产品。48位就要强过32位了,在位数上超出了一些。对于当今这个音频时代来说,定点比浮点的能力更加强大。可能不会是永远,至少现在是这样。
下面是对“为什么定点DSP有利于表现出众的音频”的原因概括:
1、较小的动态范围(DsP应用到音频方面,动态确实是这个的特点)
2、双精度48位处理能力
3、可以保证在音频信号持续出现问题的时候,还具有良好的灵活性。
4、较低的功耗《浮点硬件比定点硬件复杂的多:较多的晶体管需要更大的功率》
除了上述这些,我们再来回顾一些事情。
对DSP算法真实客观地比对并不容易,实际上,那都不太可能。最终,程序员软件编程技巧的好坏成了决定能否做出好音乐的主要因素。但是人们并不想听到这些。他们想要简单的回答。每个人都在找寻这其中的奥秘,可以区分出不同的数字比对。事实上,没有单独的数字来给这些区别做一个量化。不是位数,也不是每秒百万条指令数、或是浮点八进制速率、时钟速率、算法等等。
这两种截然不同DSP支配着专业音频软件:一种使用浮点方案,另一种使用定点处理。它们都是多种环境下的产物;然而,这个“多种”却使它们彼此之间有着很多的不同之处。
查询了电气和电子工程师学会的32位浮点处理器和24位定点处理器的规格,我们知道了这两种DSP设计都提出了相同的24位处理精度一精度不是主题。它们之间的不同就在于定点可以提供双精度模式,而浮点设备可以增加动态范围。以浮点处理器的缩放数据来增加动态范围,但缩放数据无法提高精度。实际上,这对于音频软件来说是降低了性能(后面我们会详细讨论)。而定点处理方法的实力所在就是对于浮点缺陷来说的双精度了。
最明显的表现就在于对音频低频的处理。位于音频低频段的地方有很多的能量。浮点技术对于低频的计算更趋向于产生较大的振幅。而无论你用什么方法,使用高Q(品质因数,均衡作用带宽)值的低频数字滤波是比较困难的。而在这个方面,定点双精度的能力就远超了浮点单精度。
从科学工程的角度来彻底解释,两种技术的优缺点和宽带音频应用软件紧密相关,这是非常复杂的概念,也超出了本文的技术范围。
动态范围
较高的动态范围是好还是坏呢?就如同较低的失真和较低的噪声是好的一样。我们会想起hi-fi(高保真)制造商的销售指南。这个指南用了“较低的是好的”以及“较高的是好的”来描述产品规格。听到音频制造商宣称“较高的动态范围会是个问题”,也许但是,在对现今的DSP音频信号处理器进行32位浮点处理器的超高动态范围能力测试的时候,人们发现这确实是个问题。
我们前面提到,这两种DSP设计对于主流功能来说,它们都是24位处理器。定点技术添加了双精度从而达到了48位的处理能力,而浮点设计只是添加了8位指数。这8位指数使浮点算法拥有惊人的1500dB动态范围规格(8位=256,2的256次方就近似等于1500dB),而它的核心仍然是24位的。浮点处理器会自动测定数据以维持在适度的范围。这就是它的弊病所在了。因此,定点对于音频来说要好过浮点。这不仅仅是动态范围成了问题,在1500dB范围之上的自动测定也成了问题。有了48位的处理能力,定点也就有了288dB的动态范围,这对于表现出众的音频来说已经足够了,但是编程器还是要仔细测定数据。浮点编程器会把它推给芯片,如果它们不够认真,会产生严重的错误和人造噪声。跳跃地对连续信号提升以及衰减都会产生讨厌的噪声泵吸(pumpfng)。
新的骗子们鼓吹它们的DSP动态范围,但那只能暴露它们的缺点。DSP芯片的动态范围规格对于整个产品的动态范围来说是很小的。box的动态范围是由它输入的模/数转换器以及输出的数/模转换器(即使没有转换器,两种DSP的输出都是24位定点字)所限定的,DSP芯片在整个处理过程中,只是一部分。DSP芯片的动态范围指的是可处理的最大和最小数字的比率。如果一台DSP设备在广告中宣称在输出转换器和输出转换器之间拥有1500dB的动态范围,而总的动态范围就被限定在转换器的动态范围之内了。这是不好的吗?不,这不在于它自身。
拥有1500dB动态范围的浮点处理器的缺点在于它是基于待处理信号的振幅来测定处理范围的,但是在处理不同振幅信号(比如:实时音频)的时候,对于混缩结果来说,测定可能无法被优化。在处理音频信号时,安装器无法简单地忽略系统设置的微秒所在,因为在他们使用的是浮点处理器。
考虑到典型的音频混音器情形任何时候,混音器都是在它的多个输入端口上表现出多个不同的电平。在输入2的电平相对较低的时候,输入1对于处理来说,电平却过高,而输入3的电平在它们中间的位置,等等情形。32位浮点DSP芯片会对对此以基于采样的工作方式来做出判断,但最终它还是会以相同的24位运算方式来表现这些参数。即使是在一个简单的双通道立体声处理器中,当平均电平非常相似时,由于声音相位的不同,通道间的信号电平还是会在瞬间发生巨大的变化。
在音频软件中使用浮点设备什么都得不到,除了很多可能的损失。它没有定点方案中48位双精度的能力,还会向音频中添加更多的人造噪声。
正确设置增益的重要性
只要我们在转换器和DSP处理器上所拥有的精度和动态范围是有限的,设置器对于保持正确的处理队列就有着绝对重要的作用。不正确的设置增益结构能够使定点处理器数据溢出。浮点数字信号处理器在不产生大量内部削波的情况下,它给系统(大多也是内部 增益)的错误调节创造了机会,同时就出现了他们所不希望看到的队列错误(比如,试图将电平大不相同的两轨混合起来)的结果,而浮点处理器却无法修复这个错误。他们只能通过设置器的查看来隐藏问题。或者更糟的是,当滤波器用在100Hz之下的时候,会产生可听且烦人的量化噪声。在这个方面,定点处理器会强制设置器通过避免内部削波来保持144dB的处理进程,而这些都是依靠正确的增益结构/配置来做到的,所以定点比浮点更容易保持音频总体的音质。
双精度
在处理时间较长的量时,双精度48位处理就可以派上用场了。尤其是使用低频滤波器以及让压缩器、扩展器、以及限制器工作在相对较低的启动和释放时间的设置之下的时候,这就更需要它了。如果需要更高的处理精度,而仅有24位可用,就会出问题了。功能的低劣以及破坏性的处理都会令音质受损。低劣的DSP交叉淡入淡出会损坏放大器和扬声器,所以双精度是超级音频的首选。
实例和反例
浮点的追捧者们喜欢使用一个例子,那就是处理器可以对输入通道进行60dB的衰减以及对输出通道进行60dB的增益补偿。先把这个虚构例子的谬论放在一边,用它来说明我们的定点是好的一向第二个输入添加这个例子,统一设置增益,0dB信号输入,将这些通道的信号通过处理器加合到总输出上,听一下结果一一你不会喜欢的。
另一个现成的实例就是你永远都听不到浮点广告中提到的低频/高Q值滤波器的表现。下次你有机会的话,设置一个浮点运算参数滤波器来使用,就如同一个凹槽滤器那样,使用50Hz的中心频率,20的Q值,先听一下在输出噪声上的增加。现在在输入运行一个扫频器,频率从20Hz到100Hz,聆听所有让人没食欲的声音,那就是结果。在100Hz之下的音频滤波器需要同时处理大数字和小数字一一定点DSP比浮点DSP在这个方面表现得就更好。
给开发者自由的空间
(free the developers)
对于音频DSP来说,真正的音质决定者是程序员。他们必须建议并设计准确有效的算法;他们对数学理解得越好,得出的算法就越优秀:算法越优秀,音质就越出众。定点处理给开发者带来了一定的负担,它也带来了等量的灵活度。一个掌握DSP产品到底需要什么而有天赋的工程师能够把功能的每个细节分配到所有位上。这和浮点设计并不相同。浮点在工程天赋达到限度的时候,会给编程带来比较诱人的易用性,但这不是最好的选择。一方面,它比较容易被编程,而另一方面,它很少可以控制到最终的结果。众所周知,那最终的结果对我们来说是多么重要。
使用合适的工具
如果定点DSP设备那么好,那浮点DSP的存在还有什么意义呢?问得很直接。它们是因为DSP广泛应用的领域不同而共同存在的。大部分的浮点应用程序都是应用在物理学、化学、气象学、流体动力学、图形识别、地震建模、数字理论、碰撞模拟、天气建模以及3D图形领域的。如果你正在设计一款图形处理器、雷达处理器、宇航设备或是数学矩阵转换器,你的最佳选择就是浮点方案。所以这些都是依应用程序的需求而定。
浮点DSP也并非是永远都无缘超级音频,只是现在无法达到。那它的未来会怎样7这里列举一些浮点赶超定点必要性的假设:如果它是56位浮点处理器(比如:48位相加尾数,8位指数位)或者双精度的32位处理器,如果它能和定点工作在相同的速度之下,如果它们的功耗相同,如果它们的造价相同。那么我们会选择的。
如果浮点DSP发展到对于同等价格(在固件上足以克服低频,高Q值问题)能够提供更为强大的处理能力,还能提供对外围芯片设备的兼容,这样才能在音频领域有所作为。
更进一步的研究
数字音频在实现出众的信号处理时,需要大量复杂的计算。我们仅仅是很少的触及了一些重要的主题。只选择一本书就可以对你更深入的研究数字音频有所帮助。John Watkinson的The Art of DigitaI Audio(数字音频的艺术)第三版(ISBN 0-240-51 587-0,英格兰牛津,2001年)。你可以找到的最好的参考书。
图一
图二