ガジェット

Raspberry Pi(ラズパイ)を使ってGoogle Homeをしゃべらせてみた

グーグルホーム

Raspberry Pi(ラズパイ)を使ってGoogle Homeをしゃべらせてみました!

みなさん、Raspberry Pi(ラズパイ)楽しんでますか?

ラズパイのセットアップが終わり、さて何をしようか考えました。

前回の記事がこちらです。

ラズパイセットアップ
Raspberry Pi(ラズパイ)初心者のためのかんたんセットアップ手順(ABOX Raspberry Pi 3 Model b+)Raspberry Pi(ラズベリーパイ)って興味あるけどセットアップって難しそう・・・。 ラズパイって周辺機器と相性があるんだっ...

たとえば、普段はこちらから明日の天気を聞いたらGoogle Homeが教えてくれます。

ヨシタカ
ヨシタカ
O.K. Google、明日の天気は?
Google Home
Google Home
明日の○○は最高気温13度、最低気温1度、晴れときどき曇りでしょう

という感じです。

その他には、Google HomeとChromecastを使って、テレビをつけたり消したりしてます。

chromecast
Chromecast(クロムキャスト)とGoogle Home連携でテレビが消せる!(感想・レビュー)「クロムキャストって便利なのかな?」 「テレビを音声で消せないかなぁ」 みなさん、Google Home、おうちで眠っていま...

主にGoogle Homeの役割はこの3つ。

  1. 天気を聞く
  2. ChromecastでYoutubeを見る
  3. Chromecastでテレビを消す

でも、これってこちらからGoogle Homeに話しかけてお願いしてるんですよね。

ヨシタカ
ヨシタカ
もしGoogle Homeから何か話してくれたら、面白いよなぁ

というわけで、ラズパイを使ってGoogle Homeを喋らせてみました

ラズパイでGoogle Homeを喋らせる

今回の目的:Raspberry PiとGoogle-home-notifierを使って、Google Homeにメッセージをプッシュする。

【2020.1.12更新】

使用機材

  • Google Home
  • Raspberry Pi 3B+
created by Rinker
ABOX
¥10,030
(2020/01/23 04:04:40時点 Amazon調べ-詳細)

ざっくりとした流れ

Node.js(サーバサイドで動くJavaScript)にgoogle-home-notifierというAPI(プログラムからソフトウェアを操作するためのインターフェイス)があり、Google Homeに任意の言葉を喋らせることができます。

・・・専門用語が多くて良く分からないですね。

流れは以下のようになります。

  1. ラズパイにGoogle Homeを操作するためのファイル(google-home-notifier.js)を導入
  2. ラズパイからGoogleHomeにしゃべらせたいことを実行
  3. 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

ドュルン!!

Google Home
Google Home
コンニチハ、グーグルホームデス、ヨロシクネ

うまくいきました \(^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をお持ちの方は、ぜひためしてみてはいかがでしょう?

ラズパイの取り組みはこちらでまとめていますので、よろしければ御覧ください♪

ラズパイTOP
Raspberry Pi(ラズパイ)、どう活用しようか?Raspberry Pi(ラズベリーパイ、通称ラズパイ)で色々と遊んでます^^ Raspberry Pi(ラズパイ)セットアップ R...
ヨシタカ
ヨシタカ
引き続き、素敵なラズパイライフをお送りくださいね♪
関連記事はこちら

COMMENT

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