薛輝
(商洛學(xué)院 教務(wù)處,商洛 726000)
?
基于語音識別的手機(jī)點(diǎn)菜系統(tǒng)的研究與設(shè)計(jì)
薛輝
(商洛學(xué)院 教務(wù)處,商洛 726000)
為了實(shí)現(xiàn)語音點(diǎn)菜,研究了應(yīng)用語音識別技術(shù)進(jìn)行手機(jī)點(diǎn)菜的關(guān)鍵技術(shù),包括語音識別技術(shù)的選取、語音點(diǎn)菜的流程、BNF語法的編寫以及識別結(jié)果檢測,并設(shè)計(jì)了一個(gè)手機(jī)點(diǎn)菜系統(tǒng)進(jìn)行驗(yàn)證,測試結(jié)果表明該系統(tǒng)識別準(zhǔn)確率高、使用方便。
語音識別; 手機(jī); 點(diǎn)菜; 系統(tǒng)
近幾年,隨著智能手機(jī)的逐漸普及,手機(jī)上的應(yīng)用越來越多,各種APP極大的豐富了手機(jī)的功能,手機(jī)已經(jīng)不僅僅是通訊工具,還逐漸變成了不可或缺的生活用品,在許多方面為人們的生活提供便利。手機(jī)點(diǎn)菜也已經(jīng)成為餐飲行業(yè)的發(fā)展趨勢[1],正以其投入少、回報(bào)快、效率高等優(yōu)勢被餐飲界認(rèn)可[2]。如果能通過語音點(diǎn)菜,就能提供更加良好的用戶體驗(yàn),進(jìn)一步方便客戶,并有效提高餐飲企業(yè)形象。
語音識別技術(shù)是人工智能的重要分支,Google、微軟、百度等公司都投入大量的資金和大批優(yōu)秀的科研人員進(jìn)行深入的研究。科大訊飛經(jīng)過多年的積累,語音技術(shù)達(dá)到了國際領(lǐng)先的水平[3],同時(shí)與學(xué)術(shù)界、產(chǎn)業(yè)界合作,共同打造以語音為核心的科大訊飛語音開放平臺。訊飛開放平臺作為一個(gè)綜合性的智能人機(jī)交互平臺,提供世界領(lǐng)先的語音合成、語音識別、語義理解等技術(shù)[4],本文應(yīng)用科大訊飛的語音識別技術(shù)實(shí)現(xiàn)手機(jī)點(diǎn)菜系統(tǒng)的開發(fā)。
2.1 語音識別技術(shù)的選取
訊飛語音技術(shù)提供了語音聽寫、命令詞識別、語義理解3種不同的語音識別技術(shù)[5],其中語音聽寫是將一段語音轉(zhuǎn)換成文字內(nèi)容,能識別常見的詞匯、語句、語氣并自動(dòng)斷句;命令詞識別是指基于指定的語法結(jié)構(gòu),識別特定的命令詞、關(guān)鍵詞以及短語組合,來判斷用戶是否下達(dá)了某項(xiàng)命令;語義理解是分析用戶語音或文字的意圖,給出相應(yīng)的回答,比如輸入“明天西安的天氣”,即搜索西安第二天的天氣信息并返回給用戶。
對于點(diǎn)菜來說,關(guān)鍵是準(zhǔn)確識別用戶說出的菜名。在以上3種語音識別技術(shù)中,命令詞識別可以精準(zhǔn)識別自定義的詞語,可以把不同的菜名看作不同的命令詞,從而確定用戶點(diǎn)選的菜品,所以選用命令詞識別比較合適。命令詞識別根據(jù)聯(lián)網(wǎng)狀態(tài)不同,又分為在線命令詞識別和離線命令詞識別。離線命令詞識別核心計(jì)算在本地,減少了網(wǎng)絡(luò)交互的時(shí)間,比在線命令詞識別響應(yīng)快,準(zhǔn)確率也相差無幾,可以提供更佳的用戶體驗(yàn),所以選用離線命令詞識別技術(shù)最為合適。
2.2 語音點(diǎn)菜的流程
要使用訊飛語音技術(shù)開發(fā)手機(jī)語音識別系統(tǒng),先要將SDK中l(wèi)ibs目錄下的Msc.jar文件和armeabi文件夾復(fù)制到Android工程的libs目錄中,然后在AndroidManifest.xml文件中添加需要的權(quán)限。語音點(diǎn)菜的流程如圖1所示。
(1)初始化:初始化即創(chuàng)建語音配置對象,只有創(chuàng)建了語音配置對象才可以使用訊飛語音技術(shù)的各項(xiàng)服務(wù)。一般需要將初始化放在程序的入口處,比如Activity的onCreate方法里。

