google home miniにしゃべらせる。


流れ

  • Google Home Miniを特定する
  • テキストから音声ファイルを生成する
  • Google Home Miniをchromecastデバイスとして捉え、音声ファイルをキャストする

Google Home Miniを特定する

2パターンある。ただし、前提として、Google HomeへアクセスできるLAN内の端末であること。
自分の環境では、有線LANと無線LANを両方とも有効化した状態で確認できた。

  • Google Homeアプリで設定から端末のipを特定する。 要固定IP化。→DHCPでMACアドレスとIPで固定IPにする。
  • mDNSで端末を動的に特定して、アドレスを都度得る。
    Google Home 端末を操作するなら、前者の方が現状、楽。

簡易的に端末までの経路が確立されているかを確認する方法

いずれもmDNSでネットワーク内の端末を列挙する方法

Windowsなら、bonjourbrowserで検索

bonjourbrowserで検索できる。

ubuntuなら、Avahi

avahi-browse -alrで一覧出来た。

Chrome拡張のMDNS Browser

私の環境では捕捉出来なかった。

テキストから音声ファイルを生成する

Google Home Miniをchromecastとして、へ音声ファイルをキャストする

castv2-clientを使う。

この方の実装方法が良いかと思われる。
Google Homeに話をさせる
ただし、google-tts-apiは、非公式な使い方1をしているので、上のtext-to-speechを正しく利用したもののほうがよいかと。

cstv2-clientにて、デフォルトのメディアレシーバーのインタフェースを得ているように見える。

google-home-notifierはおすすめしない

Google Home端末のip特定からメッセージ送信までワンパッケージになっているgoogle-home-notifierがあるが、
ローカル環境へのライブラリインストールや依存ライブラリのバージョン修正、依存ライブラリの実装修正などの手作業が多いため、おすすめしない。
こちらも、内部でgoogle-tts-apiを使っているが、非公式な使い方1をしていると思われる。

GoogleのCloud API

テキストを送信して、話させるためのCloud APIはわからなかった。
ユーザの発話をトリガーにするか、ルーティーンでの時刻起動をトリガーにする方法はあったが。
自分としては、異常検知のような使い方をしたかったため、上記の使い方を模索していた。


  1. グーグル翻訳のフロントサイトにクエリ付きURLを投げて翻訳時の発声ファイルを取得しているように見える。