3.2.1 Julius部署
在本系統(tǒng)中語音識別部分是部署在Atom Z510上,而Atom Z510上首先需要移植linux操作系統(tǒng)(本系統(tǒng)采用的是ubuntu8.10)以上步驟在此不詳細(xì)介紹,文獻(xiàn)中有詳細(xì)說明。語音識別的核心部分是Julius識別器,需要將Julius源碼編譯部署到Atom Z510平臺。其步驟如下:
①要確保linux系統(tǒng)中有以下支持庫:Zlib、flex、OSS音頻驅(qū)動接口、ESounD和libsndfile。
?、趶腏ulius官網(wǎng)下載源代碼Julius-4.1.5。
?、劢鈮海簍ar-zxjf julius-4.1.5。
?、芫幾g:%./configure,%make,%make install。
3.2.2 Julius配置
Julius全部采用C語言代碼實(shí)現(xiàn),采用模塊化設(shè)計(jì)方式,而且各功能模塊可配置。在使用前需要將配置參數(shù)寫入jconf文件,此文件作為運(yùn)行參數(shù)載入系統(tǒng),系統(tǒng)掃描參數(shù)配置并啟動各功能塊。其中重點(diǎn)介紹以下幾個(gè)配置參數(shù):
◆-dfa rtdog.dfa,指定語法文件rtdog.dfa;
◆-v rtdog.dict,指定字典文件;
◆-h rtdog.binhmm,指定HMM模型文件;
◆-lv 8000,設(shè)定音頻的閾值便于濾去噪音;
◆-rejectshort 600,設(shè)定最小的語音長度;
◆-input mic,設(shè)定語音的輸入方式為microphone。
3.3 語音識別系統(tǒng)軟件設(shè)計(jì)
3.3.1 GUI設(shè)計(jì)
本系統(tǒng)為了方便測試,采用QT4的圖形庫來開發(fā)人機(jī)界面(GUI),同時(shí)加入了手動控制的按鈕。其總體功能如圖6所示。通信線程是本系統(tǒng)的數(shù)據(jù)傳輸樞紐,十分重要。在QT中通過對線程類QThread繼承來實(shí)現(xiàn)新的線程設(shè)計(jì)。該類提供了創(chuàng)建一個(gè)新線程以及控制線程運(yùn)行的各種方法。線程是通過QThread::run()重載函數(shù)開始執(zhí)行的。在本系統(tǒng)中設(shè)計(jì)了1個(gè)數(shù)據(jù)通信線程,用它來不斷地讀取共享內(nèi)存中的語音命令,然后將其轉(zhuǎn)化為控制命令傳給機(jī)器人控制模塊。
?
3.3.2 模塊間通信
由于系統(tǒng)的3個(gè)模塊不在同一個(gè)平臺上部署,運(yùn)行過程中需要進(jìn)行數(shù)據(jù)通信。GUI和Julius都部署在Atom Z510平臺上,但屬于2個(gè)進(jìn)程,它們之間可以通過共享內(nèi)存來交互數(shù)據(jù)。而GUI和機(jī)器人控制模塊就需要通過網(wǎng)絡(luò)通信來實(shí)現(xiàn)數(shù)據(jù)交互。這里采用的是基于TCP的socket編程接口來實(shí)現(xiàn)模塊間的通信,模塊間通信流程如圖7所示。
?
4 實(shí)驗(yàn)測試
演示系統(tǒng)界面如圖8所示。本文使用大量的語音樣本來完成HTK的訓(xùn)練和模式構(gòu)建,語音樣本采用16 kHz采樣,16位量化。獨(dú)立的語音識別測試中,將訓(xùn)練集以及測試集中語音樣本和識別結(jié)果進(jìn)行了對比分析。本文語音樣本的內(nèi)容包括訓(xùn)練集(語料庫中的語音成分)和測試集(本實(shí)驗(yàn)中采集的語音)。由于本系統(tǒng)只用提取語音命令,不需要完整句子的識別,所以沒有針對句子做測試。
?
本文對于訓(xùn)練集基于詞的識別率為71.7%,測試集基于詞的識別率為56.5%,測試結(jié)果如表1所列。
?
表中各符號所表示的意義如下所示:
H,正確;S,替代錯(cuò)誤;D,刪除錯(cuò)誤;I,插入錯(cuò)誤;N,標(biāo)記文件中單元總數(shù);SENT,句子,WORD:基本單元。
?
結(jié)語
本文在給定的實(shí)驗(yàn)室機(jī)器人平臺上,設(shè)計(jì)了基于語音控制的機(jī)器狗系統(tǒng)。其中,語音識別子系統(tǒng)通過HTK和Julius的開源平臺構(gòu)建而成。經(jīng)過測試分析,該系統(tǒng)能夠較好地識別人發(fā)出的語音命令,簡化了機(jī)器人的操作,使機(jī)器與人的交互更加智能化。
評論
查看更多