車載導航中人機語音交互系統的設計與實現
語音作為自然的人機接口,可以使車載導航系統實現更安全、更人性化的操作。通過國內外車載導航系統的功能對比可知,支持語音交互是車載導航系統的一個發展趨勢。另外,市場信息服務公司J.D Power and Associates的調研數據也表明,56%的消費者更傾向于選擇聲控的導航系統。因此,開發車載語音導航系統是很有意義的。目前,國內已經具備開發車載語音導航系統的技術基礎,特別是文語轉換TTS技術和基于中小詞匯量的語音命令識別技術已經達到比較實用的程度。本文在課題組的車載導航系統和國內兩款語音引擎的基礎上,開發了一套支持語音交互的車載導航系統。
車載語音導航系統結構
車載語音導航系統從功能上分為車載導航和導航語音交互兩方面。其中車載導航功能包括GPS衛星導航定位、電子地圖瀏覽查詢、智能的路徑規劃、車輛地理位置和速度等導航信息的實時顯示;導航語音交互功能分為語音操作和語音提示兩部分。在系統的設計中,根據人機交互的需求,設計語音導航系統的硬件框架如圖 1所示。
語音導航系統和用戶之間的人機交互接口由觸摸屏、按鈕、話筒、顯示屏和擴音器等五個交互設備組成。該硬件框架可實現常規的手動交互方式,也可以實現語音交互方式。整個系統劃分為三個子系統:導航子系統、語音識別子系統和語音合成子系統,各子系統間通過接口進行通信,協調完成語音導航任務。
車載導航人機語音交互系統對話模式設計
導航系統的狀態轉換網絡
整個導航系統是一個復雜的人機交互系統,為便于語音交互對話模式的設計,首先對系統作狀態劃分,然后從人機交互的角度描述整個系統的狀態轉換網絡。將系統劃分為地圖瀏覽、功能選擇等六個功能狀態和一個退出狀態。圖2描述了這些狀態之間的狀態轉換網絡。
圖中的節點代表系統的各個狀態,帶箭頭的連線代表從源狀態到目標狀態的轉換。狀態轉換網絡接收用戶的操作作為驅動事件,完成從一個狀態到另一狀態的轉換,網絡中的一條路徑便代表著特定的交互過程。
導航系統各狀態節點對話模式設計
為便于描述各狀態節點內部的對話模式,將狀態節點按圖2所示編號為S1~S7,用Tmn表示狀態節點Sm到狀態節點Sn的轉換。另外,借鑒狀態流 stateflow模型的表示方法,提出用于描述車載導航人機語音交互系統中的對話模型。重新定義轉換的描述方式,用四個屬性來描述狀態節點內的一次轉換:
T={P1,P2,P3,P4} (1)
其中,t用于表示一個轉換,P1~P4為轉換的屬性:P1為語音事件;P2為語音輸出;P3為附加條件;P4為轉換動作。
這樣,一個轉換t便描述了一次對話中用戶的語音輸入、系統的語音輸出、對話受到的限制條件以及系統執行的動作。
以地圖瀏覽狀態為例,說明對話模式設計的過程。地圖瀏覽狀態由兩個互斥的子狀態組成:地圖漫游狀態和車輛引導狀態(參見圖2)。這兩種子狀態的人機交互大部分相同,所以將二者統一劃分在地圖瀏覽狀態下。對于區分對待這兩個子狀態的交互過程,可以通過附加條件來判斷當前子狀態,再作不同的處理。地圖瀏覽狀態節點的對話模式設計如圖3所示。
語音控制命令的實現
語音控制命令的實現方案如圖4所示。圖中左邊方框代表整個語音導航系統對話模式的狀態轉換網絡STN。根據對話模式的設計,將系統分為地圖瀏覽狀態、功能選擇狀態、路徑規劃狀態等7個狀態節點,每個狀態節點內部均存在各自的語音對話模式,對話模式由若干內部轉換組成。因此,整個語音導航系統是一個兩層結構的狀態轉換網絡,其內部轉換由語音事件驅動。語音事件由導航子系統的接口模塊根據語音識別子系統發送的用戶意圖而產生。
語音控制命令的實現過程分為以下四個步驟:
語音識別引擎根據當前命令詞表識別用戶語音,得到識別結果。
管理窗口獲取到識別結果,通過查詢“識別詞-控制命令”映射,得到識別結果對應的控制命令,并將控制命令作為用戶意圖發送至導航子系統的接口模塊。
接口模塊響應用戶意圖,通過語音事件改變語音導航系統的狀態。
接口模塊根據語音導航系統的狀態判斷是否需要更改當前命令詞表,若需要則通過管理窗口更改當前命令詞表。
POI名稱的識別方法
識別子系統除了要識別控制命令以外,還需要識別POI(興趣點、標志點)名稱。POI名稱識別與控制命令識別最大的區別在于其候選集合在規模上的差異。在本系統中,進行控制命令識別時候選集合的規模最大約為30個,但進行POI名稱識別時,以所用的北京電子地圖為例,其POI點的個數為 20,172 個,此時其候選集合的規模比控制命令識別時大幾個數量級。
利用命令詞識別引擎進行識別時,必須為引擎提供一個當前詞表,需要先將候選集合中的詞條轉化為詞表,才能真正地進行識別。同時,基于中小詞表的ASR 識別引擎不能生成規模達2萬多的詞表,所以對于POI名稱識別,采取了不同于控制命令識別的方案。在對控制命令進行識別時,因為候選集合可以用一個詞表來表示,采取了在線識別的方法。而對POI名稱進行識別時,單個詞表無法容納所有的POI名稱,由此提出了利用識別引擎離線識別功能的離線遍歷識別方案。該方案利用多個詞表來描述整個候選集合。實現的具體流程如圖5所示。
該方案將候選POI集合劃分為n個子集,并生成各子集的詞表,然后以各詞表為當前詞表進行離線識別,并將這些局部的識別結果匯總形成一個臨時詞表,最后在這個臨時詞表中進行識別,得出全局的最優識別結果。該過程遍歷了各個子集,相當于在整個候選集合中匹配出最優識別結果,所以識別正確率得到了保證。同時由于識別次數的增加,導致識別時間相應地變長。
導航系統語音提示的實現方案
導航系統的語音提示由專門的語音合成子系統完成。將語音提示的實現過程分為提出請求和執行請求兩步。請求的提出方和執行方構成客戶/服務器(C /S) 模型,其中,語音合成子系統充當服務器。由于語音合成引擎通常不能同時輸出多線合成的語音,所以會遇到請求沖突的情況。發生請求沖突時,最直接的處理策略是:中止正在進行的合成轉而進行下一個合成,或者維持正在進行的合成而忽略新的合成請求。為此在語音合成子系統中設計了管理模塊用于決定發生合成沖突時的處理方式。
對于語音合成子系統,合成請求的提出是一個隨機事件,將這類隨機事件記為Qi。每個合成請求Qi都具有優先級的屬性,其優先級的高低取決于請求的提示信息的重要程度,見表1。管理模塊的處理流程見圖6。如果下一請求Qi+1的優先級高于當前請求Qi,則優先合成Qi+1。
車載語音導航系統的試驗驗證
圖7為本文的車載語音導航系統的實物照片。對本系統進行了語音導航的驗證試驗,通過語音交互完成了表2中所示的車載導航功能。試驗表明,系統的狀態能夠完全正確地按照設計的對話模式進行轉換,并能正確完成各種導航功能的人機對話過程;同時,系統的語音提示也能正確工作。
另外測試了系統正確響應語音控制命令的能力。測試中,用清晰平穩的語音,對地圖瀏覽狀態所有語音控制命令的49個識別詞進行了測試,共測試49×3=147次,成功132次,失敗15次,成功率為89.8%。可見,系統語音控制命令的有效性較好。
在海量POI名稱識別的試驗中,對字數為2至10的POI名稱進行了測試。對于每一長度的POI名稱,分別取10個進行測試。其中每個POI名稱最多做兩次測試,當且僅當第一次測試失敗才繼續第二次測試。試驗結果如表3所示。
可見,離線遍歷識別方案的一次識別正確率為86.7%,二次識別正確率為93.3%。其正確識別的平均耗時為6.1s至10.4s之間,按 POI名稱的字數統計分布計算加權的平均耗時為8.3s。以上數據說明,該方案能夠利用小詞匯量的關鍵詞識別引擎實現大詞匯量POI名稱的識別,并且獲得了滿意的識別正確率,但是耗時較長。
結語
本文主要完成了車載導航人機語音交互系統的設計和實現,并在實驗室環境中對系統進行了實驗驗證。
證明利用合成的語音,可以實現豐富靈活的語音提示,使用戶可以在不分散過多精力的前提下使用導航系統。進一步的工作是提高識別正確率和降低正確識別的平均耗時。
評論
查看更多