王曉華, 要鵬超, 廣夏桐, 王文杰, 張 蕾
(西安工程大學(xué) 電子信息學(xué)院,陜西 西安 710048)
機(jī)器人語(yǔ)音控制系統(tǒng)中,通常包含了大量語(yǔ)音資料的語(yǔ)音軟件包,并相應(yīng)地形成控制模型,控制者的控制命令在經(jīng)過語(yǔ)音識(shí)別模塊的處理后,被匹配到相關(guān)的控制模型上,機(jī)器人控制器就能夠下達(dá)指令指揮機(jī)器人完成作業(yè)任務(wù)[1,2]。然而在工業(yè)生產(chǎn)現(xiàn)場(chǎng)中,控制命令一般字?jǐn)?shù)簡(jiǎn)短,相對(duì)應(yīng)的控制模型只是生產(chǎn)中的幾個(gè)動(dòng)作。因而,常用語(yǔ)音包的內(nèi)容冗余,語(yǔ)音處理以及查找識(shí)別就會(huì)影響命令執(zhí)行效率或者增加系統(tǒng)功能開支。研究者一般應(yīng)用語(yǔ)音處理與識(shí)別知識(shí),自己設(shè)計(jì)語(yǔ)音控制系統(tǒng),基于單片機(jī)的機(jī)器人語(yǔ)音控制系統(tǒng),處理性能較低、識(shí)別效果差[3];基于數(shù)字信號(hào)處理(digital signal processing,DSP)以及ARM等平臺(tái)的語(yǔ)音識(shí)別系統(tǒng)需要移植,過程復(fù)雜,實(shí)現(xiàn)難度較大[4]。如何高效地處理語(yǔ)音命令被機(jī)器人準(zhǔn)確識(shí)別是語(yǔ)音控制是否高效的標(biāo)準(zhǔn)。
本文設(shè)計(jì)了一種基于機(jī)器人操作系統(tǒng)(robot operating system,ROS)的移動(dòng)機(jī)器人語(yǔ)音控制系統(tǒng),對(duì)獲取的語(yǔ)音命令進(jìn)行預(yù)加重處理,提升語(yǔ)音命令信號(hào)高頻信息;采用加窗方法避免分幀時(shí)頻譜泄露;采用基于Fisher比的Bark小波包變換的方法有效提取特征參數(shù),利用隱馬爾科夫模型(hidden Markov model,HMM)算法進(jìn)行語(yǔ)音識(shí)別,識(shí)別結(jié)果發(fā)送給移動(dòng)機(jī)器人后,移動(dòng)機(jī)器人便能夠按照人的語(yǔ)音命令執(zhí)行相應(yīng)的動(dòng)作。
預(yù)處理過程包括語(yǔ)音的采樣、預(yù)加重、加窗分幀以及端點(diǎn)檢測(cè)[5]。預(yù)加重能夠消除采樣語(yǔ)音信號(hào)在低頻段的噪聲干擾,圖1為語(yǔ)音控制命令“前進(jìn)”預(yù)加重前后的頻譜圖,可看出預(yù)加重后語(yǔ)音命令信號(hào)的頻譜在高頻部分得到了提升。

圖1 語(yǔ)音命令‘前進(jìn)’預(yù)加重前后的頻譜
為防止預(yù)加重后的語(yǔ)音信號(hào)進(jìn)行分幀操作有效提取特征時(shí)導(dǎo)致信號(hào)的頻譜泄露,進(jìn)行了加窗處理
(1)
端點(diǎn)檢測(cè)的正確性直接影響語(yǔ)音識(shí)別的準(zhǔn)確率。本文使用短時(shí)能量與短時(shí)過零率相結(jié)合的雙門限檢測(cè)法[6],對(duì)語(yǔ)音信號(hào)進(jìn)行端點(diǎn)檢測(cè)。如圖2所示,為語(yǔ)音控制命令‘前進(jìn)’的端點(diǎn)檢測(cè)結(jié)果。

