google
home
google-home-notifier
喋らせる

Google Homeの喋らせ方をサルにもわかるように説明

Windows環境からGoogle Home miniを喋らせるには?

初めて投稿します。
先日、Google Home miniがお手ごろ価格で買えたので遊んでましたが、どうせなら何か喋らせてみたいと思いLinuxに挑戦。しかし私のサルレベルの脳みそでは無理なことがわかり、敷居が低そうなWindows上で動かしてみることにしました。
これなら簡単と思いきやはまりにはまった。もしかしたら自分はサルかもしれない?いいや、「サル以下だなっ」って思ったので、忘れないようにここに手順をメモを残しておきます。

概略

google-home-notifierというjavascriptのプログラムが提供されていて、それを使うとコマンドベースで簡単にGoogle Homeに喋らせることができます。そしてjavascript言語を動かす環境として、node.js が必要とのことです。また、インストール時にpython言語(古いバージョン)もインストールします。

この作業はWindowsでありながらGUIではなくてCUI=コマンドラインで行います。
尚、この説明の対象者はコマンドプロンプトの意味を理解できていて、プログラムインストール経験のある方です。個別にインストールしているものが何なのかはここでは割愛しますので、興味があればググって調べてみてください。
作成に当たってはこちらを参考にさせて頂きました。

http://kghr.blog.fc2.com/blog-entry-118.html
こういう方たちのご尽力に感謝いたします。

環境

PC:Lenovo 64ビットノートPC
OS:Windows 10
スピーカー:Google Home mini
LAN:同一LAN上に設置

