以前、作って運用しつつもブラッシュアップ中のRaspberry Pi 3 Model B+とJulius、Open JTalkベースの自作スマートスピーカーがあります。
主な機能は、
尚、ラズパイ用ACアダプタを挿したスイッチ付きコンセントでのON/OFFとは別にラズパイ用boot/reboot/shutdown物理ボタン付き。
音声認識にJuliusを使った自作スマートスピーカーに伝言とメモの機能を実装するにあたり、マイクとスピーカーを専有してしまうOSSやALSAからPulseAudioに移行しました。
ちなみに便利なのでラズパイだけでなく、PC/Debianにも自作スマートスピーカー機能を搭載しています。
自ずとモニタ付きとなるPC版スマートスピーカーには、PC及びラズパイ双方のスマートスピーカー機能のデスクトップアプリとしてPyQt5/Qt Designerによる操作パネルも作成しました。
今回は、HTML5実装の一部であるWebSocketを介して壁面埋め込み照明スイッチをON/OFFするサーボモータを音声操作できるようにします。
リモコン家電なら自作スマートリモコンでリモコンに対応していなくても自作スマートコンセント・スマートプラグにつなげば、同様にスマートスピーカーから音声操作できます。
ただ、ON/OFFできる自作スマートコンセント・スマートプラグを壁面に埋め込むのは至難の業、スイッチ含むパネルの交換だけでWiFi操作...という商品もあるようですが、壁内の配線をつなぎ直すには、保有者は良いですが、電気工事士の資格がいります。
また、サーボを使う前提でスマートリモコン対応はできなくもない気はするものの、別途リモコン用のデバイスを用意するなど手間がかかります。
その点、スイッチをサーボで押すなら資格は不要、WebSocketなら、音声のみならず、ブラウザからも操作でき、その場合、PC、スマホ、タブレットなどがあればよいのでコスパも高く、スマートライトに限らず、操作もプログラム次第と拡張も容易で、スマートスピーカーでも操作できます。
もちろん、手動でも点灯・消灯できますし、ESP8266/ESP32を使っており、PC、スマホ、タブレットなどのブラウザからでも、スクリプトにしてあるので端末(≒ターミナル)からでも操作できます。
詳細は、各リンク先に譲りますが、概要としては、次のようになります。
何をどう操作するかイメージすべく、
数部屋に渡って数台ある場合、文言も工夫を要しますが、せめて同一フロアごとにスマートスピーカーを置いてそれぞれ操作した方が良いでしょう。
音声認識ソフトウェアJulius用には、
[]内が応答スクリプトvoicerecieve.plに音声テキスト(条件分岐の条件)として渡される部分。
Juliusから渡される音声テキストへの応答スクリプトvoicerecieve.plは、
このようなPerlスクリプトの場合、system()を使って実際の家電操作スクリプトdk_light.pyを呼ぶ。
Pythonによる照明スイッチ操作スクリプトdk_light.pyは、
ちなみにブラウザからも操作でき、その場合は、自作無線電動ロールカーテン/ロールスクリーンに書いたようにJavaScriptをクライントとします。
リンク先のように、ここでは、ESP8266/ESP32にWebSocketサーバがあることを前提としています。
自動起動時(や現在のログイン状態)に反映すべく、