圖2 語(yǔ)音命令‘前進(jìn)’的端點(diǎn)檢測(cè)結(jié)果
傳統(tǒng)的梅爾頻率倒譜系數(shù)(Mel frequency cepstrum co-efficient,MFCC)[7]法只反映語(yǔ)音特征參數(shù)的靜態(tài)特性。為有效的解決此問題[8],本文采用基于Fisher比的Bark小波包變換算法進(jìn)行語(yǔ)音特征提取,具體步驟如下:
1)將獲得的每幀語(yǔ)音信號(hào)進(jìn)行Bark尺度小波包變換,求出每組頻帶的小波包系數(shù);
2) 計(jì)算第n幀第m個(gè)頻帶能量
(2)
式中Wn(m,k)為一幀語(yǔ)音的小波包系數(shù);Nm為第m頻帶中小波包系數(shù)個(gè)數(shù);
3)計(jì)算DTC倒譜,將每組頻帶能量通過DTC,再進(jìn)行計(jì)算可得到小波包倒譜系數(shù)
(3)
4)Fisher的計(jì)算,F(xiàn)isher準(zhǔn)則是將特征參數(shù)向量投影到最佳方向而獲得最大的類間距離,計(jì)算公式為
(4)

5)Fisher比選擇,特征參數(shù)中加入動(dòng)態(tài)特征可提高系統(tǒng)的識(shí)別性能,由式(4)計(jì)算出12維小波包倒譜系數(shù)和12維一階差分動(dòng)態(tài)特征中的每維Fisher比結(jié)果,如圖3所示,從小波包倒譜系數(shù)和一階差分參數(shù)中分別選取Fisher比最大的6組,并組成12維的特征參數(shù),即為本文提取的語(yǔ)音命令的特征參數(shù)。

圖3 一階差分參數(shù)和小波包倒譜系數(shù)的各維Fisher比
HMM[9]是對(duì)語(yǔ)音信號(hào)的時(shí)間序列結(jié)構(gòu)所建立的統(tǒng)計(jì)模型,由5個(gè)模型參數(shù)定義為M={T,M,π,A,B},其中,T為隱馬爾可夫模型中的狀態(tài)數(shù);M為每個(gè)狀態(tài)的觀察符號(hào)數(shù);π為初始狀態(tài)概率分布,π=[πi],其中,πi=P[q1=i],1≤i≤N;A為狀態(tài)轉(zhuǎn)移概率分布,A=[aij],其中,aij=P[qt+1=j|qt=i],1≤i≤N,1≤j≤N;B為觀察符號(hào)的概率分布,B=[bj(k)],其中,bj(k)=[ot=vk|qt=j],1≤k≤M,1≤j≤N。
語(yǔ)音命令識(shí)別過程,分為訓(xùn)練和識(shí)別兩部分。訓(xùn)練時(shí),對(duì)所有的語(yǔ)音控制命令分別提取特征參數(shù),并以此為參數(shù)模板,為每個(gè)語(yǔ)音命令建立HMM聲學(xué)模型。識(shí)別時(shí),對(duì)待識(shí)別的語(yǔ)音控制命令提取特征參數(shù),并組成特征矢量,作為觀察序列O={o1,o1,…,oT},計(jì)算該組觀察序列在每個(gè)HMM下的輸出概率,選擇模型的最大輸出概率所對(duì)應(yīng)的語(yǔ)音控制命,作為識(shí)別結(jié)果。
本文設(shè)計(jì)的移動(dòng)機(jī)器人語(yǔ)音控制系統(tǒng)由語(yǔ)音識(shí)別部分和機(jī)器人控制部分組成,系統(tǒng)的總體結(jié)構(gòu)如圖4所示。

