徐忠蓮
(哈爾濱工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院, 哈爾濱 150001)
隨著經(jīng)濟(jì)的發(fā)展,人們生活水平的顯著提高,越來越多的人愿意聘請(qǐng)家政來替代工作,從而把人們從煩重的家務(wù)中解脫出來。與文字的方式相比,語音交互對(duì)話的方式更加符合人們的交流溝通習(xí)慣,因此人機(jī)對(duì)話交互系統(tǒng)近年來在汽車導(dǎo)航、機(jī)票預(yù)訂等各方面得到了廣泛的應(yīng)用。安卓系統(tǒng)的市場(chǎng)份額為全球第一,擁有廣大的用戶基礎(chǔ)。因此本文通過調(diào)用科大訊飛的語音合成、語音識(shí)別功能,基于安卓系統(tǒng)實(shí)現(xiàn)了以語音為交互方式的一款家政預(yù)約移動(dòng)應(yīng)用。
本文將家政所需的所有信息組織成一個(gè)樹狀結(jié)構(gòu),基于這個(gè)樹狀結(jié)構(gòu)來實(shí)現(xiàn)與用戶的多輪對(duì)話交互,存儲(chǔ)和管理與用戶交互的所有歷史信息,并基于當(dāng)前已有信息做出決策,保持與用戶的持續(xù)交流。當(dāng)用戶給出預(yù)約家政的全部必要信息后,基于IHS算法,向用戶詢問家政的某些屬性信息,通過用戶的回答,最后推薦用戶所需要的家政服務(wù)人員,結(jié)束本次家政預(yù)約服務(wù)。
本文客戶端基于安卓系統(tǒng),服務(wù)端基于Spring Boot開發(fā),通過調(diào)用科大訊飛API、IHS算法實(shí)現(xiàn)以語音為交互方式的家政預(yù)約服務(wù),使用mySql存取數(shù)據(jù)。
科大訊飛的智能語音核心技術(shù)代表著世界領(lǐng)先水平,自90年代中期以來,在多次的國(guó)內(nèi)外語音合成評(píng)測(cè)中,各項(xiàng)關(guān)鍵指標(biāo)均名列前茅。在2016年國(guó)際語音識(shí)別大賽中(CHiME)科大訊飛取得全部指標(biāo)第一。語音識(shí)別準(zhǔn)確率超過98%,語音輸入速度達(dá)180字/分,識(shí)別結(jié)果響應(yīng)時(shí)間低于200ms。并且支持多種方言,用戶群廣泛。還可以基于用戶語音特征建立個(gè)性化詞條語言模型,通過調(diào)整識(shí)別參數(shù),提高用戶的個(gè)性化詞條識(shí)別準(zhǔn)確率。基于深度全序列卷積神經(jīng)網(wǎng)絡(luò)的語音轉(zhuǎn)寫提供文化格式智能轉(zhuǎn)換功能,能夠?qū)㈦娫捥?hào)碼、車牌、日期、時(shí)間以及量詞規(guī)整,如“五點(diǎn)三十”引擎將規(guī)整為“5:30”。語音合成能夠?qū)⑽谋巨D(zhuǎn)為流暢、清晰、自然的語音數(shù)據(jù),其合成音頻的自然度和清晰度已經(jīng)超過普通人的朗讀水平。可以動(dòng)態(tài)調(diào)整語音、語速、音高等參數(shù)定制用戶自己專屬的語音。
Android是由Google開發(fā)的移動(dòng)操作系統(tǒng),基于Linux內(nèi)核和一些開源軟件的修改版本。主要設(shè)計(jì)用于觸摸屏移動(dòng)設(shè)備,如智能手機(jī)和平板電腦。2011年第一季度,Android在全球的市場(chǎng)份額首次超過塞班系統(tǒng),躍居全球第一。截至2017年5月,Android擁有超過20億的月活躍用戶,是任何操作系統(tǒng)的最大安裝基數(shù)。
Android的默認(rèn)用戶界面主要基于直接操作,使用與真實(shí)世界操作松散對(duì)應(yīng)的觸摸輸入,例如滑動(dòng)、輕敲、捏、反捏以操縱屏幕上的對(duì)象以及虛擬鍵盤。Android的系統(tǒng)架構(gòu)和其操作系統(tǒng)一樣,采用了分層的架構(gòu)。Android分為四個(gè)層,從高層到低層分別是應(yīng)用程序?qū)印?yīng)用程序框架層、系統(tǒng)運(yùn)行庫(kù)層和Linux內(nèi)核層,如圖1所示。安卓一共有四大組件,分別是Activity活動(dòng),通常就是1個(gè)單獨(dú)的窗口;Service服務(wù),用于在后臺(tái)完成用戶指定的操作;Content Provider 內(nèi)容提供器,使1個(gè)應(yīng)用程序的指定數(shù)據(jù)集提供給其余應(yīng)用程序,實(shí)現(xiàn)數(shù)據(jù)共享;Broadcast Receiver 廣播接收器,對(duì)外部事件進(jìn)行過濾,只對(duì)感興趣的事件進(jìn)行接收并做出響應(yīng)。Android具有很強(qiáng)的開放性、兼容性、可移植性,便于開發(fā),并且無縫結(jié)合Google應(yīng)用。
Spring Boot是由Pivotal團(tuán)隊(duì)提供的,其設(shè)計(jì)目的是用來簡(jiǎn)化新Spring應(yīng)用的初始搭建以及開發(fā)過程,可以快速高效地創(chuàng)建一個(gè)獨(dú)立的、生產(chǎn)級(jí)的、可直接運(yùn)行的Spring應(yīng)用。其擁有以下特征:
(1)可以創(chuàng)建獨(dú)立的Spring應(yīng)用,Spring Boot可以通過jar包的形式來運(yùn)行,非常方便。
(2)內(nèi)嵌Servlet容器,直接嵌入Tomcat、Jetty或者Undertow,這樣用戶不需要用war包的形式部署項(xiàng)目。
(3)提供自己的‘starter’POMs來簡(jiǎn)化Maven配置,非常方便地進(jìn)行包管理, 很大程度上減少了jar hell或者dependency hell。
(4)盡可能自動(dòng)配置Spring。
(5)提供生產(chǎn)就緒功能,如指標(biāo)、運(yùn)行狀況檢查和外部化配置,基于http、ssh、telnet對(duì)運(yùn)行時(shí)的項(xiàng)目進(jìn)行監(jiān)控。
(6)絕對(duì)不會(huì)生成代碼,并且不需要XML配置,通過條件注解的方式來實(shí)現(xiàn)。
尤其Spring Boot集成了大量常用的第三方庫(kù)配置(例如Jackson、 JDBC、 Mongo、 Redis等),Spring Boot應(yīng)用中這些第三方庫(kù)幾乎可以零配置的開箱即用(out-of-the-box),大部分的Spring Boot應(yīng)用都只需要非常少量的配置代碼,開發(fā)者能夠更加專注于業(yè)務(wù)邏輯。
本文設(shè)計(jì)并實(shí)現(xiàn)了基于語音交互的家政預(yù)約安卓移動(dòng)應(yīng)用,系統(tǒng)總體架構(gòu)如圖2所示。本次設(shè)計(jì)是在Windows平臺(tái)下,使用Spring Boot作為系統(tǒng)的后臺(tái)整體基礎(chǔ)架構(gòu),包含了基于樹結(jié)構(gòu)的對(duì)話管理模塊、基于IHS算法的服務(wù)個(gè)體選擇模塊、用戶基本信息管理模塊、用戶登錄模塊、語音交互模塊,前端使用安卓界面與用戶進(jìn)行交互,客戶端與服務(wù)器端通信采用Volley網(wǎng)絡(luò)框架。數(shù)據(jù)庫(kù)則采用的是MySQL。
依據(jù)對(duì)家政預(yù)約服務(wù)的需求分析,系統(tǒng)總體功能設(shè)計(jì)模塊結(jié)構(gòu)如圖3所示。

