3D音频理论研究(二)---3D全介绍(转)

时间:2024-03-04 14:54:26

作者:it168.com Reny  

一、3D音效
  随着软、硬件的不断发展,传统的双声道单层面立体声音场,已经不能满足人们的需要。为了得到更好的立体感受和空间感受,科学家借助数字化音频生成了一种全新的声音----模拟3D音效。
  日常生活中,我们用两只耳朵来听东西,从各处音源中获得信息,再通过人脑的计算来定位声音。计算机模拟人脑的3D音效计算,通过数字音源播放出来,让我们感到自己处身于虚拟的世界。 
  既然在现实世界中,我们可以用一双耳朵分辨出3D音场,那么仅靠贴近耳朵的两只耳机也能实现近似效果。你可能会问,用两只扬声器也可以吗?答案是否定的,因为扬声器离人耳的距离太远了,在空气中传播时造成了失真,效果绝对没有多扬声器系统那么好,否则各厂商也不会狂推四声道产品。 
  以两个音箱实现的3D音效,对算法有很高要求,但不需要太复杂的硬件。用多音箱达到的3D音效,需要极为昂贵的硬件和复杂的扬声器位置设定,对软件的要求相对较低。 
  二、人类的听觉
  为了更好地说明3D音效对我们的影响,有必要先讲解一下人类的听觉系统。人耳的基本声音定位原理是IID和ITD。IID(Interaural Intensity Difference,两侧声音强度差别)指距离音源较近的哪一边耳朵,所收到的声音强度比另一侧高,感到声音更大一些。ITD(Interaural Time Difference,两侧声音时间延迟差别)指方位的不同,使声音到达两耳的时间有差别,人们会觉得声音位于到达时间早些的那一边,IID+ITD的结果是把音源定位到以听者两耳这间连线为轴线的锥体范围之内。 
  耳廓(外耳)的作用是滤波器,根据声音的不同角度,加强/减弱音波能量,过滤之后传给大脑,让我们更准确地声源的位置。耳廓的大小有限,因此能够收到的音波范围也有限,通常是20Hz到20KHz,即波长16米到1.6厘米的音波。换言之,低于此范围是次声波,高于此范围是超声波。
  由于两耳机的距离约为15厘米(除非你的头特别大),当波长大于15厘米时IIT和ITD将会减弱。频率低的声音波长大,因此我们很难判断出低音的位置,却能轻易分辨高音的方位。实际上,耳廓对于声音的定位,是至关重要的一环,没有外耳的人难以判断声音发出的位置。
  声音波长=音速/频率,假设频率为10 KHz,即每秒振荡10000次,音速定值为330米/秒,波长=330/10000=0.033米=3.3厘米。
  许多时候,我们听到的声音并不是直线进入耳条,而是通过了几次反射才进入大脑。在音波行进的过程中,音波能量会减弱,再加上反射造成的消音和延迟作用,声音已经有了变化,这种反射混合起来的效果称为交互混响。特别是在封闭的环境之中,你会明显感受到声音变轻了。靠着这些变化,我们才能判断出声音是否经过反射,并借以确定周围的环境,甚至能判断出墙的位置和门的开闭。
  模拟3D音效需要还原以上定位效果:IID、ITD、耳廓、反射,并分析不同角度声音发生的变化,通过计算机模拟合成来建立一种虚拟声音系统----数字化音场。
  三、HRTF
  HRTF(Head Related Transfer Function,头部关联传输功能)是一种依靠听到的声音来判断它发出位置的系统。每个人的HRTF都不尽相同,还可以进行交换。如果有一套HRTF能够很好地对声音进行定位,那么此系统也能让位于虚拟世界的你获得同样准确的声音信息。
  HRTF的检测非常简单,先在人的耳道内放置两个微型麦克风,再在听者附近放一个音箱,播放确定的信号,同时记录麦克风收到的信号。比较源信号和麦克风的脉冲特性曲线就可以得到其中一个滤波效果。最后于听者附近的所有位置重复上述过程,即可获取完整的HRTF系统。
  在现实世界中,我们不仅是靠耳朵来获得声音的位置,有时还按照视听协同作用来定位声音。比如我们位于一座房子的正门外面,门是打开的,我们听到正前方有一个音源,即使看不见声音发出的地方,也能轻易地判断声音来自房子里面,视学3D图像系统+心理学运算可产生类似真实世界的3D音效。
  耳朵提醒大脑视觉范围以内的事情,使我们改变注意力,从而转动头部,所以头部运动也对HRTF有影响。由于声音从左/右侧传到正面的时间与头部快速转动90度的时间差不多,因此我们可以用头部转动来确定声音的位置。比如不能判断声音位于前方还是后方时,只须把头部向左或向右转动一些就可以定位了。
  科学家设计出相应的数字信号处理软件和算法,能有效地依据声学和心理学产生的特定滤波效果,实时地运用于即将出现的音频信号上。HRTF的应用非常广泛,包括视像会议、游戏、战斗机座舱警报和空中交通管制。
  四、3D音效的分类
  3D音效的两个最重要因素是定位和交互。定位即让人们准确地判断出声音的来源,可以通过预选录制声音,再进行特定的解码来实现。实时的定位就是交互,声音并非预选录制好的,而是按照你的控制来决定声音的位置。即时生成的交互式声音对输入设备的要求,比预选录制音轨的放音设备(如:电影)要更强一些。
  
  1、Extended Stereo(扩展式立体声)
  
  它使用声音延迟技术对传统的立体声进行额外处理,扩宽了音场的位置,使声音延展到音箱以外的空间,让我们感觉的3D世界更广阔。这是一种被动播放音轨的技术,充其量只能称之为3D定位音效。
  
  2、Surround Sound(环绕立体声)
  
  它采用音频压缩技术(如:杜比AC-3)把多通道音源编码成一段程序,再以一组多扬声器系统来进行解码,实现多区域环绕效果。这也是一种被动播放音轨的技术,最适合于电影播放。另外,环绕立体声的主要工作是编/解码,当然亦能通过特殊的算法,做到两个音箱模拟5个音箱的环绕效果。
  
  3、Interactive 3D Audio(交互式3D音效)
  
  交互式3D尽量地复制了人耳在真实世界中听到的声音,并使用一定的算法来播放出来,让我们感到整个三维空间的所有地方都可能产生声音,并随听者的移动而作出相应改变。它是最接近实际生活的3D音效,通常应用于第一人称3D游戏。
  
  五、微软Direct Sound 3D
  
  3D音效的控制是通过软件来实现的,这些软件称为API(Application Programming Interfaces,应用程序接口),常见的API有:微软Direct Sound 3D、Aureal A3D、Creative EAX、Qsound。
  
  为了让Windows更好地运行各种多媒体程序,微软把DirectX提供给软、硬件发展商和消费者,Direct Sound 3D是其中处理3D音效的那部分。与图形方面的Direct 3D不同,它拥有一定的扩展能力,受到许多厂家的欢迎(D3D因为缺乏扩展而败给了OpenGL)。
  
  DS3D是一个命令集,用特定的运算法则帮助游戏发展商定义声音位置和音量。如果你的声卡不支持DS3D,可以用软件3D引擎来混合立体声,并模拟出3D音效处理,英特尔的RSX和QSound的QMixer就是这类东西,软件处理的最大缺点是占用CPU时间。如果你的声卡支持DS3D,证明它拥有某种运算法则(通常来自Aureal、CRL等),能够在减少使用CPU资源的同时表现3D音场。
  
  由于3D音频流极为珍贵,软件商只会把它用在比较重要的地方(如怪兽的叫声),至于背景音乐一般都是2D音频。最新的游戏支持多条3D音频流,而旧式的显卡只有少数音频流,这会造成玩游戏时声音突然改变。
  
  D音效定位的主要对象是声音源、玩家的位置和方向,在虚拟的3D世界中,软件商无须计算出声音传播的真实速度,只要按照多普勒效应就能模拟出3D音场。程序员会在0、1之间作出选择,0表示无多普勒效应,1表示使用真实的多普勒效应,有时通过此法做出来的音效比真实世界还要好得多。
  
  受到16位音频的限制,我们不可能给游戏中的每一种音效设置音量,因此你会遇到汽车声和人的说话声同样音量的情形。使用DS3D之后,程序员能定义每一种声音的初始音量,如航天飞机的初始音量为300英尺,昆虫的初始音量为1英寸,还能定义声音的距离,距离远的声音小,距离近的声音大。通过音量的控制,亦能模拟出真实世界的声音环境。
  
  音量控制只适用于向所有方向扩散的点音源,对于特定方向的声音来说,仅调节音量是不足够的,只有用圆锥形的声音带(类似IIT+ITD)才能更好地模拟出这类音源,在圆锥形内部音量为最大,在圆锥形外部音量随着距离的增大而减弱。
  
  圆锥音带的真实性比普通的音量控制更高,十分适合制造动态音效。如:在房间的中间设置一个音源,并面向门口,在房间外面(圆锥音带外)无法听到房间内声音,只有经过门口的时候,才会听到声音突然从房间内出现,让人感受到一种互动的效果。
  
  六、Aureal A3D
  
  当微软在96年夏天发布DirectX 3时,并没有给DS3D提供任何硬件加速能力。多媒体应用的急剧发展,促使着3D音效的变革。Aureal再也不能等待微软发布新的DS3D,只好自己开发出一套3D算法----A3D,并提供简单的工具给软件发展商,让他们更容易地制造出支持3D音效的游戏。
  
  那时的A3D拥有DS3D所没有的优点,不仅占用CPU资源少、效果真实,还能发出一些DS3D 3.0不支持的音效,很快地占领了市场。微软的动作一向是慢吞吞的,直到97年秋季推出的DirectX 5才开始兼容3D音频流的硬件加速。
  
  1、与DS3D相比,A3D 1.x的优点有:
  
  1)提供了一个声音资源管理程序给软件发展商,让它们更容易控制3D音频流及声卡。比如:重要的音效使用A3D算法来处理,不主要的背景音乐用立体声混音器来完成,它可以部分改善新游戏音频流多于声卡本身可处理音频流时出现的暂时式失声问题。
  
  现在,新版DirectX 7.0已经在QSound和SenSaura的帮助下实现了类似的功能,并把自身设计成可扩展API。Qsound甚至开发出可供所有声卡使用的SDK(Software Development Kit,软件开发工具包)----QMDX和QMixer。
  
  2)增加了超远距离音效模型,能够模拟多种大气环境,如:雾、水底等。
  
  2、A3D波形追踪和定位
  
  在真实世界之中,有许多音源,它们会互相造成影响。除了声音干扰之外,音波的一部分还会被周围的物体吸收和阻碍。Aureal使用A3D 波形追踪和定位技术来模拟以上效果,常见的应用是舞台和房间内反射音效。波形追踪的实质是造出一个虚拟空间,并依照特定的物体反射来计算出波形,甚至能够模拟出隔壁房间的声音或地毯吸音等真实环境。
  
  
  3、A3D的特点
  
  尽管A3D是最早提出的3D音效标准,但调整声音过滤器的技术是不能完全模拟真实。A3D 2.0增强了声音的定位,添加了反射音效库,并对声音进行实时补偿。它的最大特点,是会即时改变游戏的音量,有时会出现音量忽大忽小的情况。如:当离墙壁的距离不同时,你就能听到A3D 2.0制造出来的声音差异。
  
  EAX(Environmental Audio Extensions,环境音效扩展技术)可以*定制回响音效,如:声音提前反射、延迟回响、音效扩散、失谐比率、声音深度、高频率中止。软件发展商多用EAX来制定大范围空地、墙壁反射等特殊音效,由于它是一个应用接口,很容易就能调用。
  
  对比之下,A3D实时制造出来的3D音场,要比EAX更为真实(实时当然要比预先选定的好啦),因此A3D很适合做3D游戏的标准三维音效,许多著名的射击游戏都宣布支持A3D 2.0,如:Quake 3、Diablo 2。
  
  4、A3D声卡的分类
  
  A3D声卡分为四种类型:模拟型、DSP型、Vortex1和Vortex2。模拟型声卡即所谓的A3D软解压,它可以从DS3D中捕获A3D发出的命令,并生成一个伪造的A3D.DLL文件。并非所有A3D都可以被翻译成DS3D等价命令,模拟常会造成游戏不能发声,如:Descent: FreeSpace。
  
  DSP型是采用可编程DSP芯片来进行A3D硬件解压,如:Diamond Monster Sound、Xitel Storm 3D、Shark Predator 3D,其优点是CPU占用率低。不同厂商的DSP声卡对于音频流的处理各不相同,例:Monster不使用A3D时可处理23个DirectSound 2D音频;如果使用6个A3D音源,剩下的资源只处理4个 2D音频;若是使用8个16位22K A3D音源,将不能处理任何2D音频数据。
  
  Vortex1是Aureal推出的标准A3D声音芯片,可以同时处理8个3D音频流和8个2D音频流,如果不使用3D音频时,能处理48个2D音频流。Vortex1和普通的DSP芯片稍有不同,它会调用部分CPU资源来进行A3D声音渲染,而且不能对2D音频进行硬件加速,不属于可编程DSP,称为半软硬芯片比较合适。
  
  Vortex2是Vortex1的加强型产品,A3D已经无须运行在芯片的小型软件可编程区域,而是采用了一部分硬件来进行纯硬型解压。它能够同时加速16个A3D/DS3D音频流和80个DirectSound 2D音频流,并且不占用太多CPU资源。
  
  尽管Vortex2的处理能力十分强大,由于A3D的波形追踪非常复杂,在开启A3D的同时处理2D音频,亦无可避免地造成性能下降。玩Quake 3时这个变化最为明显,enabled A3D选项会使游戏帧数下降5帧之多。
  
  七、创新EAX
    
  我们听到的声音分为直接声音和反射声音两种:直接声音是由音源直接传到人耳的声音;反射声音是在声音传播过程中遇到障碍物(如墙壁)再反射到我们耳朵中,此种情况也称为occlusion(闭塞)。除非你站消音室中,否则我们平常听到的声音都是同时由直接声音和反射声音组成的,反射音/直接音的比率即湿/干率。
  
  3D场景的形状、尺寸和物质对反射音效起决定性作用,创新利用它制成了环境音效,换言之,EAX亦是一个反射音效引擎。EAX 1.0支持的环境是很有限的,并不能完全反映所有环境的声音,但它可以随时扩展I,2.0就提供了更多的环境。上面已经说过了,A3D本身是直接音效引擎,在2.0中也加入了反射音效,在同一时间内能处理60个反射音波流,可见反射音效是虚拟3D音效发展史上的第二次飞跃。
  
  EAX增强了DS3D的功能,让软件发展商随心所欲地控制各种音效,比如一次性关闭某种音效,测试它对游戏的影响。这在以前是难以想象的事情,今天只须动几下鼠标就能完成。
  
  在EAX游戏中,软件发展商按照玩家的定位、环境、音源距离、湿/干率来决定反射效果,远距离的声音都是由反射组成的。虽然越远的声音湿/干率越高,但比率是由EAX自动计算的,不用人工干预,大大降低了编程的难度。软件发展商通过改变反射时间和湿/干率能够造出许多种不同的环境,无须更改环境的尺寸。
  
  EAX的最大优点是CPU占用率低,在经过创新授权之后,其它公司的声卡也可以兼容EAX。看到这一点,许多厂商开始从Vortex2、Qsound、Sensaura转向EAX阵营,可惜的是,由于各厂商采用的反射引擎各不相同,未必能在低CPU占用率条件下完成反射算法。
  
  我要提醒一下大家,支持EAX的声卡不一定占用CPU频率低,如果没有SBLive!的EMK10K1等强力DSP(Digital Signal Processing,数字信号处理)芯片的配合,仅靠软件去模拟,会极大地拖慢整个系统的性能(同样道理也适用于软解压A3D的声卡)。
  
  某些游戏(Unreal虚幻、Half-Life半条命等)拥有自己的反射引擎,至于EAX是否比这些引擎好,则见仁见智了。除此之外,EAX还能应用于音乐CD、MP3和非EAX游戏,让你无时无刻都可以感受到EAX的魅力。
  
  八、Sensaura
  
  别以为3D音效只有创新EAX和Aureal A3D,Sensaura的历史比它们要长得多,它是在10年前由几个音频设备大厂提出的,多用于专业级音乐,直到最近几年才步向3D音频游戏。依照Mercury的调查,ESS、Yamaha和Cirrus Logic/Crystal Semiconductor等厂商制造的Sensaura系声卡,占PC声音芯片70%以上市场,便宜、效果好和普及率高是它们选择Sensaura的原因。
  
  与Aureal等公司一样,Sensaura在耳机中采用了HRTF(Head Related Transfer Function,头部关联传输功能)技术,而双扬声器系统则应用了十字交错HRTF。最新型的Sensaura MultiDrive可连接四个扬声
  器,前后两个方位同时实现HRTF,ESS已经发布了支持此技术的Canyon 3D芯片。注意,千万不要把扬声器的位置弄错了,否则得到来的声音会变得不伦不类,还不如使用两个扬声器的效果好。
  
  从理论上说,人类不能识别6个以上的音源,8个3D音频流对游戏来说已经是足够的啦。但是为了得到更佳的效果,越来越多游戏厂商开始研制8个音源以上的游戏,比如Unreal就支持16个3D音频流。由于Sensaura可以提供多达成32个声音通道,而且3D内核效率相当高,声音解码比DS3D要更快一些。
  
  这在游戏音效需求日益增加的今天是非常重要的,毕竟8通道音效已经开始难以满足玩家的胃口了。Sensaura提供了一个DS3D声音管理程序给软件发展商,让人们更好地控制3D音频流。
  
  为了得到更多厂商的支持,Sensaura兼容A3D 1.x标准和EAX。不过,它并没有创新Live!或Aureal Vortex2等DSP(Digital Signal Processing,数字信号处理)芯片可用,只能依靠CPU和内存等主机资源来进行软件解码,速度当然比标准的A3D和EAX硬件加速要慢。如果在P2/300上运行EAX解码,约占用2%的资源。除此之外,Sensaura还使用了一个变量切点低通道滤波器来做到封闭/阻碍的反射音效,并支持I3DL2标准。
  
  旧版本Sensaura只能在1米以内实现HRTF,为了改善这种情况,人们又发明了MacroFX技术,可以提供更精确的音量模式。它分为6个区域,0区超远距离和1区远距离模式=DS3D的远距离模式。其它四个区分别是:领近区、左耳区、右耳区和中心区,可以造出低语声、风声(对滑雪、赛车等RAC game十分有用)、耳机模拟、急速飞行的子弹或火箭。
  
  3D音效的实质是时间延迟,不同音源发出的声音进入两只耳朵的时间各不相同,我们就会感到处于虚拟的3D世界之中。假设有一个音源位于2米之前,它将呈85度进入我们的双耳,并且两面的声音有小许差别。大部分音效模型没有表现出这点差别,而MacroFX却做到了,还不需要额外的指令来编程,很容易地达到更佳的声音效果。
  
  DS3D把所有声音都看成是一个点音源,用于表现远处的大型物体是很好的技术。但对于由远至近的物体而言,点音源的不足就会变得很明显。Sensaura采用ZoomFX技术解决了以上问题,顾名思义,Zoom表现的是音效缩放技术,当然可以很好的模拟出诸如火车从远到近的声音。与MacroFX不同的是,ZoomFX必须进行额外的编程才能实现,并且需要3个以上的3D音频流。
  
  支持Sensaura的声卡有:Yamaha 724、ESS Maestor 2/2E、Canyon3D等,虽然它们使用同样的运算法则和滤波库,但不同的DSP和CODEC都会影响到声卡的SNR(Signal to Noise Ratio,信噪比)和失真率。
  
  当前大多数Sensaura仅使用了8个声道,而且MacroFX和ZoomFX都没有得到很好的应用,还不能完全发挥出它的威力。幸运的是,Sensaura是一种纯粹的技术型产品,并不像创新或Aureal那样被市场所限制,因此能够任意地进行革新,把更好的3D音效带给我们,我热切期望在新世纪能看到Sensaura有所表现。
  
  九、Qsound Q3D
  
  与Sensaura一样,Q3D也是相当古老的3D音效API,自从1991年进入市场以来,经过了几次大的变革,进步成为一种十分成熟的3D音效。最近的应用有:Sega DreamCast家用游戏机、VLSI的Thunderbird、Trident的4DWAVE-DX和4DWAVE-NX。Qsound的3D音频技术不仅仅用在声卡领域,还包括iQ和QCreator等专业级软件。其实,它在游戏机方面的应用比PC更为广泛,在许多大型游戏机中你都可以看到Qsound的身影。
  
  Qsound采用了HRTF过滤器技术,用两个喇叭来完成桌面式(Q1)和耳机式(Q2)Q3D定位。Qsound的最大特点是在音乐中加入了HRTF,增强其3D效果,反而对真正游戏的改善不大,尽管如此,QSound的方法对于3D游戏来说还是很有效的,它能够在约5%的低CPU占用率下实现32个3D音频通道,确实不简单。Q3D 2.0拥有反射音效引擎,支持DS3D、EAX和A3D 1.X,以及流行的四声道。
  
  QSurround是Qsound的环绕声分支,能用两/四个音箱做到类似杜比环绕立体声效果,适合DVD影碟播放。
  
  为了打开专业级用户市场,Qsound提供QMDX和QMixer,QMDX是*的软件开发工具包,QMixer让不支持DS3D的声卡使用Q3D,更厉害的是,这两款软件还支持EAX,能在非EAX声卡上用软件模拟EAX。
  
  Qsound的三个音效技术是QXpander、QMSS和2D-to-3D重映射。QXpander增强了音频的处理,把混音变成3D音效(QX),用两个扬声器实现的称为QX,用耳机实现的称为Q2X。QXpander并非真正的交互式3D音效,不能直接支持游戏,只是加宽和加深了音场(特别是音乐的音场),充其量是扩展式立体声,不过,在播放音乐CD、MIDI、WAV、DVD影像文件时,你就能够感受到它的好处。
  
  QXpander的配套软件有iQ、iQfx和UltraQ,iQ可以把QXpander技术加到大部分声音上,包括视窗系统声音、MP3文件和Real Player。iQ暂时还不支持音乐CD和MIDI文件,这是个极大的遗憾。随着AC-97规格和新MIDI标准的出现,相信Qsound很快会补足这个缺陷。iQfx是iQ的特别版本,它集成了Real-Audio播放器和低音推进技术。UltraQ用于连接分离的混音输出设备(功放),提供额外的阔音场效果。
  
  当你使用4个扬声器时,就要动用到QMSS,它可以把前置扬声器的信息复制到后置扬声器,但不包括反射特效。
  
  如果想把QXpander用在直接音效游戏上,必须通过2D-to-3D重映射才能做到。为了单独定位单声道音频流(2D),混合平面数据并映射到一个宽度可变的3D方位上,就叫2D-to-3D重映射。它是对QXpander的强力补充,所有Q3D引擎都支持此技术。
  
  最新的Q3D 2.0声卡支持耳机、双扬声器、四扬声器和QEM(Qsound Environmental Modeling,Qsound环境建模扬声器组),简单地说Q3D 2= Q3D + QEM 1.0。另外,它还拥有高品质采样率和插值,其速度也比1.0要快。现己采用Q3D 2.0的声卡有:Trident 4DWAVE-DX/NX和VLSIThunderbird 128。