盧嫚,陳佳悅
(西安工程大學電子信息學院,陜西西安 710048)
隨著科技的發展和智能語音助手、智能音箱市場的逐漸成熟,人工智能浪潮下的語音交互已經成為最被人們所接受的交互方式[1]。智能語音互動超越了電子屏幕的局限逐漸擴展至人們的生活中,成為了新一代用戶的主流交互方式,語音交互作為一種自然的人機交互方式,已經融入了各個領域,如智能家居、車載智能語音等[2-3]。智能音箱作為語音交互的功能產品,帶給人們一種全新的體驗[4]。與如今的智能手機相比,智能音箱的交互功能更加明確,使用輕松便利,提高了使用效率[5]。對于智能音箱的使用,無需用戶進一步學習,無論小孩還是老人,都可以更好地使用。用戶使用的要求降低,只需要用戶說出來問題或要求即可[6]。
設置個性化的喚醒詞。首先,需要創建一個配置文件以便于配置喚醒詞,這個工作可以交給wukong-robot 輔助完成。在終端輸入指令:利用cd wukong-robot 來打開wukong-robot 文件夾,接下來在wukong-robot 的根目錄下執行python3 wukong.py[7]。
第一次啟動后,提示用戶目錄下創建一個配置文件,輸入 y 即可。配置文件將會保存在~/.wukong/config.yml 中。
對于設置個性化的喚醒詞,先登錄https://snowboy.hahack.com/網站,訓練個性化的模型。再下載pmdl 模型并放到~/.wukong 中。最后修改config.yml 的model 配置,修改為已經訓練好的模型的文件名。
個性化的snowboy 喚醒詞訓練界面如圖1 所示,需要3 個語音示例訓練喚醒詞,合成一個.pmdl 文件,即訓練成的上傳文件。

圖1 個性化喚醒詞設置界面
本文訓練的喚醒詞為“嘿小婷”,經過多次訓練后,可以正常識別及運行。
結合語音理解 NLU(Natural Language Understanding,自然語言理解)的對話功能,整個對話的設計流程如圖2 所示。
UNIT(Understanding and Interaction Technology)是百度AI推出的可定制的對話開發系統。
先設計一個最簡單的版本,首先通過關鍵詞“打個招呼”來觸發這個插件響應,無需任何配置項,需處理用戶的指令,直接回復“hello world”。
3.3 早期干預對促進兒童語言發育和預防心理問題意義重大 正常的聽力是進行語言學習的前提。而聽力障礙的兒童由于缺乏語言刺激和環境,不能在11個月前進入呀呀學語期,在語言發育最重要和關鍵的2~3歲內不能建立正常的語言學習,輕者導致言語障礙、社會適應能力低下、注意力缺陷和學習困難等心理行為問題,嚴重者會導致聾啞。本縣確診為聽力障礙的103例嬰兒均得到及時有效的干預及治療。對聽力障礙兒童均進行了心理行為發育篩查和跟蹤隨訪,89.32%的兒童心理行為發育正常,可疑和異常兒均在進一步的康復治療中。
訓練百度平臺UNIT 的技能[8],首先在百度UNIT中訓練這個技能。注冊登錄百度UNIT 后,在“我的技能”面板中點擊“新建技能”按鈕,在彈出的窗口中填好信息,完成創建。之后創建一個對話意圖。
進入這個技能面板后,點擊“新建對話意圖”,新建一個名字為HELLO_WORLD 的意圖,并填好相關的信息。百度UNIT 的新建技能面板如圖3 所示。