環境作成手順

  1. 半角の管理者権限ユーザーIDでログイン
    全角日本語のユーザーIDで作業したら、作業中に「ないよ!」的なエラーが出てしまいました。別のIDでやり直したらうまくいきました。自分がいじくりまわして環境が汚れたせいかもしれないし、なんの根拠もないけど、念のため。インストール後は日本語のIDでログインして実行しても問題ないようでした。
  2. node.jsのインストール
    node.jsのサイト(https://nodejs.org/ja/) からWindows用のインストーラをダウンロードしてインストールします。64ビットPCなので推奨版はv8.9.3 LTS(x64)をダウンロードして、ダブルクリックしてそのままデフォルトでインストールしました。
    ★ 不足があるかもしれないのでおまじないで npm install -g npm-install-missing としておくとよいかも?(誰かこのあたりアドバイスもらえたら嬉しいのだけど)
  3. node.jsのインストールができたのかを確認一応確認
    プログラム一覧にnode.jsのグループが登録されていますから、その中の「Node.js commend prompt」を右クリックして管理者権限で起動して、コマンドプロンプトで以下のコマンドを実行するとバージョンが表示されます。 まず、管理者権限でプロンプトを起動するとカレントディレクトリがsystem32になってしまいます。あとあと不都合がでるため今のうちにカレントディレクトリをログインユーザのディレクトリに移動します。
    c:¥Windows¥System32>cd c:\Users\yamamotosayaka
    次に、コマンドを実行します。
    c:¥Users¥yamamotosayaka>node --version
    v8.9.3
  4. windows-build-toolsのインストール
    c:¥Users¥yamamotosayaka>npm install -g windows-build-tools
    注.コマンド入力画面は、マウス右クリックして管理者として起動しておかないとエラーの警告がでます。
    結構時間かかるかと思います。古いPCにインストールした時ですが、.netが入っていなかったせいですぐ終りました。しかし後で見つからない旨のエラーがでました。
    不要なアプリ削除のつもりが消しすぎたみたいです。 手動でビルドツール入れようとしたら、要件満たしてない.net431以降が必要って出たので.net432(特にこれを選んだ意味はなし)を入れて再実行。今度は数十分待たされました。1~2分あたらりで終わるようなら、ツールのインストールに失敗していると思った方がよいかもです。
  5. node-gypのインストールのインストール
    c:¥Users¥yamamotosayaka>npm install -g node-gyp
  6. Bonjourのインストール
    以下をダウンロードしてインストールしてください。Apple IDが必要ですので持っていない場合は持っている人に頼むか、新規登録して入手します。
    Bonjour SDK for Windows
    Bonjour Print Services for Windows
    https://developer.apple.com/bonjour/
    環境変数が設定されているかを確認します。
    1) エクスプローラでPCを右クリックしてプロパティを選択
    2) システムの詳細設定を選択
    3) システムのプロパティウィンドウから環境変数ボタンクリック
    4) BONJOUR_SDK_HOMEにC:\Program Files\Bonjour SDK\が設定されていることを確認
  7. google-home-notifierのインストール
    c:¥Users¥yamamotosayaka>npm install google-home-notifier
    注意点
    ・インストールされたNode.jsのコマンドプロンプトアイコンを管理者権限で起動すること
    ・カレントディレクトリがユーザーIDのディレクトリになっていること ・警告でますがとりあえず無視してよいみたい。
    ・SDKだけでなくPrint Servicesもインストールしてください。
  8. プログラムのダウンロード
    google-home-notifierをWEBから直接ダウンロード、SVN取得、Git取得のいずれかの方法で適当な場所に入れてください。ユーザーIDのカレントディレクトリあたりにフォルダを作成すればよいかと思います。
    https://github.com/noelportugal/google-home-notifier
  9. テスト用のプログラム作成
    メモ帳など使い慣れたエディタで、以下を記述して、google-home-notifier.jsのあるフォルダに文字コードUTF-8でtest.jsという名前で保存してください。S-JISだと日本語が正しく発声できません。
    '
    var googlehome = require('./google-home-notifier');
    var language = 'ja'; // ここに日本語を表す ja を設定
    googlehome.device('Google Home', language);
    googlehome.ip('192.168.1.67', language);
    googlehome.notify('山本彩さんがツイートしました!', function(res) { console.log(res); });
    '
    注意点
    ・googlehome.deviceを指定しないでIPのみにすると、英語しか話せなくなります。
    ・IPアドレスがわからない場合はgooglehome.ipを削除して実行すると表示されます。
      Device "Google-Cast-Group-c6f5d923a43b4e6xxxxxxxx" at 192.168.1.67:42109
      Device "Google-Home-a206d11cb0a803b4f88f3xxxxxxxx" at 192.168.1.68:8009
      Device "Google-Home-7ec21d99cfcfb91c969b3xxxxxxxx" at 192.168.1.67:8009
    ・var googlehome = require('./google-home-notifier')の「./」はかならず必要です。
  10. 実行してみる
    コマンドプロンプトでtest.jsプログラムのあるディレクトリをカレントにします。
    c:¥Users¥yamamotosayaka>C:\データ\GoogleHome\google-home-notifier\trunk
    実行してみます。
    C:\データ\GoogleHome\google-home-notifier\trunk>test.js
    さてどうでしょう?運がよければスピーカーから発声します。
    しかし私の場合はダメでした。エラーがでます。
    11.実行時のエラー回避
    不足エラーが出た場合、内容に応じて以下のインストールを行って再度実行してみてください。
    >npm i castv2-client
    >npm install --unsafe-perm mdns
    >npm install google-tts-api
    >npm config set strict-ssl=false
  11. その他
    google-home-notifier\trunk\node_modules\google-tts-api\lib\api.js
    の中を日本語用に変更した方がよいかもしれない?
    // if (typeof accent !== 'undefined' && accent !== 'us' && accent !== 'uk') {
    if (typeof accent !== 'undefined' && accent !== 'us' && accent !== 'uk' && accent !== 'ja') {
    // tl: lang || 'en',
    tl: lang || 'ja',
    それとgoogle-home-notifier.jsも修正しておいた方が良い気がする。
    //var device = function(name, lang = 'en') {
    var device = function(name, lang = 'ja') {
    //var googlettsaccent = 'us';
    var googlettsaccent = 'ja';
  12. 修正したら再度実行してみてください。音声がでましたでしょうか。

最後に

説明がくちゃぐちゃになってしまいました。誤記など見つけましたら連絡いただけたら嬉しいです。

更新履歴

2018/01/03 いつでもテストできるようにVMplayerで環境Win7で再構築しました。その時に気がつた点を追加しました。