前回の環境構築編で、日本語特化TTS「Irodori-TTS」をRyzen AI Max+ 395の内蔵GPUで動かすところまで書きました。今回はその前段と後段、つまり「なぜ乗り換えたのか」と「本当に乗り換えて正しかったのか」の話です。
きっかけは、AlibabaのQwen3-TTSで日本語を読ませたときの3つの不満でした。
- 漢字を読み間違える。「二〇二四年」が「にせん にいよねん」になる
- 抑揚が日本語っぽくない。意味は通るが、どこか翻訳調
- 感情がつかない。「怒って」と指示しても、怒っているというよりオドオドしている
そこで見つけたのがAratakoさんのIrodori-TTS。日本語特化で、参照音声とスタイル指示を同時に使え、絵文字で笑いやため息まで入る。触った初日の私の感想は「抑揚が自然、感情も全部出る、これで決まり」でした。
その感想は、半分間違っていました。どこが間違っていたのかを数字で確かめた記録です。
先に結論
| 観点 | 結論 | 根拠 |
|---|---|---|
| 漢字の読み | Irodoriが優位 | 仮名の誤り率 0.114 vs 0.155、聴き比べ 6勝2敗(16件は同じ) |
| 自然さ・抑揚 | 声質を揃えれば同等。差は「参照音声の質」で決まる | 聴き比べ 4勝9敗 → 参照を替えると 6勝8敗(統計的に差なし) |
| 感情の乗り | 参照音声の性質でほぼ決まる。captionを強めても絵文字を足しても補えない | 怒りの声の高さ: 参照次第で −0.9半音〜+8.0半音 |
| 話者の一貫性 | Qwenのボイスデザインは感情を付けると75%で別人になる | 12件中9件 |
| 速度(CPU) | Irodoriが約3倍速い | RTF 2.2〜2.6 vs 7.0(GPUの話は環境構築編) |
乗り換え自体は正解でした。ただし「感情が全部出る」は私の耳の思い込みで、出るかどうかは参照音声で決まっていた。ここが今回の一番の学びです。
比較の土俵
まず机上の比較。2つは思想が違います。
| Qwen3-TTS | Irodori-TTS v4.1-Small | |
|---|---|---|
| 開発 | Alibaba (Qwen) | Aratakoさん(個人) |
| ライセンス | Apache-2.0 | MIT |
| 規模 / 方式 | 0.6B / 1.7B、自己回帰 | 0.8B、Rectified Flow DiT(非自己回帰) |
| 言語 | 10言語 | 日本語のみ |
| 出力 | 24kHz | 48kHz |
| 声の作り方 | プリセット話者 / 文章で声を作る(ボイスデザイン)/ 参照音声+その書き起こし | 文章で声を作る / 参照音声(書き起こし不要)/ 学習した話者埋め込み |
| 声を固定したまま口調だけ変える | プリセット話者では可、クローンでは不可 | 参照音声 + captionを同時指定できる |
| 非言語音 | タグなし(「(笑)」は「ワラ」と読む) | 絵文字45種(🤭 笑い、😮💨 ため息、⏸️ 間 …) |
| 電子透かし | なし | SilentCipherで埋め込み(品質への影響は測って無し) |
生成した音声を今後の学習データに使いたい私には、両方とも許諾範囲です。Irodoriの透かしは来歴表示のためのもので、UTMOS(後述)で測っても品質差はありませんでした。
「参照音声+caption」が使えるのはIrodoriだけの利点で、キャラクターの声を保ったまま喜怒哀楽を出す、という私の用途にはこれが決定的でした。決定的だと思っていました。

数値化の方法
耳の印象だけで決めるのが嫌だったので、3観点をそれぞれ測れる形にしました。
| 観点 | 方法 |
|---|---|
| 漢字の読み | 読み分けが難しい24文(数字・日付・助数詞・同形異音)を両方で合成し、ひらがな出力のASR(wav2vec2)で書き起こして正解の仮名との誤り率(CER)を出す。Whisperでも書き起こし、両方が間違いと言った項目だけを「本当の誤読」扱い |
| 自然さ | UTMOS(自動MOS予測)を参考値に、決め手はブラインドA/B。同じ文を両エンジンで合成し、エンジン名を隠して「どちらが良いか」を自分で選ぶ |
| 感情 | 中立版に対して、声の高さ(F0)・高さの幅・音量・話速がどれだけ動いたかを測る。「動いた量」であって「正しく怒っているか」は耳で判定 |
ブラインドA/Bは、TTSアプリの中に「聴き比べ」タブとして作りました。

