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