© Hitachi, Ltd. 2016. All rights reserved.
株式会社 日立製作所
2016/6/28
横井 一仁
Raspberry Pi とWatson で音リモコンを開発
© Hitachi, Ltd. 2016. All rights reserved.
Node-RED とは
2
• 処理がカプセル化されたノードという単位を GUI で繫ぐのみで一連の処理を作成できる開発 / 実行環境
• Node-RED の提供形態• Bluemix 版
DB 、 Watson ノードが充実
• OSS 版 ファイル読み書き、 コマンド実行ノード等を利用可
• Raspberry Pi 版 OSS 版のノードに加え、 GPIO 制御ノード等を利用可
→ 今回は Raspberry Pi 版に Watson ノードを追加して利用※Watson 、 Bluemix は International Business Machines Corporation の登録商標、製品名です。※GPIO: General Purpose Input/Output
© Hitachi, Ltd. 2016. All rights reserved.
Raspberry Pi に接続したマイクに向かって「 It’s hot( 暑い ) 」と発言すると、扇風機が動く音リモコンを開発
• Raspberry Pi 版の Node-RED を利用
• Watson Speech to Text を用いて音声認識
• GPIO 端子でリレーを制御し、扇風機の電源を ON/OFF
Node-RED で開発した音リモコン
3
IBM Bluemix
GPIO端子
USBマイク
「暑い」と発言
Node-RED
WatsonSpeech to Text
(1)音声を録音
(2)音声データをテキストに変換
(3)テキストに「暑い」という単語が含まれている場合、リレーのスイッチをON
音声データ テキスト (4)扇風機の
電源ON
Raspberry Pi リレー
© Hitachi, Ltd. 2016. All rights reserved.
• 主なハードウェア構成• Raspberry Pi2 Model B• USB 接続ヘッドセット、 USB 接続 Wifi アダプタ、 USB 接
続扇風機• リレー、 USB コネクタ
• ソフトウェア構成• OS: Raspbian version May 2016• 追加ブラウザ : iceweasel (Epiphany は一部ノードを編集できない
ため )• 追加ノード : Watson Speech to Text
• 主なインストールコマンド
sudo apt-get install npm iceweasel
npm install node-red-node-watson
動作環境
4
Raspberry Pi 版の Node-RED にWatson ノードが追加される
© Hitachi, Ltd. 2016. All rights reserved.
Node-RED の処理フロー
5
(1) マイクで録音し、 音声ファイル保存
(2) Watson のサーバへ 音声ファイルをアップロードし、 音声認識結果のテキストを取得
(3) “hot” という単語を 含むか判定 (4) GPIO 端子に電流
ON/OFF 信号を設定
# 処理ノード 使用名 役割
1 ingest Run 処理を定期実行
2 Exec Recordvoice
外部コマンド実行
3 File( 左右に端子あり )
Read voice file
ファイル読み込み
4 debug Error コマンドのエラー出力
# 処理ノード 使用名 役割
5 Speechto Text
WatsonSpeech to Text
音声認識実行
6 debug Text 音声認識結果出力
7 switch hot? 文字列判定
8 template ON, OFF Relay に渡す値設定
9 rpi-gpio( 左に端子あり )
Relay GPIO 端子の電流 ON/OFF
※ 各ノード詳細
© Hitachi, Ltd. 2016. All rights reserved.
音声録音、音声認識
6
• exec ノード (Record voice)• arecord コマンドを用いて 5 秒間録音• ファイルは wav 形式で保存
• speech to text ノード (Watson Speech to Text)• Bluemix 上で Watson Speech to Text のサービスを作成• サービスの環境変数 Username と Password を貼り付け
Exec ノードの設定 Text to speech ノードの設定
© Hitachi, Ltd. 2016. All rights reserved.
条件判定、 GPIO 端子制御
7
• switch ノード (hot?)• 音声認識結果に文字列 hot を含むか判定• 判定結果を基に、 0,1 の値を返す template ノードに処理を引き継ぐ
• rpi-gpio ノード (Relay)• GPIO 端子の 18 番を制御するように設定• template ノードから受け取った値 0,1 を基に電流の ON/OFF を制御
switch ノードの設定 Rpi-gpio ノードの設定
© Hitachi, Ltd. 2016. All rights reserved.
ブレッドボードで作成した回路
8
USB電源 扇風機へ接続
リレー
• GPIO 端子に電流を流すとリレーのスイッチを入れるよう配線
• リレーのスイッチにより、 USB の電源を ON/OFF 制御
配線の様子 配線図
© Hitachi, Ltd. 2016. All rights reserved.
最後に
9
• Node-RED を用いて開発する利点• 開発時間が短い ( 約 1 時間 )• 他者への説明が容易
• 発展アイデア• 条件判定のバリエーション追加• 照明、エアコン等の機器に対応• WordNet を用いた同義語判定
• 詳細はユーザ会で連載したASCII 記事に掲載
http://bit.ly/1XVF63n