以前、作って運用しつつもブラッシュアップ中の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による操作パネルも作成しました。
今回は、リモコン付き空気清浄機の音声操作について。
家電操作リモコンには、やはり、ESP8266による自作スマートリモコンを使い、今回は、ESP-01/12/ESP32でリモコン付き空気清浄機をWiFi操作します。
詳細は、自作スマートスピーカー、自作スマートリモコン、エアコン操作など各リンク先に譲りますが、概要としては、次のようになります。
何をどう操作するかイメージすべく、
ちなみに家の空気清浄機は、ボタン押下ごとにON/OFFやタイマーの段階設定/OFFなど1つのボタンの押下回数で設定するようになっています。
音声認識ソフトウェアJulius用には、
[]内が応答スクリプトvoicerecieve.plに音声テキスト(条件分岐の条件)として渡される部分。
Juliusから渡される音声テキストへの応答スクリプトvoicerecieve.plは、
このようなPerlスクリプトの場合、system()を使って実際の家電操作スクリプトaircleaner1_control.plを呼ぶ。
空気清浄機各種操作スクリプトaircleaner1_control.plは、
ユーザーエージェントのインスタンス化、タイムアウト、リクエスト要求は、共用してもよいかも。
また、use文は、要らないのもあるかも。
自動起動時(や現在のログイン状態)に反映すべく、
リモコン送受信回路については、
1ヶ月ちょい前に買い替えた空気清浄機はスマホ・タブレットやAmazonアレクサ、Googleアシスタントなどスマートスピーカーからも操作可能なスマート家電ダイキン加湿ストリーマ空気清浄機MCK70Y。
スマート家電をスマホで操作と言えば、普通、専用アプリでの操作が大前提となりますが、今回、同様の手順を踏めば、当該メーカーや空気清浄機に限らず、他のスマート家電でも汎用で使える市販スマート家電用ブラウザ操作パネルと操作スクリプトを自作。
これにより、スマホやタブレットに限らず、ブラウザで操作できる操作パネルなのでパソコンからでもパネル操作可能、また、スクリプトに落とし込めたことで専用機やパソコンに入れた自作Julius/Open JTalkスマートスピーカーからの音声操作もできるようになりました。
よってこのページのJuliusとOpen JTalkを使ったスマートスピーカーでも手順は同様となり、MCK70Yも音声操作できています。
尚、操作コマンドを取得するため、一時的に専用アプリを使うことにはなりますが、代替できるほどに作り込めば、以後は不要です。
当該空気清浄機は数年前から会員登録、専用アプリへのログイン、宅内操作ですらクラウド経由となったとのことでしたが、自己責任で旧バージョンのアプリを使うことで、これを回避しました。
また、外出先からの操作については、以前から導入済みのVPN+LANで。