圖1 語音點(diǎn)菜流程
(2)構(gòu)建語法:語音識別的語法定義了語音識別所支持的命令詞的集合,高效合理的語法是準(zhǔn)確進(jìn)行語音識別的關(guān)鍵。
(3)語音輸入:客戶依次說出需要點(diǎn)選的菜名和份數(shù),可以只說菜名,也可以說完整的或關(guān)鍵部分的自然語言。
(4)語音識別:調(diào)用訊飛語音離線命令詞識別技術(shù),基于構(gòu)建的語法對命令詞進(jìn)行識別,這里的命令詞包括菜名、份數(shù)和一些輔助詞語。
(5)結(jié)果檢測:檢測識別的結(jié)果是否正確,如果正確即把所點(diǎn)的菜品加入客戶菜單,如果不正確取消該菜品。
(6)繼續(xù)點(diǎn)菜:客戶如果需要繼續(xù)點(diǎn)菜,接著說出下一句點(diǎn)菜的語句即可。
2.3 BNF語法編寫
語音識別的語法定義了語音識別所支持的命令詞的集合,訊飛離線命令詞識別技術(shù)使用巴科斯范式(BNF)描述語音識別的語法。語法文檔被編譯成識別網(wǎng)絡(luò)后,將被送往語音識別器。語音識別器提取輸入語音的特征信息并在識別網(wǎng)絡(luò)上進(jìn)行路徑匹配,最終識別出用戶說話的內(nèi)容。因此語法結(jié)構(gòu)是否合理,直接關(guān)系到識別的準(zhǔn)確率高低,構(gòu)建高效合理的語法是開發(fā)語音識別系統(tǒng)的核心內(nèi)容。本系統(tǒng)設(shè)計(jì)的語法文件如下:
#BNF+IAT 1.0 UTF-8;
!grammar call;
!slot
!slot
!slot
!start
][
][
:我|我想|我要|給我|幫我|讓我|再;
:點(diǎn)|來|上|訂;
:十!id(10);
:一!id(1)|二!id(2)|三!id(3)|四!id(4)|五!id(5)|六!id(6)|七!id(7)|八!id(8)|九!id(9)| 兩!id(2)|雙!id(2)|倆!id(2)|仨!id(3);
:個(gè)|份|盤|碗|條;
:麻婆豆腐|魚香肉絲|宮保雞丁|糖醋里脊|酸菜魚|紅燒肉|米飯; 使用該語法文件,客戶既可以直接說出菜名,也可以說完整的或關(guān)鍵部分的自然語言。比如客戶想點(diǎn)魚香肉絲,可以使用“來盤魚香肉絲”,“我要一盤魚香肉絲”,“魚香肉絲來一份”,“給我上個(gè)魚香肉絲”等等各種說法,使用非常方便。
該語法文件的編寫采用完整語句分析、非關(guān)鍵詞可省略的方法。點(diǎn)菜通常有兩種說法,一種是份數(shù)在前、菜名在后,比如“我要點(diǎn)一盤魚香肉絲”,另一種是菜名在前、份數(shù)在后,比如“魚香肉絲給我來一盤”,所以設(shè)計(jì)了
和 兩種語法格式,都使用命令詞組成完整的句子,并把可有可無的命令詞設(shè)為可以省略。在點(diǎn)菜時(shí),一般的菜品通常只點(diǎn)一兩份,而米飯有可能點(diǎn)十多碗甚至二三十碗,所以需要識別一百以內(nèi)的數(shù)值。該語法文件采用單個(gè)數(shù)值重復(fù)、中間加十的方法,可以識別一到九十九范圍內(nèi)的數(shù)值,能夠滿足點(diǎn)菜的需求,還支持特殊的數(shù)值說法,比如兩、仨等,并且給數(shù)值定義了相應(yīng)的id,方便在返回的結(jié)果中識別數(shù)值。為了方便增加或者刪除菜品種類,該語法文件把菜名設(shè)置成了槽。槽是一種特殊的規(guī)則,描述了一系列并列的記號,并且不包含任何子規(guī)則,可以在程序運(yùn)行過程中實(shí)時(shí)增減槽中的記號,借用此功能,可以通過程序增減菜品種類,而無須修改語法。 2.4 識別結(jié)果檢測
訊飛語音識別技術(shù)可以使用JSON格式或XML格式返回語音識別結(jié)果。JSON(JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交換格式,易于機(jī)器解析和生成,也便于人閱讀和編寫,是一種簡單易用的數(shù)據(jù)交換語言。為了方便對語音識別的結(jié)果進(jìn)行檢測,本系統(tǒng)采用JSON格式。
語音識別模塊返回JSON格式文本后,通過循環(huán)檢測ws里的每一個(gè)對象找出slot值為
的對象,該對象的cw里第零個(gè)元素的w值(ws[n].cw[0].w)即客戶所點(diǎn)的菜名。對于數(shù)值,需要檢測slot值為 和 的對象,將幾個(gè)對象的cw里第零個(gè)元素的id值(ws[n].cw[0].id)組合起來即可獲得客戶所說的數(shù)值。 3 系統(tǒng)的設(shè)計(jì)
3.1 系統(tǒng)的需求分析
該系統(tǒng)主要提供點(diǎn)菜功能,涉及到的用戶包括客戶、廚師、服務(wù)員、財(cái)務(wù)人員等,客戶可以使用該系統(tǒng)進(jìn)行語音點(diǎn)菜、呼叫服務(wù)、手機(jī)支付等,廚師可以增加或者修改菜品種類、查看每個(gè)餐桌的菜單并負(fù)責(zé)做好,服務(wù)員負(fù)責(zé)上菜,財(cái)務(wù)人員可以使用該系統(tǒng)進(jìn)行財(cái)務(wù)統(tǒng)計(jì)與分析[6]。當(dāng)有客戶呼叫服務(wù)時(shí),系統(tǒng)會(huì)向服務(wù)員發(fā)出消息,以便服務(wù)員及時(shí)提供服務(wù)。系統(tǒng)也支持廚師、服務(wù)員、財(cái)務(wù)人員之間的信息傳遞,以替代對講機(jī)的功能。系統(tǒng)可以完成完整的點(diǎn)菜、上菜、服務(wù)、結(jié)賬等工作環(huán)節(jié),滿足中小餐廳的一般需求。
3.2 系統(tǒng)的體系結(jié)構(gòu)
系統(tǒng)的體系結(jié)構(gòu)如圖2所示。
圖2 系統(tǒng)的體系結(jié)構(gòu)
該系統(tǒng)按照輕量級Java EE企業(yè)級架構(gòu)設(shè)計(jì)[7],基于Android系統(tǒng)和Java EE平臺開發(fā),采用Tomcat服務(wù)器程序,使用MySQL數(shù)據(jù)庫[8]。用戶使用手機(jī)上的Android客戶端通過網(wǎng)絡(luò)向服務(wù)器發(fā)送請求,服務(wù)器端程序通過JDBC訪問數(shù)據(jù)庫[9],進(jìn)行瀏覽、添加、刪除、修改等操作,然后把結(jié)果返回給客戶端,用戶通過手機(jī)可以查看請求的結(jié)果。
3.3 系統(tǒng)的功能模塊
基于以上的需求分析,把系統(tǒng)的功能模塊劃分為菜品種類管理、菜單管理、信息服務(wù)、財(cái)務(wù)管理四大塊,如圖3所示。
圖3 系統(tǒng)的功能模塊
菜品種類管理模塊主要供廚師瀏覽、添加、修改或者刪除餐廳所提供的菜品種類;菜單管理模塊主要用來進(jìn)行語音點(diǎn)菜,還提供了瀏覽菜單、修改菜品和刪除菜品功能,以輔助進(jìn)行點(diǎn)菜操作;信息服務(wù)模塊用來傳遞信息,客戶可以使用該模塊呼叫服務(wù)員進(jìn)行服務(wù),廚師、服務(wù)員和財(cái)務(wù)人員之間可以相互發(fā)送語音;財(cái)務(wù)管理模塊提供手機(jī)支付和財(cái)務(wù)統(tǒng)計(jì)功能。
4 系統(tǒng)測試
筆者把該系統(tǒng)的語音點(diǎn)菜功能分別在某餐廳安靜的包間(低噪音)和嘈雜的大廳(中等噪音)進(jìn)行了測試,結(jié)果如表1所示:
表1 語音識別正確率測試結(jié)果
從表1可見,該系統(tǒng)在低噪音環(huán)境下語音識別的正確率達(dá)到94.3%,中等噪音環(huán)境下也能達(dá)到84.7%,正確率是比較高的。當(dāng)識別結(jié)果有誤時(shí),如果是菜品的名稱有誤,可以使用“刪除菜品”功能直接刪掉重新說;如果是份數(shù)有誤,可以使用“修改菜品”功能點(diǎn)擊加減號稍加修改,也可以直接刪掉重新說。結(jié)合這兩項(xiàng)功能,本系統(tǒng)可以達(dá)到實(shí)用的程度。
5 總結(jié)
語音交互是最方便的人機(jī)交互方式之一。隨著人工智能的發(fā)展,語音識別技術(shù)已經(jīng)發(fā)展到了很高的階段,把語音技術(shù)應(yīng)用到各種系統(tǒng)中,能為用戶提供更加良好的操作體驗(yàn)[10]。本文所設(shè)計(jì)的基于語音識別技術(shù)的手機(jī)點(diǎn)菜系統(tǒng),是應(yīng)用語音技術(shù)的一次有益嘗試,識別準(zhǔn)確率高,使用方便,在餐飲企業(yè)有著廣泛的應(yīng)用前景,希望能為更多的系統(tǒng)應(yīng)用語音技術(shù)提供參考和啟示。
[1] 周洪艷,林超,丁頌. 基于Android的點(diǎn)餐系統(tǒng)APP設(shè)計(jì)[J]. 長春師范大學(xué)學(xué)報(bào),2016,(12):34-38.
[2] 許朝輝. 基于Android手機(jī)的智能點(diǎn)餐系統(tǒng)設(shè)計(jì)[J]. 機(jī)械設(shè)計(jì)與制造工程,2016,(12):42-45.
[3] 李慧. 基于訊飛語音的安卓手機(jī)應(yīng)用開發(fā)步驟的研究[J]. 無線互聯(lián)科技,2015,(14):123-124.
[4] 王海洋,郭星. 基于語音識別的智慧旅游系統(tǒng)研究[J]. 計(jì)算機(jī)技術(shù)與發(fā)展,2015,(05):143-147.
[5] 訊飛語音提升停車場管理系統(tǒng)智能化水平[J]. 計(jì)算機(jī)與信息技術(shù),2011,(04):78.
[6] 張璘,李明明,馮陳偉. 基于Android的無線打印點(diǎn)餐系統(tǒng)[J]. 廈門理工學(xué)院學(xué)報(bào),2016,(05):74-78.
[7] 謝娜. Android平板電腦的電子菜單優(yōu)化設(shè)計(jì)[J]. 自動(dòng)化與儀器儀表,2016,(11):189-190.
[8] 陳松. 基于Android平臺的家居遠(yuǎn)程語音控制系統(tǒng)研究[J]. 赤峰學(xué)院學(xué)報(bào)(自然科學(xué)版),2016,(21):25-26.
[9] 李小俊,肖佳,劉振宇. Android平臺下基于動(dòng)態(tài)加載的點(diǎn)餐APP的設(shè)計(jì)與實(shí)現(xiàn)[J]. 軟件產(chǎn)業(yè)與工程,2016,(06):25-26.
[10] 郭海賓,王艷秋,燕孝飛. 基于Android平臺的手機(jī)語音記錄器的設(shè)計(jì)與實(shí)現(xiàn)[J]. 福建電腦,2015,(10):24-25.
Research and Design of a Mobile Phone Ordering System Based on Speech Recognition
Xue Hui
(The Teaching Affairs Service, Shangluo University, Shangluo 726000, China)
In order to realize ordering dish by speech, this paper studied the key technologies of using speech recognition to order dish by mobile phone. The key technologies include the selection of speech recognition technology, the speech ordering processing, the preparation of BNF grammar, and the detection of speech recognition results. This paper also designed a mobile phone ordering system to verify the key technologies. The test results showed that the system has high recognition accuracy and is easy to use.
Speech recognition; Mobile phone; Ordering dish; System
薛 輝(1983-),男,商洛人,碩士,工程師,研究方向:計(jì)算機(jī)教育教學(xué)改革、應(yīng)用軟件開發(fā)。
1007-757X(2017)07-0059-03
TP311
A
2017.02.27)
猜你喜歡Smartflower POP 一體式光伏系統(tǒng) 工業(yè)設(shè)計(jì)(2022年8期)2022-09-09 07:43:20WJ-700無人機(jī)系統(tǒng) 軍民兩用技術(shù)與產(chǎn)品(2021年10期)2021-03-16 06:05:30ZC系列無人機(jī)遙感系統(tǒng) 北京測繪(2020年12期)2020-12-29 01:33:58基于PowerPC+FPGA顯示系統(tǒng) 裝備制造技術(shù)(2019年12期)2019-12-25 03:06:46基于UG的發(fā)射箱自動(dòng)化虛擬裝配系統(tǒng)開發(fā) 制造技術(shù)與機(jī)床(2019年10期)2019-10-26 02:47:06半沸制皂系統(tǒng)(下) 中國洗滌用品工業(yè)(2019年4期)2019-05-11 09:27:34FAO系統(tǒng)特有功能分析及互聯(lián)互通探討 鐵道通信信號(2018年5期)2018-06-28 03:06:24連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini 家庭影院技術(shù)(2017年9期)2017-09-26 03:41:45一德系統(tǒng) 德行天下 知識經(jīng)濟(jì)·中國直銷(2017年5期)2017-06-15 20:28:19PLC在多段調(diào)速系統(tǒng)中的應(yīng)用 通信電源技術(shù)(2016年6期)2016-04-20 06:21:32