【AI】Irodori-TTS v4.1の日本語読みと声クローンをFish Audioと比べた【常用漢字100文】


こんにちは、フリーランスエンジニアのmohです。この記事はほとんどAIが書いたものを、私が加筆修正しています。検証不十分な部分もあるかと思いますが、ご容赦ください。ご指摘等ございましたら、Github issueか、Xでお願いいたします。

日本語で読み間違いが少なく、自分の声をクローンできる TTS を探しています。IndexTTS-2.5 は声の似方で Fish Audio に届かず、Gemini 3.8 Flash TTS は別の声になりました。今回は日本語専用のオープンモデル Irodori-TTS v4.1-Small (MIT ライセンス) を、普段使っている Fish Audio s2.1-pro と同じ参照音声・同じ文で比べました。Fish より日本語の読みは良いだろうと見当をつけていたので、読みの正確さを本題にしています。

結論

  • 読みは Irodori のほうが正確でした。常用漢字の読みを問う 100 文で、対象の漢字を正しく読めたのは Irodori 98 文、Fish 92 文です。Irodori だけ正しかった文が 6、Fish だけ正しかった文は 0 でした
  • 自分で聴いた感じでは、音質はほぼ同じで、読み間違いは Irodori のほうが少ないという差でした
  • 数字・時刻・金額・英字略語の 10 文は Irodori 9 文、Fish 7 文。Irodori は「14時30分」の 14 時を崩しました
  • 声の似方の数値 (参照音声との類似度) は、同じ文 5 回で Irodori 0.908、Fish 0.913 とほぼ並びました。IndexTTS-2.5 は同じ条件で 0.848 でした
  • Irodori は seed を指定すると、同じ入力から同じ音声がバイト単位で出ます。Fish の API には seed がありません
  • Irodori には読みを指定する手段がありません。誤読が出たときに直す道具が要るなら、Fish か IndexTTS-2.5 のほうが手が打てます

試した条件

  • Irodori-TTS v4.1-Small: RunPod の RTX 4090 で動かしました。設定はモデルカードの既定 (fp32、40 ステップ)。参照音声を 1 本渡し、参照の書き起こしは渡しません (Irodori は使わない)
  • Fish Audio s2.1-pro: API の zero-shot clone で、参照音声と書き起こしを毎回送りました
  • 参照音声: 08-26 の記事から使っている自分の声 10 秒。声の似方だけは、09-24 の記事の 26 秒の録音でも試しました。Irodori のモデルカードは参照を 30 秒以上にするよう勧めているので、10 秒は Irodori に不利な条件です
  • 読みの文: Joyo Kanji Yomi Benchmark: Parakeet Edition (以下 JKYB-Parakeet。常用漢字の読みのベンチマーク、13,536 文。元のベンチマークは SB Intuitions の Sarashina2.2-TTS の論文) から無作為に選んだ 100 文。各文に判定対象の漢字と正解の読みが付いています。ほかに数字・英字の自作 10 文と、08-27 で使った誤読しやすい 5 文
  • 声の似方: 「本日は晴天なり。マイクのテスト中です。この音声は、ゼロショット音声合成のサンプルです。」を 5 回生成し、話者の特徴量 (resemblyzer) で参照音声との類似度を測りました。08-26・08-27 と同じ文・同じ指標です

読みの判定は次の順で行いました。

  1. 生成した音声を gpt-4o-transcribe に渡し、聞こえたとおりの音をカタカナだけで書き起こさせる。普通の書き起こしは誤読を正しい漢字に直してしまうため
  2. JKYB-Parakeet 公式の採点ツールで、対象の漢字の部分が正解の読みと一致したかを判定する
  3. 不正解になった文はもう一度書き起こし、書き起こし側の誤りの疑いを確かめる

計測コード・全文の書き起こし・判定結果は blog-examples にあります。

読みの結果

文IrodoriFish
常用漢字 100 文98/10092/100
数字・英字 10 文9/107/10

100 文で 6 対 0 の偏りは、同じ文で 2 モデルを比べる検定 (McNemar の正確検定) で p=0.031 でした。たまたまの差とは言いにくい大きさです。数字・英字は 10 文しかないので、傾向として見てください。

不正解の内訳です。

文 (対象の語)IrodoriFish
保留正解ホリュ
芝生正解シタフ
数寄屋正解カズヨヤ
趣正解オモモキ
水質汚染正解オウセン
石碑正解碑が抜ける
蛇の目傘ヘビノメガサヘビノメガサ
天地の道テンチテンチ
14時30分チュウヨウジ正解
API正解エーティーアイ
1,000万円正解センバンエン
10分正解ジュウブン

