舒春平 謝作如



聊天機器人是人工智能的一個重要應用模式,蘋果手機中的Siri、Win 10中的小娜和百度的小度,還有小愛音箱和天貓精靈等,都是被大家熟知的聊天機器人。這些機器人不僅可以聊天,還可以幫用戶做很多事情,如查天氣預報、設置鬧鐘,甚至還可以在線購物。
看多了功能強大的商業聊天機器人,難免有些審美疲勞。如果設計一款僅僅針對某個專業領域的聊天機器人,可能會吸引特定用戶的眼球。根據觀看央視節目《中國詩詞大會》激發的靈感,筆者萌發出一個想法——做一個可以“吟詩作對”的機器人(用戶讀上一句,機器人對出下一句)。
原理分析
從信息系統的角度看,聊天機器人的“聽”和“說”僅僅是信息的輸入和輸出,核心功能在于聊天的內容如何體現“智能”。但是對筆者想做的這款機器人而言,難點反而不是聊天內容的處理,而是語音識別和語音合成。因為“吟詩作對”的定位,可以確定這個機器人要做的僅僅是古詩詞方面的一問一答,問題和答案都是固定的,只要提供足夠大的詩詞庫即可。
聊天機器人的核心硬件,筆者選擇了虛谷號。虛谷號是一塊運行Linux系統的迷你電腦,預裝了Python3.5。雖然根據虛谷號的當前算力,在本地處理語音還有些“吃力”,但是借助于百度AI開放平臺,或者騰訊AI開放平臺,只要連上網絡就能識別語音和合成語音。這個“吟詩作對”機器人的系統流程如圖1所示,虛谷號僅僅作為一個采集語音和播放語音的智能終端,語音處理工作全部在云端完成。這種做法和現有的聊天機器人在工作原理上是一致的,如果離開網絡,就不能對話了。
原型設計
如果不考慮設計人形的結構,這個聊天機器人的組成并不復雜。核心模塊清單如下:①虛谷號*1;②USB聲卡*1;③麥克風*1;④小音箱*1。
虛谷號支持絕大多數免驅的USB聲卡,即插即用。當然,也可以選擇自帶聲卡的小音箱(如上頁圖2)。常見的攝像頭大都集成麥克風(上頁如圖3),也能夠使用。考慮到常見的聊天機器人運用的是“語音喚醒”技術,而當前虛谷號的固件還沒有集成這一功能,所以需要安裝幾個必要的庫。此外,筆者選擇了用“按下按鈕”的方式與機器人交互,類似喚醒Siri的方式(要按下手機的電源鍵),因而,還需要一塊Arduino擴展板(如圖4)和普通按鈕傳感器(如圖5),這在創客空間里面是很常見的。
編程控制
給虛谷號編程的最好方式是通過Wi-Fi,即無線模式。虛谷號內置了Jupyter,通過U盤方式正確設置Wi-Fi信息后,就會自動生成快捷方式,打開瀏覽器即可編程。訪問“vvBoardBook”文件夾,將看到很多范例,其中就有GPIO、百度AI和語音處理方面的筆記。核心代碼如圖6所示。
有了前面的基本庫和函數,下面的Python代碼編寫(如圖7)就比較容易了。首先是添加詩詞庫。限于篇幅,筆者用一個列表“shici”來存儲詩句。
接下來是主體程序(如下頁圖8),在這段代碼中,按鈕傳感器接在D4口,按下后虛谷號開始說提示語“請開始背誦古詩”,當用戶說“床前明月光”,虛谷號如果正確識別,將對出下一句“疑是地上霜”,即用戶讀前一句(奇數),機器對出下一句(偶數)。
功能測試
完成好“吟詩作對”機器人后(如下頁圖9),筆者迎來了溫州中學的對外公開課,課題為“初識人工智能”。在這節公開課中,筆者演示了這一機器人的基本功能,很好地激發了學生的學習興趣。學生還嘗試修改Python代碼,以實現更多的功能。事實證明,只要網絡夠快,對話過程流暢,幾乎不會有“延時”的情況。
在課堂上,學生提出了一些新的想法,如:設計成“飛花令”機器人,讓詩詞對話更加好玩;設計成迎賓機器人,向來賓介紹學校的校訓和歷史;設計成“識字”機器人,學生只需將不認識的字對準攝像頭,機器人就會自動讀取并說出這個字的讀音和意思……
每一次打開Jupyter再運行代碼的確有些煩瑣,其實虛谷號提供了多種啟動Python代碼的方式,最簡單的做法是:將.py文件復制到U盤的Python文件夾,命名為“main.py”,然后按下RST鍵代碼即可運行。如果虛谷號采用電源口供電,那么不用按鍵,也會自動啟動。
結束語
隨著一些知名的AI框架不斷開源,人工智能的技術門檻也在不斷下降。在虛谷號上不僅可以采用調用網絡API的形式,利用云端服務器來處理信息,還可以安裝TensorFlow之類的機器學習框架,學習機器學習、神經網絡方面的知識。
本文涉及到的代碼已經以.ipynb文件的形式放在虛谷號的最新版固件中,采用CC協議開源,期望有更多的創客愛好者能在這段代碼的基礎上,設計出更多有趣的AI應用。