圖4 系統(tǒng)的整體框圖
語(yǔ)音識(shí)別部分主要由語(yǔ)音命令的預(yù)處理、特征提取、語(yǔ)音的訓(xùn)練和識(shí)別四部分組成。麥克風(fēng)采集的語(yǔ)音控制命令進(jìn)行采樣、預(yù)加重、加窗分幀以及端點(diǎn)檢測(cè)并特征提取后,對(duì)每個(gè)語(yǔ)音命令訓(xùn)練HMM聲學(xué)模型,建立起語(yǔ)音命令庫(kù),控制命令識(shí)別通過比較語(yǔ)音庫(kù)中每個(gè)語(yǔ)音指令的HMM參數(shù)模型所輸出概率的大小作為識(shí)別結(jié)果。
機(jī)器人控制部分由ROS、機(jī)器人控制系統(tǒng)、I/O通信接口三部分組成。在上位機(jī)安裝機(jī)器人操作系統(tǒng),下位機(jī)搭建機(jī)器人的控制系統(tǒng),上位機(jī)通過串口與下位機(jī)建立通信,將識(shí)別結(jié)果發(fā)送給機(jī)器人控制系統(tǒng),機(jī)器人控制系統(tǒng)接收機(jī)器人操作系統(tǒng)發(fā)送的語(yǔ)音命令,并把語(yǔ)音命令通過I/O通信接口轉(zhuǎn)化為控制信號(hào),控制移動(dòng)機(jī)器人前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)運(yùn)動(dòng)。
使用C++語(yǔ)言分別編寫前述語(yǔ)音識(shí)別過程代碼,形成語(yǔ)音控制系統(tǒng)所需的語(yǔ)音采集軟件包、語(yǔ)音處理軟件包、語(yǔ)音識(shí)別算法軟件包、機(jī)器人控制軟件包,編寫節(jié)點(diǎn)即可調(diào)用相應(yīng)的語(yǔ)音軟件包。應(yīng)用ROS提供的程序接口進(jìn)行g(shù)cc編譯,并移植到ROS相對(duì)應(yīng)的模塊中,通過ROS的通信機(jī)制將各個(gè)獨(dú)立的模塊串接起來,完成整個(gè)語(yǔ)音控制系統(tǒng)的設(shè)計(jì)。各節(jié)點(diǎn)間通信的鏈接關(guān)系,如圖5所示。

圖5 ROS系統(tǒng)下語(yǔ)音控制系統(tǒng)的節(jié)點(diǎn)鏈接
圖5中,方框?yàn)橄ⅲ瑱E圓為節(jié)點(diǎn),矩形為話題。節(jié)點(diǎn)/audio_capture來獲取通過麥克風(fēng)采集的語(yǔ)音控制信號(hào),并發(fā)布消息到/microphone話題;節(jié)點(diǎn)/wakeup_node訂閱/microphone話題,檢測(cè)輸入的語(yǔ)音控制信號(hào)是否為有效的語(yǔ)音信號(hào),來啟動(dòng)語(yǔ)音識(shí)別系統(tǒng),然后,將有效語(yǔ)音控制信號(hào)作為消息發(fā)送到/asr_topic話題;節(jié)點(diǎn)/asr_node訂閱/asr_topic話題,把檢測(cè)到的有效語(yǔ)音控制信號(hào)發(fā)送到語(yǔ)言庫(kù)進(jìn)行匹配,并發(fā)布該消息到/command_topic話題;節(jié)點(diǎn)/command_node訂閱/command_topic話題,經(jīng)過語(yǔ)音匹配和處理,判斷機(jī)器人應(yīng)該執(zhí)行哪個(gè)命令,并把該消息發(fā)布到/move_topic話題;節(jié)點(diǎn)/voice_node訂閱/move_topic話題,接收語(yǔ)音控制命令并發(fā)送給機(jī)器人,從而控制機(jī)器人運(yùn)動(dòng)。
本文硬件平臺(tái)采用擁有Inter雙核處理器的個(gè)人電腦(PC)和turtlebot移動(dòng)機(jī)器人,軟件平臺(tái)采用Ubuntu14.04系統(tǒng),并安裝支持Indigo版本的ROS系統(tǒng),實(shí)現(xiàn)對(duì)移動(dòng)機(jī)器人的語(yǔ)音控制。
為了驗(yàn)證移動(dòng)機(jī)器人的語(yǔ)音控制功能,本文利用ROS提供的虛擬機(jī)器人進(jìn)行仿真測(cè)試,編寫ros_voice.bringup.launch文件,啟動(dòng)語(yǔ)音采集、語(yǔ)音檢測(cè)、語(yǔ)音識(shí)別、機(jī)器人控制等節(jié)點(diǎn)和Turtlesim虛擬機(jī)器人。通過獲取的語(yǔ)音控制指令“前進(jìn)”、“左轉(zhuǎn)”、“后退”和“右轉(zhuǎn)”來控制虛擬機(jī)器人,虛擬機(jī)器人的運(yùn)動(dòng)效果如圖6所示。

