Raspberry Pi で Alexa に任意の言葉をしゃべらせる方法

みなさん、こんにちは。

音楽の再生はもちろんのこと、天気や電車乗換の案内をしてくれるAmazon Alexa。発売されて随分経ちますが、みなさんはどう活用されていますか?Alexaに話しかけるだけでなく、たまにはAlexaから話かけてほしいと思ったことはありませんか?

そんなあなたのために、今回はRaspberry Piを使ってAmazon Alexaから話しかけてもらう方法をご紹介します。今回ご紹介する方法では、決まった言葉を話しかけてくれるだけですが、プログラム次第でいろいろな応用が可能です。

最後まで読んで、ぜひ応用方法を考えてみてください。

なお、Google Home / Nest でも同様のことができますので、もしGoogleデバイスをお持ちの方は以下を参照してください。

 


 

Alexaを遠隔操作する魔法、「alexa-remote-control」

 

今回のお話の主役となるのは、「alexa-remote-control」というツールです。

これは、Raspberry PiのようなLinux環境からAlexaデバイスを制御するためのスクリプトで、これを使えば、定型アクションではできないような、より柔軟な音声コマンドや通知を実現できます。

 


 

準備するもの:Raspberry Pi とNode.js

 

まず、今回の作業に必要なものから見ていきましょう。

  • Raspberry Pi
    今回は3b+を用意し、OSにDebian Busterを使用しました。最新のRaspberry Pi OSでも問題なく動作するはずです。
  • Node.js (v16以降)
    後述するリフレッシュトークン取得のために必要です。私はNode.js 20を利用しましたが、16以降であれば大丈夫です。
    なお、リフレッシュトークン取得後は使用しないため、Raspberry Pi 環境にインストールする必要もありません。
  • 安定したインターネット接続
    もちろん、Alexaデバイスもインターネットに接続されている必要があります。

 


 

1. Alexaのリフレッシュトークンを取得

 

Alexaデバイスを遠隔操作するためには、まず「リフレッシュトークン」と呼ばれる特別な鍵を取得する必要があります。これは、AmazonアカウントとAlexaサービスを連携させるための大切な認証情報です。

Node.js環境の準備

まずNodejsをインストールしましょう。私はXubuntu 22.04にNode.js 20をインストールしましたが、バージョン16以降であれば問題ありません。WindowsであればWSL環境のUbuntuにインストールできます。以下をターミナルで実行します。

sudo apt install nodejs
node -v
v20.19.2

alexa-cookie-cliのクローンと実行

リフレッシュトークンを取得するために、「alexa-cookie-cli」というツールを使います。これはGitHubで公開されているので、クローンして利用します。

git clone https://github.com/adn77/alexa-cookie-cli.git
cd alexa-cookie-cli
npm install

インストールが完了したら、以下のコマンドを実行します。

node ./cli.js -p amazon.co.jp -a ja_JP -P 8080

このコマンドを実行すると、ターミナルが待機状態になります。

次に、ウェブブラウザを開き、http://127.0.0.1:8080 にアクセスしてください。

Amazonへのログインとトークンの取得

ブラウザでアクセスすると、Amazonのログイン画面が表示されます。指示に従ってAmazonアカウントにログインしてください。ログインが成功すると、ブラウザは自動的にリダイレクトされ、ターミナルには以下のような情報が表示されます。

deviceSerial: XXXXXXXXXXXXXX
refreshToken: Atnr|XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

このAtnr|ではじまるrefreshTokenが、今回最も重要な情報です。この値をコピーして、メモ帳などに控えておいてください。deviceSerialも後で使う可能性があるので、控えておくと良いでしょう。

リフレッシュトークンを控えたら、ターミナルで Ctrl+C を押して alexa-cookie-cli を終了させ、ブラウザも閉じて大丈夫です。alexa-cookie-cliのフォルダは、もう使わないので削除しても構いません。

 


 

2. Raspberry Piの環境設定とalexa-remote-controlのセットアップ

 

次に、実際にAlexaを操作するための環境をRaspberry Piに構築していきます。以下はRaspberry Pi にログインして実行してください。

