路遠爭 張凱亮 曹興旗 許武



摘 要:在汽車駕駛中,由于各種意外情況,駕駛者經常需要去控制手機或者車內的其它設備,這時手就會離開方向盤,這顯然給汽車安全駕駛埋下安全隱患。因此,利用智能語音識別技術來改變駕駛環境下現有的人機交互方式,從而解放駕駛者的雙手,有效的提高駕車安全性。本設計以Android開發平臺為基礎,為車載環境下的用戶提供一個可以直接識別語音指令的系統。該系統主要實現語音識別、語音合成、查看當前位置、導航、控制車輛天窗等功能。結果表明,該系統具有較好的識別效果,界面友好操作簡便,能夠消除一定的駕駛環境下的安全隱患。該平臺也可以作為語音云體驗質量測試的基礎平臺。
關鍵詞:Android Studio;百度語音SDK;語音識別;語音合成
1設計背景與意義
服務機器人以服務為目的,但是在處理一些特定場景下的人機交互的時候,比如駕車時,這時候交互就會比較困難,因為沒法空出雙手沒法去操控機器。因此人們需要一種更方便、更自然、更加人性化的方式與機器交互,而不僅僅是復雜的鍵盤和按鈕操作?;诼犛X的人機交互是該領域的一個重要發展方向。語音識別技術,也被稱為自動語音識別,即讓機器通過識別把人類的語音信號轉變為相應的文本或命令的技術,能讓計算機理解和運用人類的自然語言,實現人機之間的自然語音通信。自動語音識別技術所要解決的問題是就是讓計算機能夠“聽懂”人類的語言,將語言中包含的文字信息“提取”出來。
語音識別技術是一門交叉學科 ,語音識別正逐步成為信息技術中人機交互的關鍵技術,語音識別技術與語音合成技術的結合,開啟了人機交互方式的新時代,它將徹底解放用戶的雙手與眼睛,使人們能夠甩掉鍵盤,通過語音命令進行操作。語音技術的應用已經成為一個具有競爭性的新興高技術產業。當今,語音識別產品在人機交互應用中占到越來越大的比例。不難想象,語音命令操作一定會完美替代現如今智能設備上最為流行的按鍵以及觸摸操作。
如今汽車工業在不斷發展,人們的生活品質隨著可以駕車出行有著巨大的提升,同樣的,智能車載系統也是人們最為看重的。隨著車載語音系統及各類語音識別軟件的開發,語音識別開始走入人們的生活,憑借其實用性和準確性得到了用戶的認可。互聯網和移動通訊技術的不斷發展加快了移動APP的廣泛應用,這意味著語音識別技術逐漸走進了移動APP中。本系統摒棄了傳統的、繁雜的手動操作的累贅。系統旨在改變傳統的人機交互方式,使人們能夠在生活環境中采用更為直接便利的方式與手機對話,獲取更為便捷有效的人機交互。
2系統的總體設計
系統的總體功能模塊結構如圖1所示,其中,語音識別模塊和語音合成模塊的實現利用的是百度語音技術服務提供的軟件開發工具包。GPS定位模塊和APP拉起模塊利用的是安卓自帶的軟件開發工具包來實現的。
本次設計所采用的百度語音識別技術是通過百度語音開放平臺為廣大開發者提供精準、免費、安全、穩定的服務。不同于以往的識別模塊,百度的語音識別技術采用的是類似神經網絡的深度學習算法,這個算法是比目前主流語音識別系統更為簡單更為有效的方法,所以也大幅度的提升了識別效率。
上傳整個錄音文件。百度語音識別要求安靜的環境,真人的正常語速的日常用語,并且不能多個人同時發音。
以下場景講會導致識別效果變差:
1)吵雜的環境;
2)有背景音樂,包括揚聲器在播放百度合成的語音;
3)使用非遠場語音時,離麥克風較遠。
語音識別SDK的主要輸入事件如表1所示
其中,主要利用ASR_START 事件常用的輸入事件參數如表2所示。
3 系統的功能設計與實現
3.1軟件的總體設計
軟件主要包括五個功能,分別為語音識別功能、語音合成功能、位置獲取功能、音樂播放功能以及交互功能。語音識別功能實現將外界的語音信息識別轉換為機器可以理解的字符序列。語音合成功能實現的是將語音識別的字符序列合成為語音并播放。位置獲取功能是通過手機GPS獲取當前的位置信息并保存。音樂播放功能是啟動新界面并自動開始播放音樂。交互功能通過語音識別的結果,判斷外界語音的目的。例如外界語音內容為“打開蝦米音樂”,語音識別模塊將進行識別,并顯示識別結果“打開蝦米音樂”,語音合成模塊將會合成內容“正在打開蝦米音樂”并且播放,同時交互模塊會啟動手機里面的蝦米音樂APP,系統的總體流程圖如圖1所示。
3.2 語音識別功能實現
語音識別的實現首先新建事件監聽類對象EventListener yls,并實現回調接口OnEvent(String name, String params, byte[] data, int offset, int length),OnEvent方法會處理識別過程中的回調事件。OnEvent方法中,name是輸出事件名,params是事件返回的JSON格式數據,(data,offset, length)三者一起組成額外數據。如回調的音頻數據,從data[offset]開始至data[offset + length] 結束,長度為length。
然后需要新建一個EventManager類對象asr,并初始化EventManager對象asr,即EventManager asr =EventManagerFactory.create(this, "asr");同時為asr設置語音識別監聽器asr.registerListener(yls)。
事件管理器以及事件監聽器設置完之后,開始識別只需要利用EventManager類中的send 方法發送asr_star參數,即asr.send(SpeechConstant.ASR_START, json, null, 0, 0),其中json參數用來存放需要發送的識別參數。
同樣的,停止識別與取消識別也是通過該方法實現,代碼如下:
asr.send(SpeechConstant.ASR_STOP,null,null,0,0);? asr.send(SpeechConstant.ASR_CANCE, null, null, 0, 0);
開始事件發送之后,程序開始進行語音識別,然后需要觀察回調事件中的輸出事件名,當輸出事件名為final_result時,代表著識別結束。這時,識別結果就是params中的best_result數據。程序的語音識別流程圖如圖2所示。
3.3語音合成功能實現
首先新建一個SpeechSynthesizer對象mSpeechSynthesizer并設置當前的Context。同時為mSpeechSynthesizer設置監聽器,即? ? ?mSpeechSynthesizer.setSpeechSynthesizerListener(listener);
回調成功后,SDK會調設置的SpeechSynthesizerListener 里的回調方法。在語音合成前,還需要進行合成參數的設置以及合成引擎的初始化。
百度語音合成SDK提供了兩個合成播放接口即synthesize方法和speak方法,synthesize方法只有合成功能,speak方法是在合成后立即播放,此設計選用的是speak方法。
需要注意的是,合成的每個文本text不能超過1024的GBK字節,即512個漢字或英文字母數字。超過需要按照句號問號等標點切分,調用多次合成接口。在合成播放完成之后,需要釋放資源,即將mSpeechSynthesizer設為null。
語音合成模塊的流程圖如圖3所示。
3.4定位功能實現
如果只需要一個簡單定位,Android已經提供了兩個獲取經緯度的方式。GPS獲取當前位置和網絡定位獲取當前位置。相對來說,GPS準確度高但耗電多,網絡定位耗電少但準確度低。通過GPS芯片接收衛星的定位信息,定位精度達10米以內,因此本次開發選擇的是GPS獲取當前位置。
要利用GPS獲取位置信息首先需要在AndroidMainfest.xml中添加一個權限,即
該權限是允許程序訪問精良位置(如GPS)。然后編寫beginLocatioon()方法用來獲取位置信息。具體實現流程如圖4所示。
3.5交互功能實現
交互功能實現的是判斷語音識別內容,然后執行語音命令,比如打開高德地圖,本軟件就會自動拉起高德地圖APP。此次是利用包名,特定Activity名拉起方式。具體代碼如下:
Intent it=new Intent();//交互功能的實現
ComponentName cn = new ComponentName("com.autonavi.minimap",
"com.autonavi.map.activity.SplashActivity");
it.setComponent(cn);
startActivity(it);
4總結
本設計使用Android Studio開發環境,利用百度提供的語音識別技術服務員開發一款可以識別語音指令的系統。用戶只要通過語音指令就可以控制手機導航、播放音樂、獲取當前位置、拉起APP以及控制車輛天窗等。此外,該系統還會根據語音識別的反饋結果合成播放特定語音。在該系統的開發以及調試的過程中,也遇到一些很難解決的問題,如回調數據的解析,百度語音識別SDK的回調函數中的回調數據是JSON格式的,應該怎樣去解析然后獲取識別結果。在通過資料的查找之后,發現只需要先將數據轉換成字符串,然后再通過getString方法就可以獲取到識別結果。
參考文獻:
[1] 馬顏軍.科技與企業.基于Android系統的APP開發[J]. 2015(22)
[2] 高輝.浙江大學.智能車載信息系統共享平臺及安全機制的研究與實現[D]. 2015
[3] 何明均,劉成,黃上. GPS技術在地質測量中的應用與分析[J]. 科技信息. 2014(01):70.
[4] 張頔.吉林大學.基于Android的車載多媒體信息交互終端的研發[D]. 2015
[5] 新技術新工藝.基于語音控制的人機交互智能系統研究[J].梁漢泉,陳錦彪. 2015(09)
[6] 中國工程機械學報.基于HMM的非特定人漢語語音識別系統[J].聞靜. 2014(05)
[7] 李彥奇.吉林大學.基于語音控制的車載娛樂系統的研究[D]. 2015
[8] 歐陽丹.湖北大學.基于ARM的車載語音識別系統的設計[D]. 2014
[9] 丁亦喆,廖楠楠,田津浩.基于Android系統的智能交互APP設計思路研究[J]. 信息記錄材料. 2018(05)
[10]肖方. 車載多媒體語音指令控制系統的開發[D].南京航空航天大學,2010.
基金項目:徐州工程學院大學生創新創業訓練計劃項目(xcx2019254)