許孟雪,曹雅丹,邵慕義,曹滋悅,黃志靜
(北京信息科技大學 計算機學院,北京 100101)
NAO是廣泛應(yīng)用的人形機器人。Aldebaran Robotics公司將NAO的技術(shù)開放給所有的高等教育項目,并于2010年成立基金會,支持在機器人及其應(yīng)用領(lǐng)域的教學項目。NAO可以通過現(xiàn)成的指令塊進行可視化編程,因此,其允許用戶探索各種領(lǐng)域、運用編程達到用戶想要的各種不同效果。教學用機器人有趣、有挑戰(zhàn)性和能激發(fā)想象力,是教與學的得力助手,超過5000個NAO已經(jīng)被全球50個國家的550所頂尖高校和實驗室購買作為研究工具。高校不僅將NAO運用在機器人研究、人工智能、工程學、數(shù)學、物理學和計算機科學領(lǐng)域,還運用在社會學和醫(yī)療保健領(lǐng)域。NAO參與的研究項目包括語音識別、視頻處理、模式識別、自閉癥治療、多智能體系統(tǒng)、全身運動以及路徑規(guī)劃等。本文基于NAO機器人的基礎(chǔ)功能設(shè)計并實現(xiàn)了北京信息科技大學計算機學院的介紹和健翔橋校區(qū)的導(dǎo)游功能。
基于NAO機器人針對北京信息科技大學健翔橋校區(qū)制作的校園導(dǎo)游機器人。對機器人的交互控制是讓機器人識別接收到有效對話和語音操作指令,根據(jù)識別結(jié)果做出應(yīng)答或完成指定操作。通過這種方式來應(yīng)對介紹工作,如:特色教室、特色教學和歷史成就等。此外,為增加導(dǎo)游機器人的趣味性,通過編寫程序,實現(xiàn)可交互的娛樂功能,如:指揮NAO機器人唱歌跳舞、與NAO機器人進行基本的交談等,激發(fā)了學生學習專業(yè)知識的興趣,使學生更快的了解校園。
系統(tǒng)由以下3部分組成:
NAO端:向服務(wù)器發(fā)送語音文件并接收服務(wù)器的反饋;
Web端:用于對數(shù)據(jù)庫里的問答內(nèi)容進行增刪改查。
服務(wù)器端:接收NAO傳來的語音文件,處理后向NAO端發(fā)送反饋。
系統(tǒng)架構(gòu)圖如圖1所示。
圖1 系統(tǒng)架構(gòu)圖Fig.1 System architecture diagram
首先,將學生可能會問的問題和交流對話等存入服務(wù)端數(shù)據(jù)庫,NAO機器人作為一個客戶端,當用戶觸摸其頭部的感應(yīng)器,系統(tǒng)便啟動;接收語音輸入并傳給服務(wù)器端,服務(wù)端將語音識別成文本后利用自然語言處理技術(shù)對文本進行處理,將處理后的文本與數(shù)據(jù)庫語料進行相似度匹配,最終返回結(jié)果至客戶端,回答學生的問題。
使用語音識別、自然語言處理技術(shù)和與數(shù)據(jù)庫相關(guān)的技術(shù)來實現(xiàn)相應(yīng)的功能。語音識別技術(shù)能夠?qū)⑷祟愓Z言信息轉(zhuǎn)化為計算機可以處理的如按鍵、二進制編碼或者字符序列等的序列;自然語言處理技術(shù)主要通過對gensim庫的應(yīng)用,利用TF-IDF、LSA、LDA和word2vec在內(nèi)的多種主題模型算法,及庫內(nèi)自帶的相似度計算,信息檢索等一些常用任務(wù)的API接口實現(xiàn)問題答案的尋找和反饋。
本文利用MySql數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫儲存問答語句,設(shè)置和預(yù)設(shè)答案。在數(shù)據(jù)庫中創(chuàng)建了語料庫表,用來存儲關(guān)于學校各種規(guī)章制度的問題及答案,包括問題的ID,問題及答案,見表1。
表1 語料表Tab.1 Corpus table
服務(wù)器端接收NAO端傳來的語音文件,并利用語音識別技術(shù)將其轉(zhuǎn)換成文本文件,若接收的語音文件內(nèi)容為空,則給出提示信息0;利用關(guān)鍵詞檢索找出該文本中的關(guān)鍵詞,若文本文件不包含關(guān)鍵詞表中的關(guān)鍵詞,也給出提示信息0,若語音文件內(nèi)容不為空,且轉(zhuǎn)換成的文本中含有關(guān)鍵詞表的關(guān)鍵詞,找出數(shù)據(jù)庫中所有關(guān)鍵詞和轉(zhuǎn)換成的文本的關(guān)鍵詞相同的語料,形成備用數(shù)據(jù)集,否則給出提示信息0;將備用數(shù)據(jù)集里的每個數(shù)據(jù)和該文本進行相似度計算并排序,并按排序結(jié)果將備用數(shù)據(jù)集重新存儲;再按照排序結(jié)果由高到低的順序?qū)⒅匦麓鎯Φ膫溆脭?shù)據(jù)集里的數(shù)據(jù)逐一反饋給NAO端,并接收NAO端的反饋,直到NAO端表示接收到滿足要求的數(shù)據(jù)或者數(shù)據(jù)全部反饋為止。若NAO端表示接收到滿足要求的數(shù)據(jù),則將數(shù)據(jù)庫中該數(shù)據(jù)所對應(yīng)的答案信息反饋給NAO端,通過觸摸不同的感應(yīng)器來實現(xiàn)不同的功能。
主要流程如圖2所示。
圖2 主要流程圖Fig.2 Main flow chart
Choregraphe是一款用于連接NAO機器人以及可視化機器人實時狀態(tài)的軟件,目前支持Windows、Mac OS、Linux 3種系統(tǒng),采用圖形化編程,將機器人不同的功能封裝成一個個指令盒,用戶可以通過拖拽指令盒的方式將許多簡單功能組合起來實現(xiàn)一個復(fù)雜的行為,即使不寫代碼也可以開發(fā)出簡單的項目。
NAO使用NAOqi系統(tǒng),現(xiàn)階段NAOqi系統(tǒng)只支持Python2,所以本項目選用Python2開發(fā)。
Python是多數(shù)平臺上寫腳本和快速開發(fā)應(yīng)用的編程語言,隨著版本的不斷更新和語言新功能的添加,逐漸被用于獨立的、大型項目的開發(fā)。
問答系統(tǒng)的實現(xiàn)包括服務(wù)器端和客戶端兩部分。
服務(wù)器端:接收NAO傳來的語音文件并將其轉(zhuǎn)文本、獲取文本關(guān)鍵詞、篩選數(shù)據(jù)庫中與關(guān)鍵詞相同的問題集,提供最優(yōu)答案集。
(1)獲取通行關(guān)鍵字。在百度語音識別官網(wǎng)創(chuàng)建任務(wù)后,官網(wǎng)會分配相應(yīng)的密鑰用來獲取令牌。
(2)使用百度語音識別API將語音轉(zhuǎn)文本。首先拼湊JSON數(shù)據(jù),再以字節(jié)格式讀取參數(shù)中傳來的語音文件并進行編碼。
(3)獲取語句的關(guān)鍵詞。生成語句分詞后的列表變量,與關(guān)鍵詞表里面的關(guān)鍵詞逐一匹配,找出語句的關(guān)鍵詞作為該方法的返回值(在本項目中,默認每一個語句里面只含有一個關(guān)鍵詞)。
(4)查找數(shù)據(jù)庫中與關(guān)鍵詞相同的問題集。連接數(shù)據(jù)庫并找出數(shù)據(jù)庫中所有問題的關(guān)鍵詞,將數(shù)據(jù)庫中關(guān)鍵詞與文本的關(guān)鍵詞相同的問題存儲在一維數(shù)組中。
(5)查找數(shù)據(jù)庫中與問題相對應(yīng)的答案并將其作為該方法的返回值。
(6)計算語句的關(guān)鍵詞和與其具有相同關(guān)鍵詞的問題集的相似度,然后按相似度高低對問題集里面的問題進行排序,并重新存儲。調(diào)用獲取輸入問題的關(guān)鍵詞,找出與關(guān)鍵詞相同的問題集存儲在一維數(shù)組中作為目標文檔,用來分析與測試文檔的相似度。若一維數(shù)組不為空,則進行分詞,分別保存在列表中;獲取詞袋,并將分詞之后的目標文檔和測試文檔都轉(zhuǎn)換為二元組向量,制作語料庫;使用TFIDF模型對語料庫建模,對每個目標文檔分析和測試文檔的相似度,再根據(jù)相似度結(jié)果進行排序。相似度排序的結(jié)果是一個列表,表中每一項是一個元組,元組中前面是原句索引,后面是相似度。
(7)連接客戶端,用socket函數(shù)來創(chuàng)建套接字從而與客戶端建立連接。
客戶端:包含控制NAO機器人錄音、連接服務(wù)器、向服務(wù)器發(fā)送數(shù)據(jù)、接收服務(wù)器的數(shù)據(jù)、控制NAO唱歌跳舞等。
(1)錄音。調(diào)用ALTextToSpeech模塊和ALAudio-Recorder模塊,控制模塊讓NAO機器人說話和錄音,NAO會把錄音文件保存在某個路徑下。
(2)連接服務(wù)器。利用socket函數(shù)來創(chuàng)建套接字,連接NAO機器人和遠程服務(wù)器。
(3)客戶端向服務(wù)器發(fā)送數(shù)據(jù)。獲得錄制的語音文件的當前目錄,并讀取該語音文件將其發(fā)送到服務(wù)器。
(4)客戶端接收服務(wù)器返回數(shù)據(jù)。
(5)循環(huán)錄音。通過得到特定的反饋來循環(huán)錄音,如果得到的反饋不是特定的反饋,則問答循環(huán)結(jié)束,等待啟動機制再次執(zhí)行客戶端盒子。
本文設(shè)計了一款基于NAO機器人的校園導(dǎo)游機器人,針對新生對校園不熟悉的需求展開功能設(shè)計,結(jié)合校園實際環(huán)境和學院的具體情況設(shè)計數(shù)據(jù)庫,實現(xiàn)了指路和唱歌跳舞功能,趣味性十足。但是也有一些缺點,NAO應(yīng)答緩慢不靈活,沒有針對語句匹配動作;需要一定的觸摸來達到問答系統(tǒng)、唱歌與跳舞的轉(zhuǎn)換;因為用電腦做服務(wù)器,每次IPv4地址都會發(fā)生變化,需要改一下相關(guān)位置代碼才可以運行,下一步亟待解決此問題。