與機器人對話:初探語音智能交互
我們經常能在科幻影片里能看到各種機器人與人類同臺出演,與人類自由的溝通交流,甚至比人類更加聰明。大家肯定想知道這樣的人造機器是如何做到的,我們現在真的能造出這樣的機器人嗎?
開玩笑,我在這絕不可能解釋好這個問題,但是從另一個角度簡單來講,與機器人交流其實這是通過語音來實現與機器交互,互動的一種操作,人與機器人的溝通其核心的一個方面便是語音的識別,就是說機器人得先聽懂人說話。那此文就來淺聊下關于通過語音來實現人機交互的一些問題。
我們先看一個較簡單的例子 —— Windows語音識別程序:
Windows語音識別功能主要是使用聲音命令指揮你的電腦,實現離開鍵盤鼠標來實現人機交互。通過聲音控制窗口、啟動程序、在窗口之間切換,使用菜單和單擊按鈕等功能。Windows語音識別功能僅僅限于 Windows系統體系內的一些常用操作和指令,并且是與監視器顯示輔助來完成整個語音操作。
例如你想用語音通過主菜單打開某個程序,當你說出“開始”后,系統將會提供一個“顯示編號”的區塊劃分功能,(編號是半透明的,使你能知道此編號下是哪個程序或文件夾)這樣假如你想打開“下載”這個文件夾,你只需說出它的編號“10”,程序就會給你打開“下載”這個文件夾了。這樣做的原因一是因為:如果你需要開啟用戶自行安裝的紛繁復雜的程序,Windows的語音庫里面可能沒有這些程序相應的名稱,會造成識別不準,甚至無法識別,二是通過顯示編號,和語音識別編號,響應指令的效率更高,因此這樣語音配合監視器的分模塊顯示大大的提高了用戶使用Windows系統的效率和準確率。
同樣,如果你對桌面的快捷方式或文件進行語音操作,系統將會提供一個稱之為“鼠標網絡”的功能,對桌面進行以前區域的劃分和自動編號,用語音+視覺來提高操作效率和識別的精準率:
在目前Windows的語音識別程序中,除文本的語音輸入(包括文字和符號)之外,還包括16個常用命令,9項常用控件命令,31項文本處理命令,15項窗口命令,5個點擊屏幕任意位置命令,以及另外的幾組鍵盤命令。用戶所能語音指揮的也就是圍繞這些預先準備好了的命令進行交互操作,旨在這將有可能提高使用電腦的效率,和盡可能的把雙手從鼠標鍵盤上解放出來。
與此初衷相類似的我們還能在目前主流的移動設備上能看到語音識別功能的應用:
然后我們在前進一點,再想一下假如現在我們要面對的不是電腦,手機,而是一個機器人!一位擬人化,仿真化的機器人,對比上面的例子你會很容易發現它和常用的電子設備的不同之處在于,它很可能是不會有一個我們通常所見的顯示屏,那以上那些通過語音指令結合屏幕可視化輔助來進行的高效的交互方式在機器人身上就收到了限制。在這種情況下你面對著機器人,你肯定會想它在聽我說話嗎?它能聽懂我說話嗎?我說什么它能聽懂?我說什么它可能聽不懂?等等這樣一對問題會立即撲面而來。
其實在我們現有的技術水平和條件下,特別是面向大眾商用的機器人,想做到像電影里面那種人和機器人自由交流的情景幾乎是不可能。當然我們做一個產品,當然會有功能定位和市場需求等等很多方面要考慮的,那我在這里討論的是一臺為用戶提供各種咨詢和能進行簡單語音邏輯“聊天”的機器人,需要如何處理語音交互方面的問題,這里以Qrobot為例,盡可能不依賴電腦屏幕,而直接來與人互動和提供各種咨詢的機器人。
人是上帝創造的,而機器人是由人創造的,在現有知識和技術條件下,在人類賦予他特定的能力之前,機器人是什么也做不了的。下面我將分幾點來討論要想實現與機器人交互溝通需要做哪些工作:
一,給機器人提供一個“大腦”—— 思想的材料:知識、語言庫。像Qrobot這樣提供各種海量咨詢和交流操作功能的機器人,如果把所有的這些“原材料”堆在一堆,一旦你有求于它的時候,它可能會慌了手腳,不知所云。(機器人無法根據對話的前后關系以及語境來判斷某一個詞在當前情境下恰當的含義)因此我們先會把機器人的語音知識庫進行分類,把不同類型和專業的詞語庫分開來,以提高機器人的工作效率和服務的準確度。那這樣用戶如需要獲得哪方面的信息和功能,就要先讓機器人“思維”進入相應的語言庫中。比如你通過機器人來了解“音樂”方面的信息的時候,你需要讓機器人進入音樂相關的“語庫思維”中,那在這個情況下它會把你說的任何話當作“音樂”相關的內容或指令了。
這里對比下蘋果最近發布的iPhone 4s 的Siri,根據資料分析來看Siri是一個集中統一的語音分析處理中心,它通過監聽用戶語音,然后提取關鍵詞來理解用戶意圖,(當然用戶事先要知道iPhone能幫他做些什么)然后可能經過跟你確認,再觸發相應的功能和服務。因此它最終提供功能咨詢和服務來自于整個iPhone系統不論是本地Apps或是云端(網絡APIs)已經準備整合好了的咨詢信息及功能。這樣的處理方式能使產品看起來更加的聰明和易用。
當然除了被分區的專業語庫外,機器人還得有個“正常人”的思維,即識別專業語言庫以外的各種指令和普通對話,(上圖的集成模式)否則的話它將只能是“機器”而無“人”了。
二,Qrobot各分區之間的的轉換以及從語音庫分區回到“集成模式”除語音指令外,還需要假如非語音方式的的中間干預,這就涉及到觸發監聽和監聽時機控制問題。
從上圖可以看到Windows的語音識別程序是通過一個浮動控制器開關來使機器聽取你的指令與否。這里可以通過語音來讓程序進取關閉狀態,但是處于關閉狀態則無法用語音來命令它重新啟動了,這時候需要回到鼠標操作。
iPhone的語音控制功能是通過觸摸屏幕啟動Siri程序后進入一個語音模式,在這個環境下用戶才能使用語音操作手機和使用服務,如果退出Siri手機將不能聽懂你任何聲音。
同樣你不會讓Qrobot機器人一直聽你說話,或是你需要它提供某特定信息的時候如何讓它迅速的進入相應的語音區域,高效準確的提供信息。機器人不可能用一只鼠標去操作,這里我們給機器人設計一個響應區和相應手勢:
1,用觸摸響應區域來控制機器人聽或不聽指令
2,用觸摸響應區域+配合語音指令的復合方式來切換機器人的語音庫
或使用特定規范的詞語句來激發機器人進入或切換語音區來高效準確的獲取信息。(同樣也分以上兩類指令)
另外在不同的情況下,機器人聽用戶指令的狀態也是不一樣的,比如在“對話”狀態下,機器人需要連續語音識別,這既基于情境需要同時也基于語音技術,而比如在功能操作或者咨詢獲取的以及機器人自己說話的時候并不需要連續語音識別,而是設置一個適當的語音監聽時長,一旦超出這個監聽時間,機器人則不進行識別,也不會造成誤聽和誤操作。
三,同一個話題的表達可能會有很多種表述方式,同樣任何問題的答案也都不是單一的,因此第二個工作是需要讓機器人能盡可能的聽懂關于一件事情的各種不同表述方式,和讓機器人響應你的請求或問題時每次會以不同的方式甚至情緒來表現出來(這樣能讓機器人顯得更加的聰明和人性化)。
如上圖,由于語言的靈活性和豐富度,在語音庫的配置上面就需要在輸入和輸出兩方面做大量的工作,這包括本地(機器人內置存儲空間)和云端兩塊。
對一個指令的意思需要在語庫中準備和配置好多種的語言表述方式,和可能的關鍵字詞,以便在用戶使用的各種表述方式的情況下都能準確的判斷出指令的意圖,來提供準確的反饋和服務。
另一方面,當機器人理解了指令然后經過“大腦”處理之后把結果反饋給用戶的時候,如上文所說,設計者不可能只有一份準備,如何既能讓用戶得到準確的信息,又能體現出機器人的“人情味”來,同樣也需要做大量技術算法的儲備和語句、關鍵字詞準備配置工作等等,使每次輸出既恰如其分,又靈活生動。
由于目前我們日常能接觸到的和能使用的語音交互產品不是很多,技術水平也還不能盡如人意。以上文字只從幾個基礎的方面淺淺的觸碰了以語音識別為基礎的交互及產品,那目前來說語音交互對使用者的價值可能體現在以下種情況:
1. 用戶有視覺方面的損傷和缺陷
2. 用戶肢體處于忙碌狀態
3. 用戶的眼睛被其它事情占用時
4. 需要靈活反應時
5. 在某些場合不方便使用鍵盤、鼠標等其它輸入形式時
但是語音交互形式相對于其它交互形式還是有其不足,比如與手指交互比,語音交互增加用戶認知負擔;語音交互容易受到外部噪音的干擾;還有遇到用戶、環境等變化語音識別將會變的不穩定等等。我這里只是借Qrobot項目中涉及到的一些語音交互方面的問題,以簡明直截了當的語言進行一下梳理和討論,也非常歡迎對這領域有興趣的同學來指點和討論。
- (本文出自Tencent CDC Blog,轉載時請注明出處)
- 目前還沒評論,等你發揮!