2024はHome Assistant(以下HA)は突然(!)自然言語が使えるようになって、あまりの速さに私はついていけないのでした。Youtubeでは盛んにHAが音声入力や音声出力ができると謳っているのですが、いざ試そうとすると日本語はさっぱりサポートされていないのでした。うーん、悲しい。この点については別な記事にしようと思っているので、今回はローカルに日本語を喋らせようという話です。
最近Youtubeを見ていると「ずんだもん」の声を聞くことが多いです。ちょっと気になってずんだもんを調べたらVoievoxというオープンソースでローカルに処理ができるようです。
ならばこれをHAに組み込めば良いではないか、と早速色々と試してみました。このおかげでHAのaddonがなんなのかやっと理解しました。そうこうしているうちにひょっとして誰かが同じ事をしているのでは?と思いつき調べたところ、ありました!
これはVoicevoxエンジンを走らせるaddonで、HAとのTTSインターフェイスは以下のintegrationになります。
素晴らしい!早速試したところ、動きました。流行り(?)のずんだもんの声で「おはようなのだ」と言わせることに成功しました。ところが、あれれ?もう少し長い文章になるとしゃべってくれなくなります。調べた結果、どうやらHAがTTSの処理にタイムアウトを設定しているようで、長い文章は音声に変換するのに時間がかかり、打ち切られてしまってました。私のHAはSynologyのNAS上のVMで動かしているのですが、総じてNASのCPUは非力なものが大半で、そのせいで長い文章は時間がかかり、タイムアウトになってしまったのでした。
今までAlexaを使って色々とHAからのお知らせをしゃべらせていたのですが、いかんせんクラウドなので、例えば停電(UPSがある)やらインターネットの不調などでクラウドが使えない時に「停電なのだ」とおしゃべりができないのは問題だと思っていました。Voicevoxを使えばローカルに処理できるので、この問題を回避できると喜んでいたのに...
もう一つ問題があって、私が使っているSONOSのRoamにはVoicevox TTSで喋らせることができるのですが、純粋(?)なAlexa端末(Echoとか)にはVoicevoxで喋らせることができないのです。調べると任意のMP3ファイルをEchoなどに送ることはできるようなのですが、この場合でもクラウド経由になってしまうので、Voicevoxのローカルな処理が意味なくなってしまうのでした。うーん、Alexaを使ったTTSは手軽なんで重宝してたんですが、他のTTS(例えばGoogle)とはなぜか違う扱いなのです。まあRoamが使えれば良しとしましょう。
Voicevoxを使って長い文章を喋らせるには、1) 別な強力なCPUを持つホストでVoicevoxエンジンを走らせる、2) HAのタイムアウトを回避する方法を考える、という2つの方式が考えられます。1) は今のところそのような予定は近々ではないので却下。2) の方法でとりあえずは進めることとします。果たしてうまくいくでしょうか?