RaspberryPiでスマートホーム 〜ラズパイからAlexaを起動する〜
Amazonが販売しているEchoシリーズですが、こちらから話しかけない限りは起動しません。通知という仕組みもありますが、あくまでも黄色くランプが光るだけ。こちらから”アレクサ、通知は?”と聞いて初めて答えてくれます。
しゃべるだけで操作できるのも便利なんですが、しゃべらずに起動させたい時もある。なんとかならないか試してみました。
かなりアナログな方法ではありますが…
必要なもの
当然ながらラズパイを使用します。そして、Echoシリーズ。私はEchoDotを使ってます。
あと必要なものとして、これを買いました。
もうこれでどうするのか予想はつくと思いますが…
私はヨドバシで買いましたが、アマゾンにも売ってます。単4電池2本必要です。
最初はダイソーでこっちを買ったんですが、音が小さすぎてダメでした。
ちょっと周りに雑音があったり、アレクサが音楽再生中だったりすると全然相手してもらえませんでした。
準備
ラズパイに先ほどのスピーカーを繋ぎます。イヤホンジャックに差し込むだけです。私は延長コード使ってEcho Dotのそばに配置しました。
次に、Google Translate Text to Speechというサービスを使って、テキストを喋らせるスクリプトをダウンロードします。
元々Asteriskを使った、電話メニュー用に導入したのですが、
今回は単体で起動できるコマンドライン版を使います。先ほどのgithubの”cli”フォルダの”googletts-cli.pl”です。このファイル一つで大丈夫です。
必要なパッケージをインストールしておきます。
sudo apt-get install sox mpg123
sudo apt-get install libwww-perl
sudo apt-get install liblwp-protocol-https-perl
コマンドラインで起動します。パラメータは
- -t … 喋らせる言葉。
- -l … 言語。日本語はja。
- -s … 喋るスピード。
試してみます。
sudo perl googletts-cli.pl -t "こんにちは" -l ja -s 1.3
喋ってくれたら成功です。
テスト
ではやってみます。
sudo perl googletts-cli.pl -t "アレクサ、いまなんじ?" -l ja -s 1.3
感想
問題なくできました。これでcron使って決まった時間にアレクサを起動できます。
ラズパイ側はMQTTで指令を受信できるようにしているので、よそからラズパイ経由でアレクサを起動することもできます。例えばWebからテキスト送ってラズパイに喋らせたり、AWS IoTボタンを押してたら何か話すとか、Asterisk使って電話経由で話させるとか、色々とできそうです。