リモート音声認識でLEDのON/OFF(2016/12/1)
サンプル動画
Haruziraの音声認識で複数のリモートデバイスにコマンドを送信します。リモートデバイスにはネットワークに接続された2台のRaspberry Piを利用しています。
リモートデバイスは受信したコマンドを処理し、メッセージを返信します。
Haruziraで返信メッセージを受信し音声で読み上げます。
リモートデバイスと音声によるコミュニケーションを行う様子を動画にしましたのでご視聴下さい。
Windows 10デバイス(タブレットやスマートフォンなど)が1台手元にあれば、遠隔のデバイスと音声でのコミュニケーションが簡単に実現できることを想像できる思います。
システムの構成は、前回のサンプルで利用した回路を以下のように少し変更しました。
Client 1 |
本体:Raspberry Pi B OS:Raspbian version 4.4.32 プログラム言語:Ruby version 2.3.1 |
---|---|
Client 2 |
本体:Raspberry Pi3 B OS:Raspbian version 4.4.32 プログラム言語:Python version 3.4.2 |
LED回路1(client 1) |
LED:3mm赤色LED LT3U31P 波長660nm 明るさ250mcd(@20mA) VF 1.85V(~2.5V) 抵抗:240Ω プルダウン抵抗:10KΩ タクトスイッチ |
LED回路1(client 2) |
LED:3mm赤色LED LT3U31P 波長660nm 明るさ250mcd(@20mA) VF 1.85V(~2.5V) 抵抗:330Ω プルダウン抵抗:Raspberry Pi内蔵の抵抗(プログラムで設定) タクトスイッチ |
音声合成出力(Server) |
本体:自作PC及び、Freetel Katana 02(スマートフォン) OS:Windows 10 desktop and mobile version 1607 音声出力アプリ:Haruzira version 2.0.1 |
処理の流れは、大まかに次のようになります。
- Haruzira: 音声認識でコマンドを送信する。
- リモートデバイス: コマンドを処理し、メッセージを返す。
- Haruzira: メッセージを音声で読み上げる。
デモの様子を動画にしました
配線図と回路図
配線図と回路図は動画に含まれています。
POINT
- 基本的なポイントについては、LED点滅のカウントアップサンプルを参照する。
-
プルダウン抵抗:Ruby用の回路では10KΩの抵抗、Python用の回路ではRaspberry Piに内蔵されている抵抗をプログラムで設定している。
内蔵のプルダウン/アップ抵抗は起動時に有効になる場合とならない場合があったので、上記の何れかの方法で明示的に配置することを推奨する。 -
利用するGPIOピン: GPIO24はタクトスイッチ利用時に入力用として使用する。GPIO25はプログラムから出力用に利用している。
制御プログラム
動画では、Raspberry Piを制御するプログラム言語として、RubyとPythonを利用しています。
また、SDKのユーザーマニュアルも公開していますので、詳細を知りたい場合は参照して下さい。
公開先
プログラムの補足
音声コマンドの受信は、コールバック関数を登録することで通知されます。
LEDの点灯コマンドは、受信後すぐにLEDを点灯します。
LEDの消灯コマンドは、受信後メッセージの返信を行い待機し、「読み上げ完了通知」メッセージ受信時に消灯しています。
コマンド受信後の処理タイミングを変更することで、状況に合わせた振る舞いをプログラムすることができます。
詳細は、ソースコードを参照して下さい。