必要なパッケージのインストール

alexa-remote-controlの動作に必要なパッケージをインストールします。

sudo apt-get update && sudo apt-get install -y curl jq

curlはウェブからデータを取得するために、jqはJSONデータを処理するために使われます。どちらも便利なツールなので、インストールしておくと何かと役立ちます。

alexa-remote-controlのクローン

GitHubからalexa-remote-controlをクローンします。

git clone https://github.com/thorsten-gehrig/alexa-remote-control.git
cd alexa-remote-control

alexa_remote_control.shの編集

クローンしたalexa-remote-controlディレクトリの中に、alexa_remote_control.shというファイルがあります。このファイルを編集して、先ほど取得したリフレッシュトークンなどを設定します。

vi alexa_remote_control.sh

viエディタが開いたら、以下の箇所を探して修正します。

  • SET_REFRESH_TOKEN='{refreshToken}'
    • {refreshToken}の部分に、先ほど控えたリフレッシュトークンを貼り付けます
  • SET_TTS_LOCALE='ja-JP'
    • 日本語で発話させるために、en-USからja-JPに変更します。
  • SET_AMAZON='amazon.co.jp'
    • 日本のAmazonアカウントを使用しているので、amazon.comからamazon.co.jpに変更します。
  • SET_ALEXA='alexa.amazon.co.jp'
    • 同様に、Alexaのエンドポイントもalexa.amazon.comからalexa.amazon.co.jpに変更します。

編集が完了したら、viエディタで :wq と入力して保存終了します。

 


 

3. 動作確認とAlexaに喋らせてみよう!

 

これで準備は整いました!ではAlexaに喋ってもらいましょう。

デバイスリストの確認

まず、alexa_remote_control.shが正しく設定されているか確認するために、登録されているAlexaデバイスのリストを表示してみます。

alexa_remote_control.sh -a

このコマンドを実行すると、あなたがAmazonアカウントに登録しているAlexaデバイスの名前が一覧表示されます。もしデバイス名が表示されれば、ここまでの設定は成功です!

Alexaに喋らせる!

いよいよ本番です。以下のコマンドを実行して、Alexaに任意の言葉を喋らせてみましょう。

alexa_remote_control.sh -d '{端末名}' -e 'speak:ハローアレクサ'
  • {端末名}の部分には、先ほど-aオプションで表示されたAlexaデバイスの正確な名前を入力してください。例えば、「エコードット」などです。
  • 'speak:ハローアレクサ'の部分は、Alexaに喋らせたい内容です。speak:の後に続けて、好きな言葉を入力してください。

コマンドを実行して、あなたのAlexaデバイスから「ハローアレクサ」と発話されたら、見事成功です!

 


 

さらなる応用へ

 

これで、Raspberry PiからAlexaを自由に操る力を手に入れました。この技術を使えば、様々な応用が考えられます。

  • 定時アナウンス
    Raspberry Piのcron機能と組み合わせれば、毎朝の天気予報やニュースをAlexaに読み上げさせることができます。
  • スマートホーム連携
    Raspberry Piでセンサーを読み取り、その結果に応じてAlexaに通知をさせたり、特定の情報を喋らせたりすることも可能です。
  • 独自の音声アシスタント
    少しプログラミングの知識があれば、特定のコマンドに応答してAlexaが喋るような、独自の音声アシスタントを構築することも可能です。

Raspberry PiとAlexaの組み合わせは、想像力を掻き立てる無限の可能性を秘めています。ぜひ色々と試して、あなただけのスマートホームシステムを構築してみてください。とりわけ、高齢者の見守りシステムとしてAlexaの発話機能は有望ではないでしょうか?

 

本日も最後までお読みいただきありがとうございました。

それでは、よいAlexaライフを!

「Raspberry Pi で Alexa に任意の言葉をしゃべらせる方法」への1件のフィードバック

  1. ピンバック: Raspberry PiにGoogle-home-notifierをセットアップしてGoogle Home / Nestに任意の言葉を喋らせる方法 - ビューローみかみ

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール