青島理工大學(臨沂) 王 貴
基于Android的語音助理軟件的分析與設計
青島理工大學(臨沂) 王 貴
在科學技術發展的推進下,語音識別技術也得到了飛速發展,最近幾年被廣泛應用于的智能化移動設備,如個人掌上電腦、智能手機等。本文在調研的基礎上,首先分析了Android 平臺技術,然后對系統功能進行確定,最后進行了整體框架設計,為系統實現和應用奠定了基礎。
Android;計算機;語音助理;設計;分析
人類在交流溝通過程中及時性最高、最便捷的方式為語音,語音在特殊群體或者場景中具有重要作用,如:殘疾等自身問題以及黑暗環境等。語音在科學技術不斷發展狀態下,儼然成為了人類與機器之間交互的重要連接方式。人類的期望的目標是是實現人類與機器之間通信自然,語音識別技術在未來發展的歷程中,以實現該目標為目的。
目前,Android 平臺是市場占有率最高的智能手機操作系統平臺。自從 2008年,Android 發行以來,其手機用戶量和手機應用市場的應用數量不斷增加,并走向更加成熟化的方向發展。Android 平臺的特點為開放性、硬件資源量充足、不會受到電信網絡的限制、開發環境不被限制。Android 系統的架構由四層構成,分別是:應用程序層、應用程序框架層、系統庫運行層及Linux 核心層。
Android 平臺上的多種數據處理方式為健康的數據管理提供了便利。 一些臨時、輕量級的健康數據,在記錄時,遇到中斷情況,可以使用 haredPreferences 進行處理;而數據量比較大的健康數據,可以采用文件存儲方式;手機 SQLite 數據庫能夠條理的存儲簡單數據,為趨勢圖繪制提供方便;不同應用程序需要共享數據時,只能通過 Content Provider 處理。
本文的語音助理軟件主要實現功能包括。
(1)打電話:在手機通訊錄中根據用戶發出的語音指令,動態化提取與查找所需聯系人。用戶很大程度上節約了在通訊錄中查找聯系人的時間,用戶撥打電話的需求及時有效的處理。例如:用戶發出指令“我要打電話給 X、打電話給 X、幫我給 X 打電話、呼叫 X”等含義相同,語言中包含“聯系人姓名”的關鍵性,系統對該語音信息識別,并在聯系人中搜索,最終提取聯系人姓名。用戶在通訊錄中刪除或者增加聯系人信息時,槽語法自動對相應的槽更新。
(2)發短信:該模塊功能實現方式與“打電話”類似,用戶發出命令,系統根據該命令對發送信息聯系人姓名提取,向編寫操作界面跳轉。由于該模塊無法實現語音輸入,因此用戶口述的短信內容無法完成編寫。系統當前智能將接收短信聯系人的信息識別。用戶通過語音表達“給 X 發短信、發短信給 X、我要給 X發短信”等,出現“聯系人”關鍵詞就可以操作。“發短信”與“打電話”功能實現過程基本相同。
(3)打開應用:智能手機應用已經普及化,用戶面對手機說出需要打開的應用程序名稱,系統對該指令執行,并打開用戶所需的應用程序。
(4)上網導航:該功能完成用戶所需網頁與網站的打開,包括一些經常使用的搜索引起,分別為搜狗、百度、Google、新浪等,以及在語音中經常使用的綜合性網站,共三十多個,必須都可以正常打開。系統會按照網址解析,通過互聯網方式將用戶網站打開。
(5)音樂搜索:用戶說出歌曲名稱后,手機本地音樂動態搜索并播放。例如用戶說“播放 xx 音樂、我要聽 xx 音樂、來一首 xx音樂”等,除此以外,系統在以后的發展中,不斷完善,可以時間搜索歌手名播放音樂功能。
(6)信息搜索:基于搜索功能,在百度上搜索用戶的各類語音信息,向用戶顯示當前搜索結果,同時準確性與可靠性較高。
(7)新聞獲取。該模塊與網頁搜索功能基本一致,根據用戶提出不同命令,包括“新聞資訊、要看最新新聞、獲取新聞信息、閱讀新聞”等,系統自動將新聞信息打開。
(8)天氣查詢:動態的方式將用戶提出的某個城市天氣情況獲取。用戶說出命令時根據自己語言習慣進行,語音中只要包含“城市名”、“天氣查詢”等關鍵詞即可,系統自動對天氣情況查詢,并向用戶反饋該城市最近三天實時天氣情況。
筆者梳理了整體設計的層次結構,封裝了業務模型,隔離了協議和業務數據,分離了UI 功能和業務功能并使之模塊化,將業務工作、業務流程和界面更新獨立開來。軟件框架結構如圖1所示。
如圖1所示,軟件的界面設計有兩層,業務設計有兩層。外加一層外部模塊。把業務內核獨立出來的的目的是讓其與UI 的交互邏輯完全隔離,這樣能極大的減少耦合。業務層不包含UI,但是功能也是完整的,能夠達成命令行也可以獨立運行的程度,方便獨立測試。另外,一些本來耦合比較大,同時與主要業務關聯比較小的模塊,如數據采集、模塊協議等,分離到外部模塊層,通過業務內核提供的一些接口來交換數據。

圖1 軟件框架設計圖
據此可以對開發視圖進行設計,開發視圖的設計思路是,在邏輯視圖的基礎上,再將最復雜業務核心層進行了拆分。其中工作流層為UI 提供了業務功能的接口,同時進行業務的整合和調度;業務服務層負責業務的具體邏輯實現以及業務的數據管理;業務基礎層包含了業務模型、協議封裝、持久層封裝、基礎框架等工作。同時進行了數據分層,UI數據模型由UI直接使用,同時支持綁定通知;業務數據模型由業務工作使用;存儲數據模型包括數據表結構和文件結構;通信協議數據則是由服務器定義的數據模型。
業務層服務的Command 命令是最核心的業務邏輯,每個Command都抽象了一個獨立的業務處理。Command 命令基于命令框架實現。命令框架里包括Command 命令、CommandTask 任務以及ComponentTask組合任務。Command 命令表示業務的數據處理的工作,它是異步的命令模式,沒有狀態機。Command 命令的職責是協議的生成,以及協議完成后的業務處理。CommandTask 任務表示了業務的交換執行工作,它是是有狀態的,包括開始、執行、完成、中斷等狀態。它里面的每個任務都可以接力執行。ComponentTask 組合任務屬于部分--整體模式,它可以讓多個任務并發工作,當然它本身也是一個任務,可以支持接力執行。通過這種組合可以實現一些復雜的業務流程。
[1]Zeppenfeld,T.,Waibel.A Hybrid Neural Network,Dynamic Programming Word Spotter[C].ICASSP,2015:77-80
[2]Christiansen,R.W.,Rushforth,C.K.Detecting and Locating Key Words in Continuous Speech Using Linear Predictive Coding[C].IEEE. 2014,25(5): 361-367
[3]王輝.語音聲學特征分析及命令詞識別系統實現[D].烏魯木齊:新疆大學,2013:19-25
[4]丁玉忠.基于電話語音的語音關鍵詞識別系統研究[D].烏魯木齊:疆大學碩士論文,2011:11-15
[5]李兆哲.基于 Android 平臺的智能語音記賬系統的設計與實現[D].中國海洋大學, 2013:24-26.
王貴(1983—),男,山東泰安人,碩士,講師,研究方向:現代教育技術。