先日購入したスマートスピーカーは、話しかけないと黙ったままなんですよね。

 

せっかくなので、時間やセンサの値をトリガにして何かアクションを起こすようにしたい

そのための第一歩として、まずはラズパイ(RaspberryPi)を使ってスマートスピーカー(Google Nest Mini)を喋らせてみようと思います。

 

 

先人たちは2018年くらいにこれをやっていたみたいですね、

参考にした記事が、だいたいこの年代のものが多かったです。

 

まずはこちらの参考記事に沿ってラズパイをセットアップしていきます。

 

(参考) Qiita ラズパイでgoogle-home-notifierのセットアップ方法

https://qiita.com/yuppejp/items/db528407d6eed57a6e11

 

 

インストール関係が続くので、結構時間がかかりました。

大まかには下記のような流れになります。

 

 1.古いNode.jsをアンインストール

 2.パッケージを更新

 3.nvmのインストール

 4.Node.jsのインストール

 5.google-home-notifierのインストール

 6.ファイルの修正

 7.google-home-notifierの起動

 

 

1.古いNode.jsのアンインストール

 

こちらのコマンドを実行します

sudo apt-get autoremove node.js

処理が終わるまで待ちます。

 

 

2.パッケージの更新

 

下記のコマンドを実行します。

sudo apt-get update

sudo apt-get upgrade

ここが結構時間かかりました。

終わるまでしばらく待ちます。

 

 

3.nvmのインストール

 

まずディレクトリを作成し、gitからクローンします

sudo mkdir ~/.nvm

sudo chmod 777 ~/.nvm

git clone https://github.com/creationix/nvm.git ~/.nvm

 

nvmを使えるようにします

source ~/.nvm/nvm.sh

nvm --version

この1行目のコマンドは、場合によっては何度か使うかもしれません。(メモ)

 

起動時に読み込むようにする

vi ~/.bash_profile

 

上記コマンドを入力すると、ファイルの編集画面が開きます。

その中に下記を入力します。

if [[ -s ~/.nvm/nvm.sh ]]

  then source ~/.nvm/nvm.sh

fi

 

:w .bash_profile

:wq

最後の2行は、viの保存に関するコマンドなので、Linuxに慣れてる人はスルーしてください。

:wqだけだとうまく保存できなかったので、:wで名前を付けて保存した後に終了させています。

保存と終了は下記の記事を参考にしました。

 

(参考) エンジニアの入り口  すぐわかる!viの保存と終了の方法【Linux基礎知識】

https://eng-entrance.com/linux-vi-save

 

 

 

4.Node.jsのインストール

 

色々なバージョンがあるので、まずはバージョンの確認をします。

nvm ls-remote

その中で、LTS(安定版)バージョンをインストールします。

 

2020.10.24時点では、v12.19.0が最新のLTSバージョンでしたので、これをインストールします。

nvm install v12.19.0

Node.jsのインストールとバージョンを確認します。

node --version

npm --version

 

私の場合は、node.jsとnpmがそれぞれ

 v12.19.0

 6.14.8

であることが確認できました。

 

 

5.google-home-notifierのインストール

 

こちらも参考記事通りに入力していきます。

sudo apt-get install libavahi-compat-libdnssd-dev

git clone https://github.com/noelportugal/google-home-notifier

cd google-home-notifier

npm install

警告は出るけど、エラーが出なければOKらしい。

 

 

6.ファイルの修正

 

home/pi/ の中に「google-home-notifier」というフォルダが出来ているので、その中のファイルを4つ修正します。

参考資料では修正箇所は1つ目だけでしたが、うまくいかずに色々と調べていると下記のような記事を見つけましたので、合計4箇所修正しました。

もしかすると全ては必要ないかもしれませんが、ダメだったときの参考になるかもしれないので全部残しておきます。

 

(参考) Qiita google-home-notifierでError: get key failed from googleの対処(2018.12.1版)

https://qiita.com/shocnt/items/3f6a0d1da9910de8f4df

 

(参考) 大阪SEのメモブログ  Google Homeを自発的に喋らせるために

https://stpost.net/se/google-home-talk

 

 

example.js の修正

 1.IPアドレスの部分を、自分のスマートスピーカーのIPアドレスに変更

 2.言語のところを「pl」から「ja」に変更(2か所ある)

 

package.json の修正

 google-tts-apiの部分を「0:0:2」から「0:0:4」に書き換える

 

google-home-notifier.js の修正

 1.IPアドレスの部分を、自分のスマートスピーカーのIPアドレスに変更

 2.言語のところを「en」から「ja」に変更(2か所ある)

 

browser.js の修正

 こちらのファイルは、「google-home-notifier/node_modules/mdns/lib/browser.js」にあります。

 赤色の文字を該当箇所に追記します。({families[4]}

Browser.defaultResolverSequence = [
rst.DNSServiceResolve(), 'DNSServiceGetAddrInfo' in dns_sd ? rst.DNSServiceGetAddrInfo() : rst.getaddrinfo({families:[4]})
, rst.makeAddressesUnique()
];

 

7.google-home-notifierの起動

 

下記コマンドを入力。

node example.js

もし途中でターミナルを閉じたり、ラズパイを再起動した場合は下記のように入力。

source ~/.nvm/nvm.sh

cd google-home-notifier

node example.js

これで、待ち受け状態になります。

ターミナルは開きっぱなしにしておきます。

 

 

あとは、もう1つターミナルを開いて下記を入力すれば喋ります。

curl -X POST -d "text=こんにちは" http://192.168.2.113:8091/google-home-notifier

IPアドレスのところは、ラズパイのアドレスになります。

これを同じネットワーク内のPCから入力しても喋るはず。

 

ですが、私の場合はなぜかWinPCからだと英語しか喋れず。。

色々と調べたところ、日本語の文字コードをS-JISからUTF-8にすれば良いとの情報がありました。

コマンドプロンプトでそんなの設定できるの?と思ったら、出来るようです。

 

(参考)Qiita Google Homeの喋らせ方をサルにもわかるように説明

https://qiita.com/miyasita1958/items/339c94edbe1d35cf958e

 

(参考)Qiita Windowsコマンドプロンプト 文字コード設定

https://qiita.com/user0/items/a9116acc7bd7b70ecfb0

 

 

まぁ、それでもできなかったんですけどね。

何がダメなんでしょうか・・・。

 

しかし、ラズパイからだと日本語で喋らせることができたので問題無し!

 

 

あとはこれをcronで定期的にコマンドを送ってやれば、定期的にスピーカーから好きな言葉を喋らせることができます!

例えばこんな感じで。

 

 

はじめの「* * * * *」は、「分, 時間, 日, 月, 曜日」になっているようです。

曜日の場合は、1=月曜日 ~ 7=日曜日。

 

 

スマートスピーカーを活用して、規則正しい生活を目指していきたいですね。

あとはセンサの値をトリガにして喋らせたいなぁ・・・。

 

 

これはまた後日挑戦します!