正直に書いておきます。評価者は私1人、票数は115。統計的に強い主張はできません。「私の耳」がどう判断したかを、思い込みを排して記録した、という位置づけです。
1. 漢字の読み: Irodoriが優位

仮名の誤り率はIrodori 0.114、Qwen 0.155。両方のASRが「間違い」と判定した項目はIrodori 7件、Qwen 16件。ブラインドA/Bでは24文中16文が「同じ」で、差が付いた8文はIrodori 6勝2敗でした。
Qwenの典型的な間違いを1つ。
ただしIrodoriも完璧ではなく、「大阪」「九時」などで揺れる文がありました。日本語特化でも読みは万能ではない、ただし相対的にはっきり優位、が結論です。
2. 自然さ: 私の耳は参照音声に騙されていた
ここから話がひねくれます。
触った初日の印象は「Irodoriのほうが抑揚が自然」でした。ところがブラインドA/Bの結果は4勝9敗でQwenが優勢。自動スコアUTMOSも2.44 vs 3.45で、Qwenが1ポイント高い。
なぜか。Irodoriのクローンに使っていた参照音声は、Irodori自身のボイスデザインで作った「落ち着いた三十代女性のナレーター、低めでゆっくり」という声(以下 narrator_f)でした。この参照音声そのもののUTMOSは3.38。クローン後に2.44まで落ちている。つまり差の大半は「エンジンの自然さ」ではなく「低くゆっくりな声をクローンしたときの劣化」でした。
確かめるために、Qwen側の出力音声をIrodoriの参照音声にして、同じ16文を作り直しました。声質を揃えるわけです。UTMOSは3.05まで回復し、ブラインドA/Bは6勝8敗、p=0.79。統計的には差がありません。
自然さは、エンジンの差より参照音声の差。初日の私は、Irodoriで最初に聞いた声の印象を「エンジンの実力」と取り違えていました。
3. 感情: 「全部出る」は錯覚だった
これが本題です。narrator_fを参照にして「とても怒った口調で、強く速く」とcaptionを付けたIrodoriの出力。初日は「怒ってるな」と思って聞いていました。ブラインドで聞くと2勝8敗(対Qwenプリセット)、1勝9敗、p=0.021(対Qwenボイスデザイン)。完敗です。
音響的にも一致していました。怒りで声の高さ(F0)は−0.9半音、つまり中立より下がっている。人間が怒ると声は上がって高さの幅が広がるので、動いていないどころか逆です。
仮説: 参照音声が感情と競合している
ここで私(人間側)が出した仮説が、「低くゆっくりなnarrator_fが、captionの要求する高くて速い怒りと矛盾して、参照側が勝っているのでは」でした。Claudeは「captionの強度(cfg_scale_caption)を上げれば効くはず」派でしたが、まず私の仮説から検証することにしました。

| Irodoriの条件 | 怒りでのF0変化 | 高さの幅 |
|---|---|---|
| narrator_f参照、caption強度3(既定) | −0.9半音 | 1.02倍 |
| narrator_f、caption強度5 | −1.9半音 | 0.80倍 |
| narrator_f、強度5 + 絵文字 😠💥 | +2.2半音 | 1.02倍 |
| Irodoriでデザインした「標準的な声」を参照 | −0.1半音 | 1.01倍 |
| Qwenの声を参照 | +8.0半音 | 2.61倍 |
| (参考)Qwen ボイスデザイン | +9.2半音 | 3.62倍 |
captionを強めても、絵文字を足しても、ほぼ動きません。参照音声を替えた瞬間に+8半音。仮説は当たっていました。感情の乗りやすさは、指示の強さではなく参照音声の性質が上限を決めていた。
この参照でブラインドA/Bを追加したところ、感情はQwenプリセットに対して6勝5敗(怒りは3勝0敗)、Qwenボイスデザインに対しては2勝5敗・5件が「同じ」。差は消えました。

