陳 嘉 錢雪軍 朱 鳴 姚 軍
(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
地鐵列車駕駛模擬器仿真系統要求對真實系統進行盡可能真實的仿真,不僅要在整個駕駛過程中給受訓學員提供逼真的視覺、力感,而且要有逼真的音響效果。逼真的音響效果可以使受訓學員產生身臨其境的感覺,增加系統的沉浸感。因此,對地鐵列車駕駛模擬器聲音的仿真研究具有重要的意義。
地鐵列車駕駛模擬器由駕駛室操縱臺、控制仿真系統、視景仿真系統、聲音仿真系統等幾個主要部分組成。地鐵列車實際運行時會產生各種聲音,包括輪軌噪聲、變頻器噪聲、橋隧噪聲、電器動作噪聲,以及空氣制動、鳴笛、會車和調車連掛所引起的噪聲等。這些都是聲音仿真系統需要模擬的對象。
在駕駛模擬器中,聲音信息一方面可以為視景仿真系統實時伴音,使視覺和聽覺相互疊加;另一方面3D聲音信息可以補充由于視野的局限而接收不到的信息。如起霧時從遠方相向駛來的列車發出的聲音可以使駕駛員準確判斷前方的狀況。因此,在地鐵列車駕駛模擬器中,逼真的聲音仿真能增強駕駛員在虛擬駕車環境中的沉浸感。
目前,國內地鐵列車駕駛模擬器的聲音仿真一般使用微軟DirectX中的DirectSound組件來實現。從DirectX 9.0版本以后,微軟未對DirectSound進行重大更改,而在其后的DirectX 10.1版本中推出了它的替代音頻 API(應用程序編程接口)——XAudio2。XAudio2在3D聲音以及環繞聲音上較DirectSound有很大的改進,可單獨為每個揚聲器設置音量。例如:配置5.1聲道或7.1聲道音響各個揚聲器的聲音;在程序中可以僅設置其中一個揚聲器的音量,也可分別計算出每個揚聲器所要產生的音量。在新版的DirectX中,XAudio2主要用來進行音頻的信號處理,而三維空間的聲音定位任務則由另一個音頻API——X3DAudio來實現。這樣的搭配使得3D音效的編程變得更加靈活而方便。
在真實環境中,人們感知聲音在空間中的位置由許多因素決定。其中聲源所提供的位置因素有:
(1)總體響度。一般來說,響度是決定聆聽者主觀距離感的最重要因素。當一個聲源離開聆聽者時,聆聽者聽到的音量將隨著聲源的遠離而減小。
(2)耳間聽覺強度差。若聲源在聆聽者右邊,則其右耳聽到的聲音比左耳要大。
(3)兩耳聽覺時間差。從位于聆聽者右側聲源發出的聲音,到達右耳的時間比到達左耳要短一點。這個偏差一般為毫秒級。
(4)衰減。由于耳朵的形狀和位置,使得從聆聽者身后傳來的聲音比聆聽者前面傳來的聲音更低沉一些。此外,如果聲源從聆聽者右邊傳來,則傳遞到左耳的聲音很大一部分會被聆聽者的頭部衰減掉。
(5)耳廓作用。由于耳廓的特殊構造,使得從不同方向傳來的聲音到達耳膜的時間產生了微小變化。這種效應的數學模型被稱作頭部相關傳遞函數。
無方向的聲音對同一距離的任意方向都有相同的振幅,而有方向的聲音則只在它所指向的方向振幅最大。描述這種現象的聲音模型稱為聲音錐。聲音錐由聲音內錐和聲音外錐構成,且外錐角度必須始終大于等于內錐角度,如圖1所示。

圖1 聲音錐示意圖
當聆聽者處于聲音內錐時,考慮到聲音緩沖區的基本音量、與聲源的距離以及方向等因素,此時聆聽者接收到的音量就等于聲音內錐的音量。當聆聽者位于聲音外錐半徑之外時,所接收到的音量是線性變化的,它的取值可以從0.0f(f表示浮點數)到2.0f。聲音外錐音量1.0f代表聲音無衰減,0.5f代表聲音衰減了6 dB,0.0f則代表聲音完全消失了。在聲音錐的內錐和外錐之間是一個過渡帶。聆聽者接收到的音量從聲音內錐過渡到聲音外錐時將逐漸減小。
聲波是通過傳播介質發送給聆聽者的。如果聲波波源相對于聆聽者位置固定,則聆聽者接收到的聲波頻率與波源的頻率相同。如果波源與聆聽者有相對運動,聆聽者檢測到的頻率就與實際波源頻率有差異。頻率差的大小取決于雙方的相對運動速度。這種因為波源和聆聽者中之一或兩者以不同速度相對于傳播介質運動,使聆聽者所接收到的聲波頻率高于或低于波源的振動頻率的現象稱為聲音的多普勒效應。
XAudio2作為微軟新推出的DirectX的一個音頻組件,是一個底層的、跨越Windows和Xbox 360硬件平臺的音頻API。它與之前Windows平臺下的DirectSound音頻接口和Xbox平臺下的XAudio音頻接口一樣,為游戲開發提供了強大的信號處理與混音的功能。XAudio2為Windows和Xbox 360開發者提供了“寫一次代碼,編譯兩次”的優秀解決方案,大大減少了游戲開發人員跨平臺修改代碼的工作量。
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方法造成音頻處理引擎阻塞。
XAudio2組件中共有源聲音、次混音聲音、主混音聲音等三種類型的聲音,XAuio2通過它們來處理、操作和播放音頻數據。
源聲音:代表音頻數據流,并發送數據給其他類型的聲音。
次混音聲音:其職能是對接收到的音頻數據進行操作,如進行音頻采樣率轉換。當次混音聲音處理完數據后,將數據傳遞給另一個次混音聲音或者主混音聲音。
主混音聲音:接收從源聲音和次混音聲音傳遞過來的數據,并把音頻數據發送給音頻硬件。
音頻圖是XAudio2聲音的一個集合。聲音數據從音頻圖中的源聲音開始,可以選擇經過一個或多個次混音聲音,最后發送到主混音聲音,由主混音聲音把音頻數據發送給音頻硬件處理。音頻圖包含每個正在播放的源聲音,零個或多個次混音聲音,一個主混音聲音。圖2是一個簡單的音頻圖示意圖。

圖2 簡單的音頻圖示意圖
地鐵列車運行中的聲音可分為沒有方位的聲音和3D立體聲兩種。例如,在駕駛室內聽到的輪軌噪聲基本具有恒定的響度,因此輪軌噪聲可看作是無方位的聲音;當2列車會車時,由于聲音的多普勒效應,就需要使用3D立體聲來模擬這種效果。本文介紹用XAudio2來模擬這兩種聲音的過程。
在操縱駕駛模擬器的時候,駕駛室內聽到的列車機械、電器動作等的聲音基本上是無方位的聲音,因此無需進行3D定位的聲音仿真,直接播放出來即可達到所需的效果。
用XAudio2播放無方位聲音的最小步驟是:先初始化XAudio2,然后創建一個源聲音并將音頻數據傳遞給它;這樣,一個聲音文件就可以通過音頻輸出設備播放出來了。特別要指出的是,由于DirectX是基于組件對象模型(Component Object Model,簡為COM)開發的,所以在調用XAudio2Create初始化XAduio2前,必須先調用COM函數CoInitialize或者CoInitializeEx,才能成功初始化XAudio2。程序的流程圖如3所示。
設置合適的聲音錐可以使程序中的聲音栩栩如生。例如,在模擬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列車會車時,能很逼真地感受到聲音的多普勒效應,仿佛身臨其境,沉浸在模擬駕駛環境中。
本文簡要介紹了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)