Amazonタイムセール情報!!コチラをタップ

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

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

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

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

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

あわせて読みたい
Raspberry Pi(ラズパイ)初心者のためのかんたんセットアップ手順(ABOX Raspberry Pi 3 Model b+) Raspberry Pi(ラズベリーパイ)って興味あるけどセットアップって難しそう・・・。 ラズパイって周辺機器と相性があるんだっけ? 2019年、ブログとともに何か新しいこ...

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

ヨシタカ

O.K. Google、明日の天気は?
Google Home

明日の○○は最高気温13度、最低気温1度、晴れときどき曇りでしょう

という感じです。

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

あわせて読みたい
【Chromecastレビュー】Google Homeと連携してテレビでYouTubeがはかどる!? 「Chromecast(クロームキャスト)ってどう使うの?」 「Google Homeと連携して活用したい!」 Chromecast(クロームキャスト)は、YouTube等の映像配信サービスを大画...

主に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+

ざっくりとした流れ

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

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

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

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

あわせて読みたい
Raspberry Pi(ラズパイ)初心者のおすすめ活用方法をご紹介! Raspberry Pi(ラズベリーパイ、通称ラズパイ)で色々と遊んでます^^ ラズベリーパイは、英ラズベリーパイ財団が開発した超小型のシングルボードコンピューター。 日本...
ヨシタカ

引き続き、素敵なラズパイライフをお送りくださいね♪

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!

コメント

コメントする

タップできるもくじ
閉じる