XAudio2技术在地铁列车驾驶模拟器中的应用
2011-03-21钱雪军
陈 嘉 钱雪军 朱 鸣 姚 军
(1.同济大学电气工程系,200092,上海;2.上海申通地铁集团有限公司轨道交通培训中心,201102,上海∥第一作者,硕士研究生)
XAudio2技术在地铁列车驾驶模拟器中的应用
陈 嘉1钱雪军1朱 鸣2姚 军2
(1.同济大学电气工程系,200092,上海;2.上海申通地铁集团有限公司轨道交通培训中心,201102,上海∥第一作者,硕士研究生)
为了使受训学员在地铁列车驾驶模拟器上获得逼真的听觉效果,需要对列车驾驶室中听到的各种声音进行模拟仿真。在分析列车驾驶模拟器声音的种类及特点的基础上,把模拟驾驶器中的声音分为无方位的声音和3D立体声进行研究。提出了采用微软最新DirectX组件中的XAduio2技术来实现声音的仿真。仿真得到的声音效果能够使受训学员听觉上产生强烈的沉浸感。
XAduio2技术;地铁列车驾驶模拟器;声音仿真
First-author's addressDepartment of Electrical Engineering,Tongji University,200092,Shanghai,China
地铁列车驾驶模拟器仿真系统要求对真实系统进行尽可能真实的仿真,不仅要在整个驾驶过程中给受训学员提供逼真的视觉、力感,而且要有逼真的音响效果。逼真的音响效果可以使受训学员产生身临其境的感觉,增加系统的沉浸感。因此,对地铁列车驾驶模拟器声音的仿真研究具有重要的意义。
1 地铁列车驾驶模拟器声音仿真系统简介
地铁列车驾驶模拟器由驾驶室操纵台、控制仿真系统、视景仿真系统、声音仿真系统等几个主要部分组成。地铁列车实际运行时会产生各种声音,包括轮轨噪声、变频器噪声、桥隧噪声、电器动作噪声,以及空气制动、鸣笛、会车和调车连挂所引起的噪声等。这些都是声音仿真系统需要模拟的对象。
在驾驶模拟器中,声音信息一方面可以为视景仿真系统实时伴音,使视觉和听觉相互叠加;另一方面3D声音信息可以补充由于视野的局限而接收不到的信息。如起雾时从远方相向驶来的列车发出的声音可以使驾驶员准确判断前方的状况。因此,在地铁列车驾驶模拟器中,逼真的声音仿真能增强驾驶员在虚拟驾车环境中的沉浸感。
目前,国内地铁列车驾驶模拟器的声音仿真一般使用微软DirectX中的DirectSound组件来实现。从DirectX 9.0版本以后,微软未对DirectSound进行重大更改,而在其后的DirectX 10.1版本中推出了它的替代音频 API(应用程序编程接口)——XAudio2。XAudio2在3D声音以及环绕声音上较DirectSound有很大的改进,可单独为每个扬声器设置音量。例如:配置5.1声道或7.1声道音响各个扬声器的声音;在程序中可以仅设置其中一个扬声器的音量,也可分别计算出每个扬声器所要产生的音量。在新版的DirectX中,XAudio2主要用来进行音频的信号处理,而三维空间的声音定位任务则由另一个音频API——X3DAudio来实现。这样的搭配使得3D音效的编程变得更加灵活而方便。
2 声音仿真的重要概念
2.1 声音定位原理
在真实环境中,人们感知声音在空间中的位置由许多因素决定。其中声源所提供的位置因素有:
(1)总体响度。一般来说,响度是决定聆听者主观距离感的最重要因素。当一个声源离开聆听者时,聆听者听到的音量将随着声源的远离而减小。
(2)耳间听觉强度差。若声源在聆听者右边,则其右耳听到的声音比左耳要大。
(3)两耳听觉时间差。从位于聆听者右侧声源发出的声音,到达右耳的时间比到达左耳要短一点。这个偏差一般为毫秒级。
(4)衰减。由于耳朵的形状和位置,使得从聆听者身后传来的声音比聆听者前面传来的声音更低沉一些。此外,如果声源从聆听者右边传来,则传递到左耳的声音很大一部分会被聆听者的头部衰减掉。
(5)耳廓作用。由于耳廓的特殊构造,使得从不同方向传来的声音到达耳膜的时间产生了微小变化。这种效应的数学模型被称作头部相关传递函数。
2.2 声音锥
无方向的声音对同一距离的任意方向都有相同的振幅,而有方向的声音则只在它所指向的方向振幅最大。描述这种现象的声音模型称为声音锥。声音锥由声音内锥和声音外锥构成,且外锥角度必须始终大于等于内锥角度,如图1所示。
图1 声音锥示意图
当聆听者处于声音内锥时,考虑到声音缓冲区的基本音量、与声源的距离以及方向等因素,此时聆听者接收到的音量就等于声音内锥的音量。当聆听者位于声音外锥半径之外时,所接收到的音量是线性变化的,它的取值可以从0.0f(f表示浮点数)到2.0f。声音外锥音量1.0f代表声音无衰减,0.5f代表声音衰减了6 dB,0.0f则代表声音完全消失了。在声音锥的内锥和外锥之间是一个过渡带。聆听者接收到的音量从声音内锥过渡到声音外锥时将逐渐减小。
2.3 声音的多普勒效应
声波是通过传播介质发送给聆听者的。如果声波波源相对于聆听者位置固定,则聆听者接收到的声波频率与波源的频率相同。如果波源与聆听者有相对运动,聆听者检测到的频率就与实际波源频率有差异。频率差的大小取决于双方的相对运动速度。这种因为波源和聆听者中之一或两者以不同速度相对于传播介质运动,使聆听者所接收到的声波频率高于或低于波源的振动频率的现象称为声音的多普勒效应。
3 XAudio2组件介绍
XAudio2作为微软新推出的DirectX的一个音频组件,是一个底层的、跨越Windows和Xbox 360硬件平台的音频API。它与之前Windows平台下的DirectSound音频接口和Xbox平台下的XAudio音频接口一样,为游戏开发提供了强大的信号处理与混音的功能。XAudio2为Windows和Xbox 360开发者提供了“写一次代码,编译两次”的优秀解决方案,大大减少了游戏开发人员跨平台修改代码的工作量。
3.1 XAudio2的特点
XAudio2与Windows平台下的DirectX音频组件DirectSound相比,有以下优点:
(1)可编程的数字信号处理(DSP)效果以及单个语音滤波效果。DSP效果是音频处理的核心部分,它使用混响和闭塞/阻塞滤波效果来处理声音,并对声音在游戏环境中进行定位。XAudio2提供了一个强大而灵活的DSP框架,同时还为每个声音提供了内置的滤波器,以达到高效滤波的效果
(2)次混音效果。次混音就是把几个声音混合成一个单一的音频流。可使用XAudio2的次混音效果来处理、合并游戏中类似的音频部分。例如,所有的游戏音效部分可以合并起来,并允许用户调节音量,而游戏音乐部分的音量也可以单独调节。XAudio2允许任意层次的次混音,能够创造出复杂的声音以及游戏混音。
(3)支持压缩音频格式。XAudio2支持压缩音频格式,在Windows中支持ADPCM 和xWMA压缩格式。
(4)增强的多通道和环绕立体声效果。XAudio2进一步增强了Windows对多声道、3D声音以及环绕声的支持。XAudio2取消了以往只支持6声道的限制,支持任意具有多声道功能的声卡,且该卡不需要硬件加速。在Windows平台中,3D声音和环绕声更加灵活和透明。
(5)多采样率处理。为了最大限度地减少CPU的使用率,XAudio2提供了创建多个低速率音频处理的技术。如果音频频率低于48 kHz,则允许以声音的原始频率来进行处理,这样可以显著地降低CPU的使用率。
(6)非阻塞API模型。除了极个别例外,XAudio2的调用方法不会阻塞音频处理引擎。这意味着开发人员可以放心调用XAudio2的方法,不用担心因为其它正在运行的XAudio2方法造成音频处理引擎阻塞。
3.2 XAudio2相关概念
XAudio2组件中共有源声音、次混音声音、主混音声音等三种类型的声音,XAuio2通过它们来处理、操作和播放音频数据。
源声音:代表音频数据流,并发送数据给其他类型的声音。
次混音声音:其职能是对接收到的音频数据进行操作,如进行音频采样率转换。当次混音声音处理完数据后,将数据传递给另一个次混音声音或者主混音声音。
主混音声音:接收从源声音和次混音声音传递过来的数据,并把音频数据发送给音频硬件。
音频图是XAudio2声音的一个集合。声音数据从音频图中的源声音开始,可以选择经过一个或多个次混音声音,最后发送到主混音声音,由主混音声音把音频数据发送给音频硬件处理。音频图包含每个正在播放的源声音,零个或多个次混音声音,一个主混音声音。图2是一个简单的音频图示意图。
图2 简单的音频图示意图
4 XAduio2在模拟器中的应用
地铁列车运行中的声音可分为没有方位的声音和3D立体声两种。例如,在驾驶室内听到的轮轨噪声基本具有恒定的响度,因此轮轨噪声可看作是无方位的声音;当2列车会车时,由于声音的多普勒效应,就需要使用3D立体声来模拟这种效果。本文介绍用XAudio2来模拟这两种声音的过程。
4.1 无方位声音的仿真
在操纵驾驶模拟器的时候,驾驶室内听到的列车机械、电器动作等的声音基本上是无方位的声音,因此无需进行3D定位的声音仿真,直接播放出来即可达到所需的效果。
用XAudio2播放无方位声音的最小步骤是:先初始化XAudio2,然后创建一个源声音并将音频数据传递给它;这样,一个声音文件就可以通过音频输出设备播放出来了。特别要指出的是,由于DirectX是基于组件对象模型(Component Object Model,简为COM)开发的,所以在调用XAudio2Create初始化XAduio2前,必须先调用COM函数CoInitialize或者CoInitializeEx,才能成功初始化XAudio2。程序的流程图如3所示。
4.2 3D立体声的仿真
设置合适的声音锥可以使程序中的声音栩栩如生。例如,在模拟2车会车的场景中,可以把声源放在来车内部,并设置声音锥的方向为该车的行驶方向;设置合适的内锥和外锥角度,并设置超过外锥一段距离后将听不到任何声音;同时设置多普勒效应因子。这样,当受训学员模拟驾驶时,与来车越接近,声音就会越大越刺耳;当会车完毕后,学员听到的来车声音将逐渐减小直至听不到为止。通过3D立体声仿真,可使驾驶员通过声音音调的变化判断出与来车的相对速度,仿佛置身于真实的驾车环境中。如果简单地重放声音,就体现不出声音的动感。
图3 播放无方位声音流程图
X3DAudio是与XAuido2在三维空间中结合使用的API。X3DAudio使用聆听者(Listener)和发射器(Emitter)来管理三维空间中的声音。聆听者和发射器分别代表声音接收方和发射源的位置。
(1)聆听者:定义为空间中聆听者所在的点的位置及其方向。一般来说,无论是第一人称视角或是第三人称视角模式下,它的位置和方向与场景中摄像机位置是一致的。聆听者的位置用世界坐标来表示。
(2)发射器:定义为空间中的一个(或多个)发射声源的点。发射器的位置可在三维空间中的任何地方。发射器的位置也用世界坐标来表示。
要注意发射器和聆听者的相对位置,才能计算最终的扬声器音量。除了位置外,聆听者和发射器还可以包含速度。与3D图形渲染引擎不同,X3DAudio只使用速度来计算多普勒效应(不需要计算位置)。
XAudio2与X3DAudio一起配套使用时,可以逼真地模拟出3D立体声。X3DAudio和XAudio2之间的相互作用是通过直接调用2个X3DAudio函数来实现的,它们分别是 X3DAudioInitialize和X3DAudioCalculate函数。
在驾驶模拟器中产生3D立体声效果可以通过以下两个步骤来实现。
步骤1:初始化X3DAudio。
首先调用X3DAudioInitialize函数初始化X3DAudio,再 创建 X3DAUDIO_LISTENER、X3DAUDIO_EMITT ER和X3DAUDIO_DSP_SETT INGS结构体的实例。
步骤2:利用X3DAudio计算和设置3D音频效果。
①动态更新 X3DAUDIO_LISTENER与X3DAUDIO_EMITT ER实例的当前位置、速度以及方位。
②调用X3DAudioCalculate函数重新计算当前声音的音频效果。其中多普勒频移效应计算公式为实际频率=多普勒频移系数×原始频率。只有当程序中X3DAUDIO_CALCULATE_DOPPLER标志位设置时,调用X3DAudioCaculate函数才能计算出多普勒频率。
③调用IXAudio2Voice::SetOutputMatrix和IXAudio2SourceVoice::SetFrequencyRatio函数,将上一步计算得到的音量和音调值数据传送给源声音。
④调用IXAudio2Voice::SetOutputMatrix函数将计算好的混响水平发送给次混音声音。
⑤调用 IXAudio2Voice::SetFilterParameters函数将计算出的低通滤波系数发送给源声音。
这样,通过5.1声道的音频输出设备,学员在模拟驾驶时,将能准确辨别出声源的位置、速度等信息,且当2列车会车时,能很逼真地感受到声音的多普勒效应,仿佛身临其境,沉浸在模拟驾驶环境中。
5 结 语
本文简要介绍了XAduio2技术。应用该技术开发的具有三维立体声效果的地铁列车驾驶模拟器声音仿真系统,可以逼真地模拟真实地铁列车驾驶中的各种声音以及音响效果,使受训学员产生身临其境的沉浸感,能够满足地铁列车驾驶模拟器对声音仿真的要求。
[1]张顺广.机车仿真器中声音系统的研究与开发[D].成都:西南交通大学,2003.
[2]张铎,陈定方,蒋云.空间声音建模技术及其在驾驶模拟器中的应用[J].湖北工业大学学报,2007(6):62.
[3]Microsoft.DirectX Software Development Kit[EB/OL].(2008-11)[2010-01-01].http:∥msdn.microsoft.com/en-us/library/ee415899(VS.85).aspx
Application of XAudio2 Technology to Metro Train Driving Simulator
Chen Jia,Qian Xuejun,Zhu Ming,Yao Jun
In order to give the trainees some vivid auditory effects,the simulation of various sounds in cabin is significant for metro train driving simulator(MTDS).In this paper,the types and characteristics of sounds in MTDS are discussed,which are divided into non-directional sounds and 3D stereo sounds.A new method of audio simulation is proposed with the application of the latest Microsoft DirectX component XAudio2,this technology is able to give the trainees a strong sense of immersion.
XAudio2 technology;metro train drivings imulator;audio simulation
TP 391.9
2010-01-06)