2016年3月31日木曜日

irMagician と GrovePi でIoTリモコン - ブラウザ操作と音声認識によるリモコン操作 -


 ハードウェアは準備出来たので、色々と機能を載せていこうと思います。まずは、irMagician をブラウザから操作して家電のOn/Offをできるようにして、PCやVPN接続でスマホで外出先からの制御ができるようにしたいと思います。また、ブラウザ操作相当の操作を音声認識により実現したいと思います。
 この手の「Raspberry Piを学習リモコンにしてスマホ等で操作する」とか「音声認識学習リモコン」とかはすでによくやられていて、前例がたくさんあります。今回は、そういった有益な銃砲をネットに公開してくださっている先達の知恵に甘えます。参考にしたサイトを幾つか挙げておきます。感謝です。

 今回は python + tornado でサーバ側でpostを受け取って、irMagicianの json形式リモコン信号データを再生するプログラムをテスト的に作成しました。といっても、上記リンク先やネットに公開されていたコードをつなぎあわせただけですが。

 部屋の照明のリモコンとエアコンのそれぞれのOn/Off信号のjsonファイルを下記のHTML(ブラウザ)側からpostされてくる 1 or 2 ・・の文字で判定してハードコーディングで処理しています。

 スマートフォンでGrovePiにアクセスすると、次のような画面で操作できます。


 また、julius 音声認識をモジュールモードで動かして、julius 側ポート 10500 とソケット通信で音声認識結果を受け取って、ブラウザページでの操作に相当するpostを送信するような以下のプログラムも走らせます。なお、juliusには認識してい欲しい言葉だけの辞書セットを作っています。

 これで、julius -音声認識結果→ test_recognition_client.py -post→ test_irMagicianServer.py と連携して、音声で家電操作ができるようになりました。でも、静かな状態ならいいんですが、BGMとかをかけたりすると誤認識して、勝手にエアコンがOn/Off したり、突然部屋の明かりが消えたり・・・。う~ん、実用には遠い状態。認識語の組み合わせやマイク感度調整等で向上するのかな?