胡 銳
(蘇州科技大學(xué) 信息化建設(shè)與管理中心,江蘇 蘇州215009)
隨著互聯(lián)網(wǎng)與信息化的發(fā)展,互聯(lián)網(wǎng)輔助教學(xué)已經(jīng)在多學(xué)科中得到運用[1]。音樂教學(xué)的目的,本質(zhì)上在于培養(yǎng)學(xué)員的審美情趣及審美能力,而其中的內(nèi)容就包括了歌唱、演奏、律動、欣賞、創(chuàng)作以及相關(guān)的基礎(chǔ)知識和基本技能的培養(yǎng)。這就決定了音樂教學(xué)方法的特殊性,其表現(xiàn)為感性與理性的融合。因此,教學(xué)準(zhǔn)備、教學(xué)過程以及對教學(xué)的互動,都可以借助互聯(lián)網(wǎng)技術(shù)得以實現(xiàn)[2]。
以虛擬現(xiàn)實技術(shù)為基礎(chǔ)的音樂教學(xué)系統(tǒng)將教師資源和教學(xué)環(huán)境資源虛擬化,從而使資源使用更加便利,資源利用率更加優(yōu)化[3]。通過虛擬現(xiàn)實技術(shù)特有沉浸感、交互性和構(gòu)想性來營造出音樂學(xué)習(xí)所需的環(huán)境。
筆者以Unity3D 引擎為基礎(chǔ)開發(fā)平臺,結(jié)合其他建模工具,來構(gòu)建一個高效虛擬現(xiàn)實音樂教學(xué)系統(tǒng)。通過該系統(tǒng)學(xué)生不僅可以隨時隨地在虛擬的環(huán)境中學(xué)習(xí)音樂,而且可以實時的得到在線老師的幫助。
虛擬現(xiàn)實技術(shù)是仿真技術(shù)的一個重要方向,是仿真技術(shù)與計算機圖形學(xué)人機接口技術(shù)、多媒體技術(shù)、傳感技術(shù)和網(wǎng)絡(luò)技術(shù)等多種技術(shù)的集合,是一門富有挑戰(zhàn)性的交叉技術(shù)前沿學(xué)科和研究領(lǐng)域[4]。虛擬現(xiàn)實技術(shù)(VR)主要包括模擬環(huán)境、感知、自然技能和傳感設(shè)備等方面[5]。虛擬現(xiàn)實技術(shù)建立人工構(gòu)造的三維虛擬環(huán)境,用戶以自然的方式與虛擬環(huán)境中的物體進(jìn)行交互作用、 相互影響,擴展了人類認(rèn)識世界、模擬和適應(yīng)世界的能力[6]。
Unity 是由Unity Technologies 開發(fā)的一個讓用戶輕松創(chuàng)建諸如三維視頻游戲、建筑可視化、實時三維動畫等類型互動內(nèi)容的多平臺的綜合型游戲開發(fā)工具[7]。Unity 作為虛擬現(xiàn)實系統(tǒng)開發(fā)的經(jīng)典軟件之一,自帶強大的功能組件,可以快速的實現(xiàn)場景中事物的基本物理屬性添加,并為用戶提供相應(yīng)的功能組件接口,用戶可以根據(jù)自身的需求,用JavaScript、C#等常用語言為特定的對象創(chuàng)建功能[8]。
通過Unity 引擎,可以快速的創(chuàng)建三維場景及驅(qū)動帶動畫的虛擬模型。這為三維虛擬現(xiàn)實應(yīng)用開發(fā)帶來了很大的便利,也是現(xiàn)在虛擬場景開發(fā)的主流引擎。
音樂教學(xué)系統(tǒng)提供多種音樂學(xué)習(xí)服務(wù)、在線指導(dǎo)、虛場擬環(huán)境學(xué)習(xí)和智能評價等。為了實現(xiàn)其功能,整個平臺采用五層架構(gòu),從下往上分別是:接入層、數(shù)據(jù)處理層、數(shù)據(jù)數(shù)存儲層、場景管理層和應(yīng)用層,如圖1所示。
圖1 音樂教學(xué)系統(tǒng)架構(gòu)
(1)接入層:接入層主要包括了音頻接入和視頻接入[9]。音頻接入通過語音采集設(shè)備(比如:話筒)實現(xiàn)聲音的輸入;視頻接入通過視頻采集設(shè)備(比如:攝像機)實現(xiàn)視頻的輸入[10]。(2)數(shù)據(jù)處理層:包括音頻處理系統(tǒng)和教師指導(dǎo)系統(tǒng)。音頻處理系統(tǒng)實現(xiàn)聲音特征數(shù)據(jù)的提取和兩組基音數(shù)據(jù)的比較。(3)數(shù)據(jù)存儲層:實現(xiàn)音頻及音頻特征數(shù)據(jù)的存儲和視頻存儲。存儲接口采用常用的ODBC 和JDBC 的數(shù)據(jù)訪問方式,音視頻文件接口通過Java 平臺已經(jīng)封裝好的文件IO 系統(tǒng)提供文件的存取服務(wù)[11]。(4)場景管理層:包括虛擬場景和現(xiàn)實場景。虛擬場景通過軟件創(chuàng)建的虛擬的學(xué)習(xí)環(huán)境和人物[12]。現(xiàn)實場景通過接入現(xiàn)實視頻實現(xiàn)。(5)應(yīng)用層:實現(xiàn)常規(guī)的在線指導(dǎo)學(xué)習(xí)、虛擬環(huán)境學(xué)習(xí)和自主學(xué)習(xí)的智能評價[13]。
音頻處理系統(tǒng)包括特征提取模塊和特征處理模塊兩個部分。
特征提取模塊包括基音頻率識別器和音長獲取器,如圖2所示?;纛l率識別器內(nèi)置的基音頻率認(rèn)別方法有: 倒譜法、諧波峰值法、循環(huán)直方法、小波變換法和并行處理法等。根據(jù)教師指導(dǎo)系統(tǒng)中教師選定的獲取基音的方法,進(jìn)行基音頻率數(shù)據(jù)特征的提取。音長獲取器采用算法T=ΔN·1/(fs/2q)提取音長的時值,其中ΔN是兩個音符端點之間的采樣個數(shù),q是小波分解尺度,fs為信號的初始進(jìn)行采樣時的頻率。
圖2 特征提取模塊
特征處理模塊包括頻率音高轉(zhuǎn)換器、音高比較器和音長比較器,如圖3所示。頻率音高轉(zhuǎn)換器轉(zhuǎn)換的方式是
圖3 音高音長比較器
其中,y為基音頻率,X為對應(yīng)的音高,比如:4 000 Hz 對 應(yīng) 的 音 高 為87.21,即4 000 Hz 對應(yīng)的音高為b4+21 音分。音高比較器比較的方式H=A-B,其中A為待檢聲音高,B為基準(zhǔn)聲音音高,H為音高差值。音長比較器比較的方式L=C-D,其中C為待檢聲音長,D為基準(zhǔn)聲音音長,L為音長差值。比較每個音的音高和音長是否相同,給出待檢音符基音是偏高多少,偏低多少;給出待檢音符音長是偏長多少時值,偏短多少時值,該音頻處理的方法已申請專利,申請?zhí)枮椋?01610380874.3。
采用3DMax 創(chuàng)建虛擬學(xué)習(xí)環(huán)境的模型,將建好的模型導(dǎo)入Unity 3D 進(jìn)行渲染。為了模擬現(xiàn)實生活中移動物體碰撞后產(chǎn)生的行為變化,文中使用觸發(fā)器碰撞檢測與傳統(tǒng)碰撞檢測相結(jié)合,并設(shè)計開發(fā)相應(yīng)的行為變化組件,當(dāng)動態(tài)物體進(jìn)入指定觸發(fā)器區(qū)域時,調(diào)用OnTriggerEnter(Collider collider)函數(shù)改變狀態(tài)參數(shù)的值,激活行為組件,產(chǎn)生適當(dāng)?shù)男袨樽兓?;?dāng)動態(tài)物體離開觸發(fā)器區(qū)域時,調(diào)用OnTriggerExit(Collidercollider)函數(shù)改變狀態(tài)參數(shù)的值,做出相應(yīng)的行為變化。
攝像機是整個虛擬現(xiàn)實全景展示平臺人機交互模塊的關(guān)鍵節(jié)點,它相當(dāng)于用戶在虛擬世界的眼睛。在Unity3D 中,對攝像機的配置需要和很多模塊結(jié)合,具體的視角變換組件的主要代碼如下:
//獲取當(dāng)前位置
x=Input.GetAxis("Horizontal") * Time.deltaTime * speed;//左右移動
z=Input.GetAxis("Vertical") * Time.deltaTime * speed;//前后移動
transform.Rotate(new Vector3(x,y,0));//旋轉(zhuǎn)角度(增加)
//相機位置
transform.rotation=Quaternion.Slerp(transform.rotation,targetRotation,Time.deltaTime * 3)
將音頻處理的結(jié)果在虛擬場景中動態(tài)的顯示出來,增加虛擬場景中學(xué)習(xí)的互動性,通過Unity3D 開發(fā)實現(xiàn)在虛擬場景中顯示音頻處理的結(jié)果提示信息。
void Awake()
{//初始化Alhpa 配制字體和顏色
Color alpha = mText.color;
alpha.a = DefAlpha;
mText.color = alpha;
}
void Start()
{
mText.text = Texts[CurrentTextIndex];//給mText 賦值
Fade(true);
}
使用Unity3D 開發(fā)在虛擬場景中播放教學(xué)視頻,是在GUI 層面上播放視頻。具體核心代碼如下:
//電影紋理
public MovieTexture movTexture;
void Start()
{
//設(shè)置電影紋理播放模式為循環(huán)
movTexture.loop=true;
}
//播放指定視頻
void OnGui()
{
if(GUI.Button(new Rect(20,10,200,50),"PLAY ControlMode.Full"))
{
Handheld.PlayFullScreenMovie("http://210.29.9.155/test.ogg",Color.black,F(xiàn)ullScreenMovieControlMode.Full);
}
}
為了檢測文中所提到的音樂教學(xué)系統(tǒng),對該系統(tǒng)的VR 視頻播放功能進(jìn)行壓力測試。測試服務(wù)端硬件環(huán)境,見表1。
表1 服務(wù)端硬件環(huán)境
由于VR 設(shè)備有限,故該測試用PC VR 播放器代替VR 設(shè)備播放。利用25 臺VM 虛擬機,每臺VM 虛擬機開4 個VR 播放器進(jìn)程,就相當(dāng)于100個VR 設(shè)備用戶,服務(wù)器性能如圖4所示,CPU 消耗47%,內(nèi)存消耗15%,帶寬消耗41.5%左右。
每臺VM 虛擬機開8 個VR 播放器進(jìn)程,就相當(dāng)于200 個VR 設(shè)備用戶,服務(wù)器性能如圖5所示,CPU消耗79%,內(nèi)存消耗15%,帶寬開始出現(xiàn)瓶頸,接近1Gbps,出現(xiàn)抖動。
圖4 100個用戶服務(wù)端性能
圖5 200個用戶服務(wù)端性能
因此,音樂教學(xué)系統(tǒng)的瓶頸在網(wǎng)絡(luò)帶寬上,如需繼續(xù)增壓,可以采用部署集群服務(wù)端的方式。
該系統(tǒng)包括兩個部分:一是VR 虛擬環(huán)境學(xué)習(xí),結(jié)合虛擬現(xiàn)實技術(shù)和音頻處理技術(shù),使學(xué)生可以在VR虛擬環(huán)境中進(jìn)行音樂自主學(xué)習(xí),音頻處理系統(tǒng)實時進(jìn)行評價;二是傳統(tǒng)在線教師指導(dǎo)學(xué)習(xí)。
進(jìn)一步的研究方向是實現(xiàn)VR 全景音樂在線學(xué)習(xí)。