圖3 系統(tǒng)總體功能模塊圖
各個(gè)模塊的功能設(shè)計(jì)闡述如下:
(1)用戶登錄模塊。已創(chuàng)建賬戶的合法用戶通過用戶賬號(hào)和密碼登錄系統(tǒng)以使用預(yù)約家政功能,可隨時(shí)修改賬戶密碼。
(2)語音交互模塊。語音聽寫的功能是將用戶輸入的語音轉(zhuǎn)成文字,再傳輸給自然語言理解。語音合成的功能是將后臺(tái)服務(wù)端返回安卓終端的文字形式結(jié)果轉(zhuǎn)為語音形式,當(dāng)用戶點(diǎn)擊響應(yīng)對(duì)話框時(shí),進(jìn)行語音播報(bào)。
(3)個(gè)人信息管理模塊。個(gè)人基本信息管理主要是服務(wù)地址的管理,用戶可以對(duì)服務(wù)地址進(jìn)行添加、修改和刪除,并選擇一個(gè)地址作為默認(rèn)服務(wù)地址,每次用戶下單時(shí)除非用戶主動(dòng)修改,否則默認(rèn)使用此地址作為服務(wù)地址。
(4)對(duì)話管理模塊。通過將預(yù)約家政需要的全部信息分為必須信息和非必須信息,并將其組織成一個(gè)樹狀結(jié)構(gòu),通過用戶輸入對(duì)樹進(jìn)行填充,并且驗(yàn)證樹中節(jié)點(diǎn)的合法性,根據(jù)當(dāng)前樹的結(jié)構(gòu)狀態(tài)推理應(yīng)答焦點(diǎn),繼續(xù)與用戶的交互。
(5)服務(wù)個(gè)體選擇模塊。當(dāng)用戶已經(jīng)輸入所有的必須信息時(shí),通過IHS算法,詢問用戶問題,根據(jù)用戶回答,推薦給用戶最合適的家政服務(wù)人員。
MySQL是一種關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),將數(shù)據(jù)保存在不同的表中。本系統(tǒng)主要包括用戶登錄表、用戶地址管理表、家政服務(wù)人員表、服務(wù)提供商信息表。各表之間是一對(duì)一和一對(duì)多關(guān)系。一個(gè)用戶對(duì)應(yīng)一個(gè)登錄信息、多個(gè)用戶地址。一個(gè)家政服務(wù)人員對(duì)應(yīng)一個(gè)服務(wù)提供商,一個(gè)服務(wù)提供商對(duì)應(yīng)多個(gè)家政服務(wù)人員。
本文基于樹結(jié)構(gòu)進(jìn)行對(duì)話管理,與用戶進(jìn)行多輪交互。將家政作為樹根,家政屬性作為子節(jié)點(diǎn)。其中,子節(jié)點(diǎn)又根據(jù)需求分為必須子節(jié)點(diǎn)和非必須子節(jié)點(diǎn)。例如,預(yù)約家政必須提供上門時(shí)間,這個(gè)就是必須子節(jié)點(diǎn)。對(duì)于家政的從業(yè)經(jīng)驗(yàn)用戶可以選擇有無要求,因此可以分為非必須子節(jié)點(diǎn)。對(duì)于樹中的每個(gè)節(jié)點(diǎn)都要驗(yàn)證其合法性,首先驗(yàn)證必須子節(jié)點(diǎn)的合法性,當(dāng)所有必須子節(jié)點(diǎn)都合法時(shí),再驗(yàn)證非必須子節(jié)點(diǎn)的合法性,對(duì)于不合法的節(jié)點(diǎn)作為應(yīng)答焦點(diǎn),讓用戶填充或修改其屬性值。當(dāng)樹中的必須子節(jié)點(diǎn)被填充完整,且樹中當(dāng)前所有節(jié)點(diǎn)都合法時(shí),則整棵樹合法,即接下來調(diào)用IHS算法為用戶推薦服務(wù)個(gè)體。
本文用到的服務(wù)器與客戶端之間通信的方式主要是客戶端主動(dòng)發(fā)送請(qǐng)求,服務(wù)器端接收到請(qǐng)求后,對(duì)請(qǐng)求信息進(jìn)行處理,并反饋結(jié)果。本系統(tǒng)采用的Volley網(wǎng)絡(luò)框架,可以自動(dòng)調(diào)度網(wǎng)絡(luò)請(qǐng)求、支持多個(gè)并發(fā)的網(wǎng)絡(luò)連接、支持請(qǐng)求優(yōu)先級(jí),通過使用標(biāo)準(zhǔn)的HTTP緩存機(jī)制保持磁盤和內(nèi)存響應(yīng)的一致,并且其健壯性強(qiáng),便于正確地更新UI和獲取數(shù)據(jù)。適合其數(shù)據(jù)量不大,但通信頻繁的網(wǎng)絡(luò)操作。Volley的應(yīng)用流程為,首先創(chuàng)建RequestQueue對(duì)象,然后根據(jù)自己的需求組建Url,創(chuàng)建StringRequest參數(shù),將StringRequest添加到RequestQueue對(duì)象中,最后設(shè)置回調(diào)接口,對(duì)數(shù)據(jù)進(jìn)行操作。
由于IFLYTEK's API能夠處理的語音文件類型只有pcm和wav格式,而安卓AudioRecord的錄音文件類型只有amr格式,因此在進(jìn)行語音識(shí)別之前需要將amr文件轉(zhuǎn)成wav格式。調(diào)用IFLYTEK's API實(shí)現(xiàn)語音合成和語音聽寫,首先創(chuàng)建一個(gè)SpeechRecognizer對(duì)象,然后設(shè)置領(lǐng)域、語言、返回格式等各項(xiàng)參數(shù),在用戶輸入完之后調(diào)用SpeechRecognizer.startListening ()方法,開始語音識(shí)別,在用戶點(diǎn)擊錄音條目后,通過SpeechSynthesizer.startSpeaking()方法開始語音合成。
系統(tǒng)實(shí)現(xiàn)基于語音交互的預(yù)約家政服務(wù)各個(gè)功能,其中,登錄界面如圖4所示;語言交互界面如圖5所示;地址管理界面如圖6所示。

圖6 地址管理界面
本系統(tǒng)是基于語音交互的家政預(yù)約移動(dòng)應(yīng)用,旨在將科大訊飛的語音API和安卓系統(tǒng)結(jié)合起來,用更加自然親近的方式與用戶交互,提供家政預(yù)約功能。交互過程中使用基于樹結(jié)構(gòu)的對(duì)話管理方式,對(duì)用戶輸入做出響應(yīng)。基于IHS算法為用戶推薦家政個(gè)人服務(wù)人員,在最少輪次的詢問中,得到符合用戶需求的服務(wù)人員目標(biāo)。本系統(tǒng)還選取了30名實(shí)驗(yàn)者,對(duì)該APP進(jìn)行體驗(yàn)測(cè)試,結(jié)果表明本軟件擁有很多的用戶體檢,具有良好的市場(chǎng)前景。