李家旺
(唐山中厚板材有限公司 設(shè)備機(jī)動(dòng)部,河北 唐山 063610)
語(yǔ)音識(shí)別技術(shù)就是讓機(jī)器通過(guò)識(shí)別和理解過(guò)程把語(yǔ)音信號(hào)轉(zhuǎn)變?yōu)橄鄳?yīng)的文本或命令的高級(jí)技術(shù)。具有遠(yuǎn)距離控制功能的基于網(wǎng)絡(luò)的遠(yuǎn)程機(jī)器人,在海洋探測(cè)、軍事及人類(lèi)自身不能到達(dá)的各種危險(xiǎn)和特殊場(chǎng)所具有獨(dú)特的作用[1]。結(jié)合語(yǔ)音識(shí)別與網(wǎng)絡(luò)通信技術(shù),在4自由度的AS-MRobotE機(jī)器人平臺(tái)上,利用其提供的軟件編程接口設(shè)計(jì)了可對(duì)其進(jìn)行語(yǔ)音遠(yuǎn)程實(shí)時(shí)控制的系統(tǒng),并給客戶端和服務(wù)器提供了新的控制界面。
語(yǔ)音遠(yuǎn)程控制機(jī)器人系統(tǒng)可以分為本地語(yǔ)音識(shí)別發(fā)送端和遠(yuǎn)程機(jī)器人控制端,即客戶機(jī)和服務(wù)器[2,3]。它們均是基于Windows系統(tǒng)。語(yǔ)音遠(yuǎn)程控制機(jī)器人系統(tǒng)的整體結(jié)構(gòu)框圖,如圖1所示。
圖1 語(yǔ)音遠(yuǎn)程控制機(jī)器人系統(tǒng)的整體結(jié)構(gòu)框圖
語(yǔ)音識(shí)別分為訓(xùn)練階段和識(shí)別階段:第一步是系統(tǒng)“訓(xùn)練”階段,任務(wù)是建立識(shí)別基本單元的聲學(xué)模型;第二步是“識(shí)別”階段。按照一定的準(zhǔn)則和測(cè)度與系統(tǒng)模型進(jìn)行比較,通過(guò)判決得出識(shí)別結(jié)果。本系統(tǒng)是基于小識(shí)別詞匯量的語(yǔ)音識(shí)別系統(tǒng),采用如圖2所示的模板匹配法。
圖2 基于模板匹配的語(yǔ)音識(shí)別原理框圖
系統(tǒng)采用麥克風(fēng)將語(yǔ)音信號(hào)輸入給計(jì)算機(jī),再進(jìn)行預(yù)加重、分幀加窗處理,然后進(jìn)行端點(diǎn)檢測(cè)。其中加窗使用Hamming窗,因?yàn)镠amming窗的旁瓣較低,可以有效地克服Gibbs現(xiàn)象。
特征提取是從短時(shí)語(yǔ)音幀中提取對(duì)語(yǔ)音識(shí)別有效的信息。在孤立詞語(yǔ)音識(shí)別中,用Mel頻率的倒譜系數(shù)(Mel Frequency Ceqstrum Coefficient,MFCC)作為語(yǔ)音特征取得了較好的效果。MFCC完整的計(jì)算過(guò)程,如圖3所示。
圖3 MFCC計(jì)算過(guò)程示意圖
在語(yǔ)音命令識(shí)別中,應(yīng)用HMM包括兩個(gè)步驟,其中一個(gè)重要的步驟就是識(shí)別。在進(jìn)行識(shí)別時(shí),為每一個(gè)參考模型計(jì)算出產(chǎn)生測(cè)試觀察的概率,且測(cè)試信號(hào)按最大概率被識(shí)別為某個(gè)命令。
Windows支持TCP協(xié)議,提供標(biāo)準(zhǔn)Socket調(diào)用。Socket編程均采用客戶機(jī)/服務(wù)器模式,客戶機(jī)/服務(wù)器模式在操作過(guò)程中采用主動(dòng)請(qǐng)求方式。其TCP傳輸?shù)目蛻魴C(jī)/服務(wù)器通訊模型,如圖4所示。
圖4 TCP傳輸?shù)目蛻魴C(jī)/服務(wù)器通訊模型
語(yǔ)音遠(yuǎn)程控制機(jī)器人系統(tǒng)的機(jī)器人平臺(tái)是上海廣茂達(dá)公司生產(chǎn)的AS-MRobotE智能風(fēng)暴移動(dòng)機(jī)器人。AS-MRobotE函數(shù)開(kāi)發(fā)庫(kù)中已提供了完善的運(yùn)動(dòng)系統(tǒng)程序代碼。其控制系統(tǒng)是在Windows平臺(tái)下用C/C++語(yǔ)言為AS-MRobotE開(kāi)發(fā)應(yīng)用程序的一般方法。編程過(guò)程中只需添加m6e_api庫(kù)為AS-MRobotE開(kāi)發(fā)應(yīng)用程序庫(kù),具體編程過(guò)程和說(shuō)明見(jiàn)其操作手冊(cè)。
Socket是對(duì)應(yīng)TCP/IP協(xié)議的典型應(yīng)用開(kāi)發(fā)接口。它提供了不同主機(jī)間進(jìn)程通信的端點(diǎn),應(yīng)用進(jìn)程之間要通過(guò)網(wǎng)絡(luò)進(jìn)行通信,必須在網(wǎng)絡(luò)的每一端建立套接字,通過(guò)對(duì)套接字的“讀”、“寫(xiě)”操作實(shí)現(xiàn)網(wǎng)絡(luò)通信。作為網(wǎng)絡(luò)應(yīng)用編程界面,Socket隱藏了網(wǎng)絡(luò)底層的復(fù)雜結(jié)構(gòu)和協(xié)議,使得編程人員可以簡(jiǎn)單地對(duì)網(wǎng)絡(luò)進(jìn)行操作。
Socket主要有兩種通信方式,第一種叫流方式(StreamSocket),也稱面向連接方式。在這種方式下,通信進(jìn)程之間要先建立一種虛擬的連接,這種方式對(duì)應(yīng)的是TCP協(xié)議,其傳輸特點(diǎn)是通信可靠性高,按發(fā)送的順序接收數(shù)據(jù);數(shù)據(jù)被看作是字節(jié)流,無(wú)長(zhǎng)度限制。第二種叫做數(shù)據(jù)報(bào)方式(DatagramSocket),又稱無(wú)連接方式,它提供無(wú)連接服務(wù),對(duì)應(yīng)的是UDP協(xié)議,這種方式不提供數(shù)據(jù)無(wú)錯(cuò)保證,數(shù)據(jù)可能丟失或重復(fù),并且接收順序混亂,報(bào)文的長(zhǎng)度是有限的。
Socket的編程原理是基于套接字的系統(tǒng)調(diào)用。應(yīng)用程序首先必須通過(guò)系統(tǒng)調(diào)用socket()創(chuàng)建套接字。然后,調(diào)用bind()將套接字地址與所創(chuàng)建的套接字聯(lián)系起來(lái)。通過(guò)connect()和accept()兩個(gè)系統(tǒng)調(diào)用建立套接字的連接,其中connect()用于建立連接,accept()用于使服務(wù)器等待來(lái)自客戶的實(shí)際連接。listen()用于面向連接服務(wù)器,表明它愿意接收連接。當(dāng)一個(gè)連接建立后,就可以使用系統(tǒng)調(diào)用send()和recv()發(fā)送和接收數(shù)據(jù)了。最后調(diào)用closesocket()關(guān)閉套接字,并釋放所分配給套接字的資源[4]。
圖5所示的是系統(tǒng)客戶端的界面。該系統(tǒng)實(shí)現(xiàn)了語(yǔ)音識(shí)別的訓(xùn)練及識(shí)別、服務(wù)器的IP及端口設(shè)置、運(yùn)行狀態(tài)的顯示,以及發(fā)送識(shí)別指令等智能控制功能。
圖5 語(yǔ)音遠(yuǎn)程控制機(jī)器人客戶端的界面
圖6所示為系統(tǒng)服務(wù)器的界面。該系統(tǒng)實(shí)現(xiàn)了顯示本地IP、機(jī)器人初始化、本地控制、遠(yuǎn)程控制狀態(tài)顯示、服務(wù)器端口設(shè)置,以及指令顯示等智能控制功能。
圖6 語(yǔ)音遠(yuǎn)程控制機(jī)器人服務(wù)端的界面
整個(gè)系統(tǒng)的程序設(shè)計(jì)均基于Windows系統(tǒng)VC++編程語(yǔ)言[5]。
語(yǔ)音遠(yuǎn)程控制機(jī)器人系統(tǒng)采用了使用廣泛的Windows系統(tǒng)平臺(tái),并且引入了語(yǔ)音識(shí)別與網(wǎng)絡(luò)通信技術(shù),使其控制方式更加智能化。首先是采用基于模板匹配技術(shù)的語(yǔ)音識(shí)別方法對(duì)有限的指令進(jìn)行識(shí)別,不但能夠得到比較高的識(shí)別率,而且易于實(shí)現(xiàn);然后通過(guò)Socket機(jī)制實(shí)現(xiàn)了遠(yuǎn)程通信,并最終根據(jù)指令實(shí)現(xiàn)了對(duì)機(jī)器人的語(yǔ)音遠(yuǎn)程控制。實(shí)驗(yàn)驗(yàn)證了語(yǔ)音遠(yuǎn)程控制智能機(jī)器人運(yùn)動(dòng)的準(zhǔn)確性和實(shí)時(shí)性。本系統(tǒng)具有極其優(yōu)異的性能價(jià)格比、通用性、開(kāi)放性和擴(kuò)展性;基于Windows語(yǔ)音遠(yuǎn)程機(jī)器人控制系統(tǒng)在價(jià)格、性能和發(fā)展?jié)摿ι隙季哂懈?jìng)爭(zhēng)力,代表了未來(lái)的發(fā)展方向,有較好的應(yīng)用前景。
[1] 丑武勝,王田苗.基于互聯(lián)網(wǎng)的機(jī)器人遠(yuǎn)程實(shí)驗(yàn)系統(tǒng)[J].高技術(shù)通訊,2003,13(8):68-72.
[2] 王雪松,田西蘭,王煒強(qiáng).語(yǔ)音識(shí)別技術(shù)在機(jī)器人控制中的應(yīng)用[J].儀器儀表學(xué)報(bào),2006(s1):299-301.
[3] Luo Zhizeng,Zhao Jingbing.Speech Recognition and Its Application in Voice-based Robot Control System[C].Intelligent Mechatronics and Automationics,2004,Proceedinqs,2004 International Conferenceon IEEE,2004:960-963.
[4] 李現(xiàn)凡,高建榮.基于SOCKET編程接口的局域網(wǎng)即時(shí)通信系統(tǒng)的開(kāi)發(fā)實(shí)現(xiàn)[J].常州輕工職業(yè)技術(shù)學(xué)院學(xué)報(bào),2006(4):44-47.
[5] 黃維通,姚瑞霞.VisualC++程序設(shè)計(jì)教程[M].北京:機(jī)械工業(yè)出版社,2003.