ちょっと前にGoogle Home Miniで好きな音楽を再生させるというのやっていたんですが、
それの派生で好きな言葉を喋らせようというやつです。
残念なことにGoogleHomeだと喋らせるというのはできないんですが、音声のキャストはかなり簡単にできるので、それを使って皆さん実装しているよう。
ってことでこんな感じで実装。
- VOICEVOX ENGINE
- catt
- Dufs
- n8n
cattはもともと使ってたキャスト用のCLIツール、これでGoogleHomeのIPアドレスに対してファイルを投げることが可能に。
VOICEVOX ENGINEはまぁ説明しなくてもわかるやつですね、昔Koeとかでも使ってたのでそれの流用でDockerを使用。
最後にDufs、これは不要だけどcattの(というよりはPyChromecast?)がローカルのファイルをうまく再生できないバグがあるっぽいので仕方なくネットから見えるところに音声ファイルを一時的に置いてあげるために使う感じ。
元々Dufsは個人的なファイル共有やPieFedやブログの画像置き場になっているのちょうどよかったという感じ。
これでn8nでイベント検知してそこから文章と音声を生成、cattで投げるって感じに。
ただ、ちょっとn8nで色々やっても良かったんだけど、面倒になったので一連の処理はPythonに任せることに途中で変更し、引数で文章とパラメータ一部を渡せば喋るスクリプトを作成。
結果としてこんな感じのフローに。

完成したコードはこちらに。
https://github.com/karasugawasu/voicecast/blob/main/voicecast.py
ちなみにコードは全部ChatGPTに書いてもらいました、最近それにハマってるのでね・・・w
あと結局PythonになったのでcattじゃなくてPyChromecast直接でもよかったなぁとか思ったり。
これでn8nでイベント検知→このコードを実行→しゃべる!ってのができるように。
まぁでも何も喋らせたいこと無いんですけどね・・・