Qwenボイスデザインの「怒り」は別人になる
ではQwenのボイスデザイン(文章で声を作る方式)が最強か。ここに落とし穴がありました。「中立版と感情版が同じ人物に聞こえるか」を12件ずつ判定すると、Qwenボイスデザインは9件が「別人」。感情は強いが声が変わる。キャラクターの声を保ったまま感情を付けたい用途では使えません。
声を保ちながら感情を出せる条件同士(Qwenプリセット vs Irodori+良い参照)では、引き分け。ここまでが本編です。
4. 追試: ではIrodoriだけで「感情が乗る参照声」を作れるか
感情が乗った唯一の参照は、Qwenが作った声でした。Irodori自身のボイスデザインで同じような声を作れれば話は簡単です。captionを6種類(明るく元気な二十代女性、女性アナウンサー、明るい男性……)×3シードで18本デザインし、それぞれを参照にして怒り・喜びを生成し、F0の動きを測りました。
全滅でした。「高めで張りがある」「少女」といったcaptionはF0 440〜520Hzの甲高い声になり、音質スコアが1.3〜1.7まで落ちる。音質の良かった男性声(UTMOS 3.38)でも、怒りでの変化は+0.4半音。
音量やサンプルレートの違いかも、と疑って、Qwenの参照を大音量にしたり、narrator_fを24kHz・小音量にしたりもしましたが、結果は不変。声そのものの性質です。しかもピッチや話速、抑揚の幅といった静的な特徴では予測できない(抑揚幅17半音の声でも乗らない)。
仮説としては「Irodoriが自分で生成した音声を参照にすると、プロソディの癖まで忠実に再現されてcaptionの余地が残らないが、外部の声は音色だけが写るのでcaptionが効く」を考えていますが、実録音で確かめていないので断定はしません。
5. 副産物: 参照声の診断機能
「静的な特徴では予測できない、実際に生成しないと分からない」なら、実際に生成して測る機能を付ければいい。TTSアプリに参照声の診断を追加しました。

GPUで20〜30秒。参照音声を登録する前に「この声で感情は出るか」が分かります。
絵文字は本当に効くのか(おまけ)
Irodoriの絵文字制御は、初日の印象どおり効きました。ただしここも思い込みを排するため、「擬音だけ」「絵文字だけ」「両方」で切り分けています。
一方、📞(電話越し)はcaptionに「低め・穏やか」のようなトーン指定があると効きません。captionと絵文字が矛盾すると絵文字が負ける。感情が参照音声に負けるのと同じ構図で、Irodoriは「声の指定 > 話し方の指定 > 効果」の優先順位で動いているように見えます。
人間がやったこと、Claudeがやったこと
| 作業 | 人間(私) | Claude Code |
|---|---|---|
| 「定量的に比べられないか」「3観点で」の要求 | ○ | 方法の設計 |
| 評価セット(24文+16文+3文×5感情)、ASR/UTMOS/音響指標の実装 | ○ | |
| ブラインド聴き比べUIの実装 | ○ | |
| 115票の聴き比べ、36件の話者判定 | ○ | |
| 「参照音声が感情と競合している」仮説 | ○ | 「caption強度で効くはず」派だった |
| 追試5条件の生成と計測、反証の確認 | ○ | |
| 「(笑)は普通にワラと読まれていた」等、聴いた事実の訂正 | ○ | 推測が外れて訂正 |
| 参照声の診断機能 | 要望 | 実装 |
耳と仮説は人間、手数と計測はClaude。今回はClaudeの初期見立て(caption強度で補える)が外れ、私の仮説(参照が競合)が当たりました。逆のケースも山ほどあるので、どちらが偉いという話ではなく、「思い込みを数字で確かめる装置を素早く作れる」ことが、この組み合わせの価値だと思っています。
正直、気になっていること
- n=1:評価者が私1人、115票。傾向は見えますが、統計的に強い主張はしていません
- UTMOSは参考値:英語中心で学習されたモデルで、日本語のスコアは目安。アクセントの正誤は測れません
- 参照は3〜4種:「参照音声で決まる」はその範囲での結果。実録音の参照は試していません(私の用途は合成音声同士なので)
- Qwenへの指示は中国語:日本語指示より効いたので採用しましたが、Qwen側に不利な条件が残っている可能性はあります
まとめ
- 読みはIrodori優位。日付・助数詞で差が出る
- 自然さはエンジンより参照音声の質。低くゆっくりな声をクローンすると1ポイント落ちる
- 感情は参照音声の性質が上限を決める。captionや絵文字では補えない。声を替えると+8半音
- Qwenのボイスデザインは感情は強いが75%で別人。声を保ちたいなら選べない
- Irodoriの確かな優位は、読み・速度・参照+caption同時指定・絵文字。自分の耳の初日の印象は、半分は参照音声への思い込みだった
ローカルTTSを試す方は、モデルの比較記事を読む前に、まず同じ参照音声で聞き比べてみてはいかがでしょうか。私はそれをしていなかったので、半日分の確信を数字に覆されました。
耳は鍛えるより、疑うほうが早い。

コメント