
Irodori-TTS v3 vs v4 を実測比較してみた
うちのPCには、キャラクターに喋らせる仕組みが常駐しています。以前の記事で「しゃべり始めるまで約1.2秒」と書いた、あれの土台です。
使っているのは Irodori-TTS(Aratako氏が公開している日本語音声合成モデル)。これに新しい版 v4 が出ました。
まず「何が変わったのか」を整理して、そのうえで実際に測ってみた記録です。
v4で何が変わったのか
公式の説明とモデルカードから、主な変更点はこの5つです。

いちばん効きそうなのは2番目です。日本語の文章理解に強いモデルを頭に載せ替えたので、漢字の読み間違いが減る、という話。
そしてもうひとつ、モデルカードには正直に「短い参照音声1本からの声の似せ方は v3 のほうが上」とも書いてあります。全面的に上位互換というわけではない。
では実際どうなのか。手元で測りました。
最初に出した数字は、実態より2〜3.5倍ふくらんでいました。
モデルを載せたまま6回合成して、初回を捨てて中央値を取る。
v3とv4、5つの声で実測

v4は約1.4倍遅い。モデルが1.5倍大きくなったので、順当ではあります。
量子化は、4方式試して4方式とも遅くなった
ここから「もっと速くできないか」の話です。
モデルを軽くする「量子化」という手があります。数値の精度を落として、読み込むデータ量を減らす方法です。v4はこれに公式対応しました。
期待して試した結果がこれです。

最後の int8-dynamic が一番期待していました。理屈の上では計算そのものが速くなるはずだったからです。蓋を開けたら4倍遅い。
ファイルサイズは3分の1になりました。ただ、それが要る場面ではありませんでした。
効いたのは、精度と関係ないところだった
唯一うまくいったのは、毎回やっていた同じ計算を、一度だけにしたことです。
参照する声のデータを、リクエストのたびに変換し直していました。同じファイルなのに、毎回です。事前に一度だけ変換してファイルに保存しておいたら、こうなりました。

同じ「速くする」でも、方向が逆でした。
speaker inversionでの学習と、記録保持では0.1秒だけSIの方がはやかったよ!
数字では測れなかったこと
ここまで全部、23文字の短い文で測っています。
実際に長い台詞を喋らせて聴いてみると、数字には出ない差がありました。しかし今回は掲載しません、応答を想定した長さで検証しました。
同じ台詞・同じ設定で、v3とv4を並べます。v4のほうがハキハキ喋って、何を言っているか分かりやすい。v3はゆったりしています。同じ台詞でも、v4のほうが数秒短く言い切ります。
v4のほうがハキハキ喋って、何を言っているか分かりやすい。v3はゆったりしています。同じ台詞でも、v4のほうが数秒短く言い切ります。
つまり、v4は何を言っているのかハッキリ伝わる!
ただ、v3の方が、声の余韻みたいなのが残って特徴的な感じがしてます。
余談ですが、v4は少ないステップ数のまま長い文を喋らせると、粗が出やすい傾向がありました。
結論
リアルタイムでのやりとりで使おうとすると、数字の上では v4 が0.26秒遅い。でも聞いてみると、v3より日本語がはっきりきこえて、短時間なら失敗しにくい。明るい声によってはv4のほうが圧倒的に合う。
ただ、しゃべりかたはv3の方が好き。特にちゃんとステップ使って生成した声は。
v4はなんか似た声の傾向になる感じがする。つまり好みでした。