圖3 新建技能面板
在上面已經定義了一個名字為user_person 的可選詞槽,用來確定要向誰問好。在創建的時候,可以復用UNIT 自帶的sys_pe,其中可以是人物,包含虛擬人物在內的各類人名的系統詞槽,還可以根據需要再添加一些自定義詞典。
接下來在左側面板點擊“訓練數據”的“對話樣本集”,在對話樣本集面板中點擊“新建對話樣本集”,創建樣本集。
創建好對話樣本集后,訓練UNIT 技能這一步已經完成,完成后就可以對該技能進行訓練和測試,先確保模型正常工作,并且不會被誤判為其他技能。如果判斷不理想,可以繼續補充,直到結果符合預期為止。
配置完成后,則實現了結合NLU 的對話功能,如果需要更多的對話,也可以按照這個方法,在百度UNIT 上繼續載入自己的樣本集。
清除緩存這個功能對于計算機來說是必不可少的,可以增加使用壽命、避免卡頓,是一個有真正用途的普通技能插件。為了節省用于語音合成所消耗的時間,wukong-robot 支持將語音文件緩存到temp 目錄中,但是如果使用時間久,目錄里的文件數量就會越來越多,會占用大量的設備存儲空間。另外,如果語音合成配置改了發音人的音色,沒有清理已有的緩存語音,也會導致wukong-robot 使用過程中混雜多種音色的奇怪體驗。清除緩存是必不可少的,流程如圖4所示。

圖4 清除緩存設置流程框圖
清除緩存配置文件如圖5 所示。

圖5 清除緩存配置文件
本文中將此插件設計成只要指令中包含關鍵詞“清除緩存”“清空緩存”“清緩存”就可觸發這個插件響應。且無需任何配置項,無需處理用戶的指令,直接清除緩存,并告知用戶“緩存目錄已清空”。
為保證喚醒詞設置不出現錯誤,先使用喚醒詞為默認喚醒詞“孫悟空”。終端輸入指令python3 wukong-robot.py,運行成功后,可以進行功能測試,如進行溝通交流,是否能理解語義及進行反饋。語音交互對話的界面如圖6 所示,可以實現基本的智能音箱設計中的聊天對話功能。

圖6 語音對話顯示
語音接收信息無誤后,可以對前文中設計的天氣查詢技能進行簡單的測試,對天氣查詢功能的測試如圖7 所示。經過提問,可以準確回答出天氣如何,則功能設計也基本成功,可以滿足設計需求。

圖7 天氣查詢顯示
此外,wukong-robot 在運行時默認啟動后臺管理終端,不僅提供遠程對話和更改配置視圖,還提供日志顯示等功能。其默認地址為http://localhost:5000,默認賬戶名為wukong,默認密碼為wukong@2019。后臺管理端的顯示界面如圖8 所示。

圖8 后臺管理端
也可以直接在終端啟動wukong-robot 進行運營管理。終端關閉,wukong-robot 進程可能會消失。要想在后臺保持運行,可以在tmux 中運行。
如果出現wukong-robot 在運行時反應速度太慢的情況,反饋交互有時發生后需要2 min。經過測試,這通常與網絡環境有很大關系,例如由于防火墻而無法訪問某些服務。此時可以運行wukong-robot:python3 wukong.py profiling,在每一次交互后,顯示出當次交互的性能數據。
如圖9 顯示的是性能調優數據,用長方形框顯示列堆積了處理每個任務所需的時間,如果該列下降并發現數量突然變小,則第一行是最大的黑手。執行python3 wukong.py help 可以了解更多命令行用法。

圖9 性能調優數據
若使wukong-robot 暫時不監聽不授權,可以在配置文件中設置hotword_switch 為true,可以更好地保護用戶的隱私安全,防止被監聽、信息泄露等。
經過測試,符合預期的3~5 m 的收音范圍,由于遠場喚醒距離與場合的安靜與否、說話聲音大小、距離遠近都有關系。在較為安靜的場合時,以麥克風為半徑的5~7 m 內的圓內都可以較為清晰地收音,若為較為嘈雜的場合,收音半徑小于3 m。
本文設計了基于樹莓派的智能語音交互系統,利用wukong-robot 開源庫及百度語音轉換等提供的通信協議以及采用API接口來實現人機交互中的語義理解、語音轉換,最終設計出一個具有個性化的智能音箱。系統有成本低、功能強大、體積小、功耗低及便于實現等優點,結合AI語音交互,制作了一款陪伴型機器人,可運用于各個領域,如智能家居、智能車載等。