【Google Home】Google Homeにテキストを読み上げさせたい

最近ちょっと、Swiftからそれてきてしまいましたが、今回もSwiftとは別の話題です。少し前に楽天でセールをやってる時に、Google Home Miniが30%offぐらいで売っていたので、ついつい欲しかったので買ってしまいました(本当は昨年末の半額セールで買えば良かったんですけどね。気がついたら終わってたので・・・)。で、まあ、色々話しかけると、答えてくれたりはするのですが、エンジニアとしてはもうちょっと踏み込んだところまでやってみたいな〜とか思ってしまうわけですが、例えば、SNS等の投稿を読み上げて貰うとか・・・。今回はその入口として、ほんとに入り口ですが、Google Homeに単純にテキストを読み上げて貰います。今回の環境はRaspberry Pi Zeroでやります。OSはjessieです。

google-home-notifier

いきなりの見出しですが、’google-home-notifier‘。Google Homeにテキストを読み上げて貰うには’google-home-notifier‘を使います。nodeのモジュールで単純な読み上げだけなら簡単に出来ます。余裕で英語が読めちゃう人は左記のリンク先を見て頂ければサクッと行けてしまうと思います。

nodeの準備

先ずは、nodeの準備をします。なんだかんだこれが一番面倒なところな気がしました。nodeのバージョンだのなんだのあって、ハマりどころと言えばハマりどころになるのでしょうか。とりあえず、nodeをインストールします。’google-home-notifier‘をインストールしたいディレクトリで作業すると、良いかと思われます。

$ sudo apt-get install git-core libnss-mdns libavahi-compat-libdnssd-dev
$ curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
$ sudo apt-get install nodejs

1行目のcurlがおまじない的な感じだと思われます。nodejsのインストールが完了したら、以下のコマンドを打ってバージョンを確認してみてください。

$ node -v 
// 上のコマンドが駄目な場合は、下のコマンドで確認してください。
$ nodejs -v

‘v7.x.x’的な結果が返ってきましたでしょうか? 多分v7以上なら大丈夫なのでしょうか・・・。僕の場合は’v0.10.x’的な結果が返ってきてしまいました。そのバージョンだと’google-home-notifier‘のインストールが上手く行きませんでした。
で、じゃあどうするかというと・・・npmを使って最新バージョンのnodeをインストールします。先ずは、以下のコマンドを打ってnpmをインストールしてください。てか、’google-home-notifier‘をインストールするのにも必要になります。

$ sudo apt-get install npm

次に、nをインストールします。nはnodeのバージョンを管理できるみたいですね。
-gはグローバルなところへインストールされるらしいです。付けないとカレントディレクトにインストールされます。

$ sudo npm install -g n
// ちなみにnpm自身のアップデートは・・・
$ sudo npm i -g npm
// だそうです

nのインストールが完了したら、nodeのバージョンをlatest(最新)にしてしまいます。

$ sudo n latest

再度、バージョンを確認します。

$ node -v 

現時点で僕の環境では’v9.9.0’となりました。

本丸のインストール

では、ようやく’google-home-notifier‘のインストールをしてみたいと思います。やることは簡単で、先程インストールしたnpmを使ってインストールします。リンク先に書いてあることそのままです。今度はカレントディレクトリにインストールしたいと思います。

$ npm install google-home-notifier

インストール出来ましたでしょうか? 多少時間がかかりますね。カレントディレクトを見てみると以下のような感じになっていると思います。

$ ls
node_modules package-lock.json

読み上げ

今日のゴールの読み上げをさせてみたいと思います。カレントディレクリにread.js等の名称でファイルを作成し、次のコードを書いてください。

var googlehome = require('google-home-notifier');
var language = 'ja';

googlehome.device('Google Home', language);

googlehome.notify('こんにちは、世界', res => {
    console.log(res);
});

そしたら、次のコードで実行します。

$ node read.js

どうでしょう? 「ドゥルルン」って鳴ってから、Google Homeが喋りはじめましたでしょうか?

参考サイト

終わりに

ちょっと喋らせただけで、急に夢が広がった気がしますね。僕が今ちょっとやってみてるのは、nodeのexpressでhttpサーバを立てて、外から喋らせたりとか、出来るようにしてみました。IFTTTを使って時間が来たら天気を言わせてみたりとかで遊んでます。SNSに投稿したら、それを読み上げて貰う・・・に次は挑戦してみたいですね。
ちなみに、我が家ではトイプードルを飼っているのですが、Google Homeに「座れ!」とか「ハウス!」って言わせてみましたが、何一つ言うことは聞かなかったでした。まあ、感情ない感じで喋りますからね。そうそう、漢字のテキストとひらがなのテキストはイントネーションが違うことがありますね。色々試してみるのもおもしろすですね。

関連記事

【Xcode】ERROR ITMS-90032: "Invalid Image ...

【Swift】UIAlertViewからUIAlertControllerへマイ...

【Swift4】「'characters' is deprecated」というワ...

【Homebrew】使い方メモ

【Google Home】Google Homeにテキストを読み上げさせたい【そ...

Swift4におけるsubstringについて