使用Python把樹莓派改造成一個語音助手

使用Python把樹莓派改造成一個語音助手

語音助手已經不是什麼新事物了。就在兩三年前,語音助手的使用體驗還不是那麼好,嚐嚐鮮後也就沒用過了。但最近發現不管是微軟的Cortana、蘋果的Siri,還是一些不怎麼有名氣的,例如MIUI的小愛同學等,使用體驗真的改善了很多,確確實實能帶來一些方便了。

隨著各種雲服務、API的面世,語音方面的雲服務可以說是十分健全了。你是否也想過自己動手搭建一個語音助手系統呢?本文將總結使用Python把樹莓派(3代b型)改造成一個簡易語音助手的基本流程。

概述

這次要做的說白了,就是把各種雲服務、API串起來,並不涉及任何核心技術、演算法的實現,望知悉。

這次將要使用到的服務包括:

谷歌Cloud Speech API
圖靈機器人
科大訊飛 語音合成WebAPI

為了實現這個語音助手系統,需要完成的工作每一個都不難,但數量稍多了些。以下是涉及到的一些部落格:

使用Google雲端計算引擎實現科學上網
在Windows命令列、Linux終端使用代理
樹莓派學習手記——使用Python錄音
在Python中使用谷歌Cloud Speech API將語音轉換為文字(另一種方案)
使用Python與圖靈機器人聊天
在Python中使用科大訊飛Web API進行語音合成

後文在介紹各部分的具體實現時,只附上程式碼和進行一些必要的說明,詳細內容還需要參考相應部落格。

各部分的實現

由於整個專案用到的服務比較多,而且各部分的分工很明顯,所以選擇各部分分別用一個python程式來實現,最後再用一個程式整合在一起的方式。

錄音

參考:樹莓派學習手記——使用Python錄音

筆者採用了“按住按鈕進行錄音”的操作方式,如下圖所示接線。如果你手頭上沒有按鈕或覺得這麼做不方便,可以修改程式碼改成“按回車鍵開始/結束錄音”之類的操作方式。

另外,樹莓派的板載3.5mm耳機介面是不帶語音輸入功能的,所以你需要另外購買USB音效卡。

* 檔案 rec.py

語音識別

參考:

使用Google雲端計算引擎實現科學上網

在Windows命令列、Linux終端使用代理

在Python中使用谷歌Cloud Speech API將語音轉換為文字(另一種方案)

由於某些原因,筆者選擇了使用谷歌Cloud Speech API進行語音識別。既然要用谷歌的服務,自然就涉及到了科學上網、代理、谷歌雲平臺的使用,如果不想這麼折騰,完全可以用國內的訊飛、百度來實現。

另外,API KEY之類的字串在這裡刪除了,還請麻煩修改程式碼加上你自己申請的API KEY。

* 檔案 speech_api.py

獲取文字回答

參考:使用Python與圖靈機器人聊天

這個獲取回答的程式有些粗糙,只能獲得普通的文字回答。實際上圖靈機器人回覆的內容中包括了文字、問題型別甚至情感等資訊,還有很多修改的空間。

* 檔案 turing.py

讀出回答(語音合成)

參考:在Python中使用科大訊飛Web API進行語音合成

筆者在使用訊飛Web API時,該服務才開放不到一週,難免以後該API會有所變動,如有問題建議查閱官方文件。

* 檔案 tts.py

整合&測試

現在,你的專案資料夾中應該有這些python程式碼檔案:

接下來我們只需要將他們整合在一起執行。

* 檔案 combine.py

如果一切順利的話,實際執行效果如下:

http://v.youku.com/v_show/id_…

小結

語音助手這邊的工作算是告一段落了,結果小結卻不知道怎麼寫了。不管怎麼說,很開心最後能得到實際的結果,做的過程中也有一些腦洞想要繼續擴充套件,過段時間應該還會繼續!

做這個專案的過程中,專案外的收穫或許比這個專案本身還要多。這段時間從很多部落格、論壇得到了數不盡的幫助,國內的、國外的、中文的、英文的、日文的都有,深深地感受到了網際網路共享精神的力量,這也是促使我開始寫這些文章的原因。那麼,最後還是說一句:感謝你閱讀文章!