Fish の誤りは「シタフ」「カズヨヤ」のように、漢字を別の読みで当てるものが目立ちます。「天地」のテンチは辞書上は許される読みで、正解に含めると両者 1 文ずつ増えます。Fish の「汚染」と「1,000万円」は、2 回目の書き起こしでは正しい読みになったので、書き起こし側の誤りかもしれません。この 2 文を除いても順位は変わりません。

08-27 の誤読しやすい 5 文では、Irodori は「東雲」をシノノメ、「人気のない道」をヒトケと読み、Fish はヒガシクモ、ニンキと読みました。

聴き比べ

読みの差が出た文を中心に 5 組載せます。上が Irodori、下が Fish です。

声の似方を測った文:

「明日の朝、東雲駅で待ち合わせましょう。」(Fish がヒガシクモ):

「伝統的な数寄屋建築の美しさに感動した。」(Fish がカズヨヤ):

「会議は14時30分に始まります。」(Irodori がチュウヨウジ):

「新しいAPIを公開しました。」(Fish がエーティーアイ):

声の似方

参照音声IrodoriFish
10 秒 (参照との類似度、5 回)0.9079 ± 0.00450.9131 ± 0.0028
26 秒 (参照との類似度、5 回)0.8956 ± 0.01400.9263 ± 0.0103
10 秒 (5 本同士の類似度、10 組)0.9575 ± 0.00740.9363 ± 0.0116

10 秒の参照では、参照への近さは Fish がわずかに上で、5 回の生成同士のばらつきは Irodori のほうが小さく出ました。聴いた感じの音質はほぼ同じです。

モデルカードの勧めに近い 26 秒の参照にしても、Irodori の似方は上がりませんでした。26 秒の録音は mp3 から戻したもので劣化があり、続けて話した 1 本の録音です。Irodori の README には、長い参照は同じ話者の短いクリップをつないだ形で学習・評価していると書かれています。どちらが効いたのかは今回切り分けていません。30 秒以上の参照を用意するなら、短いクリップをつなぐ形で試すのがよさそうです。

seed と速度

Irodori は生成の設定に seed があり、seed=42 で 2 回生成した音声のハッシュ (MD5) が一致しました。10 秒・26 秒どちらの参照でも同じです。IndexTTS-2.5 では乱数を外から固定する必要がありましたが、Irodori は引数で済みます。尺まで固定したい動画の用途で効きます。

RTX 4090 での生成は、音声 1 秒あたり 0.11〜0.40 秒 (RTF、平均 0.24) でした。8〜11 秒の長い文で 0.11 前後、2〜5 秒の短い文で 0.15〜0.40 です。モデルの読み込みは 13.6 秒。計測一式は Pod 1 台・約 6 分・約 $0.075 で終わりました。

3 モデルの比較

声の似方の行は、同じ参照 (10 秒)・同じ文・同じ指標の値です。IndexTTS-2.5 は別の日・別の Pod・bf16 で測っています。

項目Irodori-TTS v4.1-SmallFish Audio s2.1-proIndexTTS-2.5 (08-27)
常用漢字 100 文98/10092/100未計測
東雲シノノメヒガシクモしのの系 (別の書き起こし)
参照との類似度0.9079 ± 0.00450.9131 ± 0.00280.8477 ± 0.0134
5 本同士の類似度0.9575 ± 0.00740.9363 ± 0.01160.9570 ± 0.0072
seed 固定引数で MD5 一致不可乱数の外部固定で MD5 一致
読み指定なしphoneme タグ (アクセント指定可)かな指定
RTF (RTX 4090)0.11〜0.40API 応答 0.32〜0.59 (通信込み)0.53〜0.65
実行形態セルフホストクラウド APIセルフホスト

選び方

  • 読み間違いを減らしたいなら Irodori。読み指定なしでも、今回の 100 文では Fish より誤りが少なく出ました
  • 誤読が出たときに直す必要があるなら Fish。Irodori には読みを指定する手段がないので、文を書き換えるしかありません
  • 同じ入力から同じ音声を出したいなら Irodori。seed の引数で固定できます
  • GPU を用意したくないなら Fish。Irodori はセルフホストが前提です

指標の限界

  • 読みの判定は gpt-4o-transcribe のカタカナ書き起こしに頼っています。同じ音声でも書き起こしが変わる例が出ました
  • 各文 1 回の生成です。同じ文を何度も生成したときに読みが変わるかは測っていません
  • 100 文なので、1 文の差が 1 ポイントです
  • 読みの判定は公式手順と別の書き起こしモデルを使ったので、モデルカードの数値とは比べられません
  • 参照音声は Irodori の推奨より短い 10 秒です
  • 類似度は 1 つの指標で、聴いた感じの似方とは別物です。イントネーションは数値で測っていません

参考