まるっとワーク

データ分析・電子工作など気になることを残していきます

Amazon Echo(Alexa)を喋らせる

f:id:toku_dango:20210425134042p:plain

Amazon Echoは、話をするようにAmazon Echoに話しかける or Amazon アプリから話すように指示をする等でないと喋ってくれないので、もう少し色々と喋らせる方法はないかと探していました。

本記事ではalexa_remote_controlを使用しますが、その他の方法としてはNode-redを使った方法もあるようです。
他の記事でも色々とまとめられているので、実用性を意識してまとめます。

Alexa-remote-controlのダウンロード

Alexa-remote-controlの「alexa-remote_control.sh」を適当なパスに保存する。

pi@rasberrypi: ~ $wget https://raw.githubuser.com/thorsten-gehrig/alexa-remote-control/master/alexa_remote_control.sh

github.com

Alexa-remote-controlを実行するために必要なライブラリをインストール

JSONツールが必要になるので、インストールする。

pi@rasberrypi: ~ $sudo apt-get install jq


Alexa-remote-controlの設定

alexa-remote-control.sh内に、以下項目の記載があるので、自身のAmazonアカウントに関する情報と必要な設定項目を入力する。

SET_EMAIL='' #Amazonアカウントにログインするためのemailアドレス
SET_PASSWORD='' #Amazonアカウントにログインするためのパスワード
SET_LANGUAGE='ja-JP'
SET_TTS_LOCALE='ja-JP'
SET_AMAZON=''amazon.co.jp 
SET_ALEXA='alexa.amazon.co.jp'


Alexa-remote-controlを使用する

パターン① コマンドラインで実行

pi@rasberrypi: ~ $ ./alexa_remote_control.sh -e "speak:おはよう"


パターン② pythonコード内で実行

import subprocess

cmd = ["./alexa_remote_control.sh", "-e", "speak:おはよう"]
res = subprocess.call(cmd)

Amazon Echoバイスが喋りだしたら成功ですね。"speak:"の後のワードを好きに変えていただければ、そのワードを喋ってくれます。
どちらの方法でも、実行の結果は同じになると思います。

その他コマンドについて

基本公式やalexa-remote-control.sh内にコマンドの詳細記載があるので不要と思いますが、参考まで。


特定の事柄を喋らせる

import subprocess

cmd = ["./alexa_remote_control.sh", "-e", "speak:おはよう"] #自由に設定したワードを喋らせる
cmd = ["./alexa_remote_control.sh", "-e", "weather"] #天気予報について
cmd = ["./alexa_remote_control.sh", "-e", "traffic"] #交通状況について
cmd = ["./alexa_remote_control.sh", "-e", "flashbriefing"] #最新ニュースについて
cmd = ["./alexa_remote_control.sh", "-e", "tellstory"] #適当な話について

res = subprocess.call(cmd)



指定の呼びかけに対する反応

import subprocess

cmd = ["./alexa_remote_control.sh", "-e", "textcommand:おはよう"] 
res = subprocess.call(cmd)


ラジオ再生

import subprocess

cmd = ["./alexa_remote_control.sh", "-r", "s8638"] #第3引数にラジオIDを入力する

res = subprocess.call(cmd)


まとめ

今回はAmazon Echoを喋らせる方法についてまとめました。
色々と組み合わせて、スマートホーム化を図りたいですね。