圖6 仿真環(huán)境下的語(yǔ)音控制機(jī)器人
為了驗(yàn)證本系統(tǒng)的可行性,對(duì)Turtlebot移動(dòng)機(jī)器人的語(yǔ)音控制效果進(jìn)行測(cè)試, 訓(xùn)練數(shù)據(jù)來自于安靜環(huán)境下10人的(7男3女)語(yǔ)音,以8 000 Hz為采樣率,16 bit為量化。語(yǔ)音命令包括前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、停止等。每個(gè)命令錄音約2 s,錄20次為訓(xùn)練數(shù)據(jù)并保存到語(yǔ)音命令庫(kù)中。測(cè)試數(shù)據(jù)隨機(jī)選取5人(3個(gè)男生,2個(gè)女生)對(duì)移動(dòng)機(jī)器人語(yǔ)音指令前進(jìn)、左轉(zhuǎn)、后退、右轉(zhuǎn)、停止,進(jìn)行50次測(cè)試,測(cè)試結(jié)果如表1所示。

表1 不同人群測(cè)試下的識(shí)別準(zhǔn)確率 %
由表1可知,由于每個(gè)人的發(fā)音不同,導(dǎo)致識(shí)別率不一樣,但平均識(shí)別率仍在94 %以上,能夠滿足機(jī)器人的語(yǔ)音控制要求。為了進(jìn)一步驗(yàn)證本系統(tǒng)的有效性,將本文設(shè)計(jì)的語(yǔ)音控制系統(tǒng)與微軟公司開發(fā)的 Microsoft Speech SDK[10]語(yǔ)音識(shí)別系統(tǒng),分別對(duì)Turtlebot移動(dòng)機(jī)器人的語(yǔ)音控制效果進(jìn)行50次測(cè)試,測(cè)試結(jié)果如表2所示。

表2 不同系統(tǒng)下的語(yǔ)音識(shí)別結(jié)果
由表2可知:本文設(shè)計(jì)的基于ROS的語(yǔ)音控制系統(tǒng)和傳統(tǒng)的語(yǔ)音識(shí)別包的控制系統(tǒng),識(shí)別率分別為95.6 %,94 %,識(shí)別時(shí)間分別為255.6,273.5 ms,表明本文設(shè)計(jì)的語(yǔ)音控制系統(tǒng)具有一定的實(shí)時(shí)性和有效性。
本文在Turtlebot移動(dòng)機(jī)器人平臺(tái)上,實(shí)現(xiàn)了基于ROS的移動(dòng)機(jī)器人語(yǔ)音控制系統(tǒng),實(shí)驗(yàn)結(jié)果表明:系統(tǒng)對(duì)非特定人的語(yǔ)音指令有較好的分辨能力,且對(duì)用戶語(yǔ)音命令的反應(yīng)速度有明顯的提高,系統(tǒng)結(jié)構(gòu)簡(jiǎn)單、成本低、穩(wěn)定性好,能夠滿足對(duì)移動(dòng)機(jī)器人實(shí)時(shí)控制的要求,具有良好的開發(fā)運(yùn)用前景。