本文將介紹如何在 Raspberry Pi 上設定 TJBot 所需之硬體與軟體環境,並結合 IBM Bluemix 的 Sppech to text 服務打造一台能以語音指令控制LED的機器人。
機器人外殼組裝請參考:http://wp.me/p3T9Qk-5B1
作者/攝影 | 曾吉弘 |
時間 | 6小時(組裝、環境設定與編寫程式等) |
成本 | |
難度 | * * * * * * * |
材料表 |
|
1.Raspberry Pi設定
請燒錄最新的 Raspbian 作業系統讓 Raspberry Pi 開機,本文使用 Raspberry Pi 3,但經測試,Raspberry Pi 2 也可正常使用。
2.安裝所需套件
Raspberry Pi 連上網路之後,請依序在 Raspberry Pi 的 terminal 中執行以下指令:
- sudo apt-get update (更新可用軟體)
- sudo apt-get dist-upgrade (升級軟體)
- curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash –
- sudo apt-get install -y nodejs (安裝js)
- sudo apt-get install alsa-base alsa-utils (安裝alsa聲音程式)
- git clone https://github.com/ibmtjbot/tjbot.git (取得本專案之github source)
- cd tjbot/recipes/speech_to_text (切換到指定資料夾)
- npm install (安裝所需之npm套件與檔案)
- npm install onoff
安裝完之後您的資料夾應該長這樣,有一個 /node_modules 資料夾,裡面是必要的函式庫:
3. Bluemix 設定
本段將介紹如何在 IBM Bluemix 上建立一個 Speech to text 服務。這個服務可以把我們對麥克風說的話轉成文字,讓Raspberry Pi 來辨識並執行對應動作
請註冊一個免費的 IBM bluemix 帳號
完成之後完成之後可於畫面左上角點選 [服務]/ [Watson] 即可看到我們所建立的 my-stt-service 服務。
4. 所需零件
所需硬體
- Raspberry Pi 3
- USB麥克風
- RGB LED (共陰)
- 跳線
- IBM TJBot (製作步驟請點我)
5. 硬體設定
請如下圖連接硬體,GND接到 Pi 的GND,LED則分別將正極接到Raspberry Pi 3 的GPIO14腳位(下圖右排,第4隻),負極則接到Raspberry Pi 3 的GND腳位(下圖右排,第3隻)
stt.js
程式大致上分成以下步驟:
- 設定Bluemix
在此須正確輸入您的 Bluemix 帳號密碼 - 設定麥克風
設定麥克風來取得您說話時的語音輸入檔。更多資訊請參考https://www.npmjs.com/package/mic - 把語音指令轉成文字
本步驟會把麥克風所錄製的聲音檔送到 “Watson Speech to Text”服務,並以”textStream” 回傳轉譯後的文字。可用的語系有以下,請由程式碼中的 var recognizeparams = {
content_type: ‘audio/l16; rate=44100; channels=2’,
model: ‘en-US_BroadbandModel’
};
來設定:
- zh-CN_NarrowbandModel
- zh-CN_BroadbandModel
- pt-BR_NarrowbandModel
- pt-BR_BroadbandModel
- ja-JP_NarrowbandModel
- ja-JP_BroadbandModel
- fr-FR_BroadbandModel
- es-ES_NarrowbandModel
- es-ES_BroadbandModel
- en-US_NarrowbandModel
- en-US_BroadbandModel (預設)
- en-UK_NarrowbandModel
- en-UK_BroadbandModel
- ar-AR_BroadbandModel
4.解析文字
在此會在解析後文字中找尋有沒有我們所設定的關鍵字,例如”on”、”off”與”light”。您可以說各種組合,例如”lights on”、”turn the lights on”或”turn on the lights”等等,在此我們使用的文字解析服務而非單純的字串辨識。您可由 parseText 函式中可看到定義關鍵字的方式,您可以根據這樣的架構加入更多關鍵字以及配對,一步步讓您的TJbot 更聰明。
7. 測試與執行
請回到您的Pi,把上述程式碼中的 username 與 password 改成您個人的 Bluemix 帳號密碼即可。請在 terminal 中輸入以下指令即可執行本程式:
sudo node stt.js
請對您的 TJBot 說話吧,只要一句話中包含了關鍵字”on”與”light”,就會亮燈,如果包含關鍵字”off”與”light”則會熄燈。因此您可以說 “light on” 或是 “turn on the light” 都是可以的。
如果無法辨識關鍵字會提示您相關的關鍵字。從 parseText 函式中可看到定義關鍵字的方式,您可以根據這樣的架構加入更多關鍵字以及配對,讓您的TJBot 更聰明喔!
參考資料:
http://www.instructables.com/id/Use-Your-Voice-to-Control-a-Light-With-Watson/