Raspberry Pi(ラズパイ)を使ってGoogle Homeをしゃべらせてみました!
みなさん、Raspberry Pi(ラズパイ)楽しんでますか?
ラズパイのセットアップが終わり、さて何をしようか考えました。
前回の記事がこちらです。
たとえば、普段はこちらから明日の天気を聞いたらGoogle Homeが教えてくれます。
O.K. Google、明日の天気は?
明日の○○は最高気温13度、最低気温1度、晴れときどき曇りでしょう
という感じです。
その他には、Google HomeとChromecastを使って、テレビをつけたり消したりしてます。
主にGoogle Homeの役割はこの3つ。
- 天気を聞く
- ChromecastでYoutubeを見る
- Chromecastでテレビを消す
でも、これってこちらからGoogle Homeに話しかけてお願いしてるんですよね。
もしGoogle Homeから何か話してくれたら、面白いよなぁ
というわけで、ラズパイを使ってGoogle Homeを喋らせてみました。
【2020.1.12更新】
【ラズパイでGoogle Homeを喋らせてみた】
久しぶりのラズパイいじり🤖
やっとバグが直りました😊
google-tts-apiのバージョンアップでまた動くようになりました♪#ラズパイ初心者 #グーグルホーム pic.twitter.com/SPktUFAaxk— ヨシタカ🍤趣味ブログ初級者Lv.2 (@ystk_rl) January 12, 2020
使用機材
- Google Home
- Raspberry Pi 3B+
ざっくりとした流れ
Node.js(サーバサイドで動くJavaScript)にgoogle-home-notifierというAPI(プログラムからソフトウェアを操作するためのインターフェイス)があり、Google Homeに任意の言葉を喋らせることができます。
・・・専門用語が多くて良く分からないですね。
流れは以下のようになります。
- ラズパイにGoogle Homeを操作するためのファイル(google-home-notifier.js)を導入
- ラズパイからGoogleHomeにしゃべらせたいことを実行
- GoogleHomeがしゃべります
手順
それでは、ラズパイの設定をしていきましょう。
古いNode.jsのアンインストール
まずは、古いNode.jsをアンインストールします。
$ sudo apt-get autoremove nodejs
nvmのインストール
そして、nvmのディレクトリを作成し、git cloneでnvmをもってきてnvm.shを読み込ませます。
nvm とは Node Version Manager の略で, Node.js をかんたんにバージョン管理できるツールです。
$ sudo apt-get update
$ sudo mkdir ~/.nvm
$ sudo chmod 777 ~/.nvm
$ git clone https://github.com/creationix/nvm.git ~/.nvm
$ source ~/.nvm/nvm.sh
$ nvm --version
0.33.11
これで、nvmがインストールできました!
新しいNode.jsのインストール
次に、Node.jsのバージョンのリストを確認します。
$ nvm ls-remote
v10.13.0 (LTS: Dubnium)
v10.14.0 (LTS: Dubnium)
v10.14.1 (LTS: Dubnium)
v10.14.2 (LTS: Dubnium)
-> v10.15.0 (Latest LTS: Dubnium)
v11.0.0
v11.1.0
v11.2.0
v11.3.0
v11.4.0
v11.5.0
v11.6.0
v11.7.0
LTSの最新版であるv10.15.0をインストールします。
$ sudo apt-get update
$ nvm install v10.15.0
$ node --version
v10.15.0
$ npm --version
6.4.1
これでNode.jsとnpmがインストールできました!
google-home-notifierのインストール
Google Homeのための作業用ディレクトリを作成します。
$ mkdir googlehome
$ cd ./googlehome
googlehomeディレクトリでnpmを実行できるようにします。npmとはNode.jsのライブラリやパッケージを管理することができるツールです。 いろいろ聞かれますがEnterで進み、最後にIs this OK? (yes)でyesです。
$ npm init
avahiの開発用パッケージをインストールし、いよいよgoogle-home-notifierのインストールです。
$ sudo apt-get install libavahi-compat-libdnssd-dev
$ npm install google-home-notifier
これでようやく準備完了です。
Google Homeをしゃべらせてみよう
では、Google Homeをしゃべらせてみましょう!わたしの環境では、ラズパイとGoogle Homeは同じ無線LANにつながっています。
sample.jsを作成します。sample.jsのIPアドレスの部分は自分のGoogle HomeのIPアドレスに変更してくださいね。
Google HomeのIPアドレスの確認するにはスマホのGoogle Homeアプリから「デバイス」→IPアドレスを知りたいGoogle Home→「設定」の一番下にIPアドレスが記載されています。sample.jsは以下のようになります。
// ライブラリ参照
var googlehome = require('./google-home-notifier');
// 言語設定
var language = 'ja';
// GoogleHomeのIPアドレスに書き換えてくださいね
googlehome.ip('192.168.xxx.xxx');
// 第一引数を自分のもっているGoogleHomeの名前に書き換えてくださいね
googlehome.device('googlehome', language);
// Google Homeにしゃべって欲しい文章をここに記入してくださいね
var text = 'こんにちは、グーグルホームです。よろしくね。';
// メイン処理
try {
// 実行
googlehome.notify(text, function(notifyRes) {
// ログ出力
console.log(notifyRes);
});
// エラー処理
} catch(err) {
// ログ出力
console.log(err);
}
では、さっそく、実行してみましょう!
$ cd googlehome
$ node sample.js
ドュルン!!
コンニチハ、グーグルホームデス、ヨロシクネ
うまくいきました \(^o^)/
いつもよりなんだか棒読みな感じがしますが・・・。
バグを直しましょう!
【2020.1.12追記】
その後、APIのバージョンの不整合により、Google Homeへのプッシュ動作がうまく動かなくなりました。
下記によりまた動くようになりました。
google-tts-apiのバージョンアップ
package.jsonのgoogle-tts-api を 0.0.4 に設定します。
フォルダは下記を参照。
node_modules/google-home-notifier/package.json
"bundleDependencies": false,
"dependencies": {
"body-parser": "^1.15.2",
"castv2-client": "^1.1.2",
"express": "^4.14.0",
"google-tts-api": "0.0.4",
"mdns": "^2.3.3",
"ngrok": "^2.2.4"
},
修正したpackage.jsonを更新します。
$ cd node_modules/google-home-notifier/
$ npm update google-tts-api
browser.js の修正
もう1つ。
browser.jsを修正します。
フォルダは下記を参照。
node_modules/mdns/lib/browser.js
rst.getaddrinfo に引数 {families:[4]} を追加します。
Browser.defaultResolverSequence = [
rst.DNSServiceResolve(), 'DNSServiceGetAddrInfo' in dns_sd ? rst.DNSServiceGetAddrInfo() : rst.getaddrinfo({families:[4]})
, rst.makeAddressesUnique()
];
以上により、また正常に動作するようになりました。
ラズパイでGoogle Homeをしゃべらせてみた:まとめ
ラズパイを使ってGoogle Homeに好きな文章をしゃべってもらいました。
普段こちらの問いかけに答えてくれるGoogle Homeでしたが、棒読みでも向こうから話してくれるのは新鮮で面白かったです。ラズパイとGoogle Homeをお持ちの方は、ぜひためしてみてはいかがでしょう?
ラズパイの取り組みはこちらでまとめていますので、よろしければ御覧ください♪
引き続き、素敵なラズパイライフをお送りくださいね♪
コメント