Skip to content
Published on

tts-bench: 品質が主観的なとき、ローカル TTS をどう比べるか

シェア
Authors

はじめに — TTS の比較が難しい理由

今週 GeekNews で話題になった tts-bench は、開発者 5uck1ess によるローカルベンチマークです。手元のハードウェアで複数の TTS(text-to-speech)モデルを直接比較できます。ツールの前に、まず問題を押さえます。音声合成はベンチマークが特に難しい対象です。「良い」が一つの軸ではないからです。声が美しくても発音を潰したり単語を落としたりしますし、はっきり聞き取れても平板で機械的なこともあり、両方良くてもリアルタイムのエージェントに使うには遅すぎることもあります。自然さ・明瞭さ・速度は互いに違う方向へ引っ張り、前の二つは主観的です。音声認識の WER のような明確な正解値がありません。著者もはっきり述べています。「品質は主観的なので、本当の基準はあなたの耳だ」。このベンチが読む価値を持つのは、その事実を覆い隠さず、むしろその上に設計されているからです。

プロジェクトの輪郭を一か所にまとめます。

  • 3台の環境で55モデル(Windows + RTX 5090、Linux + RTX 3090、Apple M4)
  • 事前定義ボイスのエンジン16個 + ゼロショットのクローンモデル39個
  • CPU・CUDA・Apple Silicon(MPS)で動作
  • ベンチのコードは MIT、各モデルはそれぞれのライセンスに従う

tts-bench が実際に測るもの

ベンチは三つのレンズで構成されます。

速度(Speed) は客観的で公開できる部分です。コールド/ウォームの TTFA(最初の音声までの時間)、RTF(リアルタイム係数、高いほどリアルタイムより速い)、メモリを、CPU・CUDA・Apple Silicon で測定します。2026年6月時点の先頭を見ると雰囲気が伝わります。

  • CPU(Ryzen 9 9950X3D): Piper — ウォーム TTFA 107ms、リアルタイム59倍
  • CUDA(RTX 5090): Kokoro — ウォーム TTFA 67ms、104倍
  • Apple M4(16GB): Piper — ウォーム TTFA 208ms、32倍

再現可能な測定値であり、ベンチが正面から順位付けする唯一の領域です。

試聴(Listen) はギャラリーです。すべてのモデルをすべてのプロンプトについて、既定の声と音声クローン(cloning)の両方で聞かせ、それぞれにインラインの <audio> プレーヤーが付いて耳で判断できます。サンプルは環境に依存しません — 最も高品質な環境で一度だけ生成します — 音色やアーティファクトがどの機械でレンダリングされたかに左右されるべきではないからです。README の言葉どおり、品質とアーティファクトは5秒で分かります。表では示せないものです。

スコア(Scores) はモデルごとの客観的な品質の代理指標です。自然さは UTMOS、明瞭さは WER、クローン忠実度は SIM で、ベンチのプロンプトに対し seed-tts-eval 方式の ASR と話者照合で計算します。モデル一覧は軽量な事前定義ボイスのエンジン(82M の Kokoro、約15M の Piper)から、ゼロショットのクローン系(F5-TTS、Coqui XTTS-v2、ChatterBox ほか多数)まで及び、二つのグループを既定/クローンのトグルで切り替えます。

正直な部分 — 数字が言えることと言えないこと

tts-bench で最も興味深いのは、何を主張しないかです。「最も良く聞こえる」という単一の順位はありません。NAQ という客観的な品質スコアを試作しましたが取り下げました。著者いわく「主観的な順位を十分に追えず公開できなかった」ため、別途再設計中です。ベンチは速度だけを順位付けし、品質は試聴レンズと、リアルタイムの人間選好 Elo リーダーボードにつながるブラインド A/B 投票アリーナに委ねます。UTMOS・WER・SIM は判定ではなく「客観的なバックストップ」と表現されます。

この慎重さがなぜ妥当かは、クローンの結果に表れます。32のクローンモデルのうち28に対する397件のブラインド投票で、声の一致の上位3モデルはこうでした。

  • OmniVoice — 声の一致で1位(24-1-3)、ただし「単語を潰したり落としたりしうる」
  • Echo-TTS — 僅差で首位に並ぶ(21-1-6)、クリーンな44.1kHz
  • IndexTTS-2 — 3位(16-2-5)、アクセントを維持

落とし穴は最初の行にあります。音色重視の A/B 投票は潰れた単語を罰しません。つまりリファレンスに最も似て聞こえるモデルが、同時に正しい単語を言う点では負けうるということで、これこそ客観的な WER スコアが捉えようとする隙間です。数字を一つだけ見れば、間違ったモデルを選ぶことになります。

もう一つ、頭に入れておくべき注意点があります。ベンチは公平性のため、すべてのモデルに同じ素のプロンプトを与えます。そのため感情タグ・声の記述・スタイルのノブといった表現機能は、どのスコアにも反映されません。あなたの用途がまさにそうした機能に頼るなら、リーダーボードは最も重要なことについて沈黙しています。

ローカルで動かし、自分の用途で評価する

セットアップには uv と Python 3.11 が必要で、10〜15分ほどかかります。フルセットは重いです。

  • モデルごとの仮想環境 約39GB(リポジトリ内)
  • モデルの重み 約125GB(Hugging Face キャッシュ、リポジトリではない)
  • 合計で約165GB

ただ55個すべてを入れる想定ではありません。欲しいものだけ渡します。./install.sh kokoro piper miso(Windows は .ps1)、そして bench.py は仮想環境があるモデルだけを走らせます。手早く感触を見るには python speak.py kokoro、一発の A/B 比較には python compare.py "文章" があります。

この部分インストールのやり方こそ要点です。グローバルなリーダーボードを信じる代わりにローカルで動かす理由は、TTS の品質が用途ごとに変わるからです。あなたのプロンプト、目標の声、言語、遅延の予算、ハードウェアに依存します。きれいな英文で Elo 1位のモデルが、あなたの分野の専門用語や特定のクローン参照では崩れることがあります。おなじみの「自分のデータで評価せよ」という原則を、道具に落とし込んだものです。ベンチはハーネスを手渡し、正直に、自分の耳で聞けと言います。

おわりに

tts-bench の本当の美点は、客観性がどこで終わるかについての節度です。速度は測って順位を付け、品質は見せて判断は委ね、クローンの選好はブラインド投票で集めつつ明瞭さではなく選好だと名付けます。主観的なものをベンチマークする、正直なやり方です。

実践的な教訓は小さく具体的です。スコアを一つ見て勝者を決めないでください。実際に検討している二つ三つのモデルだけを入れ、配備するその機械で、あなたのテキストと参照の声を与えてみて、耳で決める。WER と RTF は答えではなくバックストップとして置いておきます。

参考資料