IrohaStudios リリース記事
Iroha

Iroha の7つの制御を
どう実装したか

2026年10月29日の技術ノート。聴取評価は10月30日の集計に更新しました。

感情の聴き比べ

[happy]

あっ、つい話し込んじゃってたわね。

あっ、つい話し込んじゃってたわね。
Fish S2-Pro

文全体の感情

データ

同じセリフとを固定し、で喜び・怒り・悲しみ・驚きの音声を生成します。感情、読み上げ内容、声質、品質の条件を満たす候補を残します。

学習

タグ付きテキストと参照音声を入力、選別した音声を正解としてを行います。内容と声質を固定することで、セリフの意味から感情を推測するのではなく、タグに対応する話し方を学習させます。

推論

API は joy を [happy] に、他の感情も対応するタグに変換し、同じ生成モデルに渡します。none と neutral はタグを追加しません。文頭のタグは文全体の設定より優先されます。

感情ごとに成功率は異なります。リリース評価で喜びの認識精度は 76.67% で、他の3クラスを下回りました。

学習方法

Iroha は Fish S2-Pro をベースにしています。Slow model と fast model が順にを予測し、デコーダーが音声に復元します。主な変更点は、対応付けたデータ、LoRA 微調整、方策最適化です。

出力:44.1 kHz
Aaテキスト+参照音声内容と声質を指定
→
≈各フレームの意味コードを予測
→
≋9つの残差コードを補完
→
▂▅▇▃▆音声デコーダーコードを音声に復元
01

ペアデータ

喜びのタグには喜びの音声、[sigh] には実際のため息を対応させます。この組を作成・選別して学習信号を明確にします。同じ録音のラベルだけを変えても、新しい表現は学べません。

02

教師あり微調整

で、入力から目標音声を予測させます。両方の transformer にの学習パラメータを追加し、学習後に重みへ統合します。感情・発声イベント・ささやきでは、それぞれ異なる方法でお手本を作ります。

03

方策最適化

では、同じ要求から8候補を生成し、感情・テキストの正確さ・声質の類似度・品質を評価します。良い候補の生成確率を高め、で学習済みの挙動からの逸脱を抑えます。更新するのは slow model の MLP のみで、fast model は SFT 後の重みを維持します。

学習設定

SFT:両 transformer の attention / MLP に LoRA を適用。rank 32、alpha 16、2,700 ステップの後に 1,600 ステップ追加学習。方策最適化:slow MLP のみに rsLoRA、rank 16、alpha 64。1回あたり12要求・各8候補、更新1回、KL 重み 0.02。読みの制御は入力前、ささやき guidance と強度 steering は推論時に行います。

制御機能

感情の転換

文中のタグで、その後の区間の感情を指定します。

[happy] やった、ついに完成したよ!
[sad] …でも、これを見せたかった人は、もういないんだ。

ついに完成した!……でも、これを見せたかった人は、もういない。

同一話者の音声を連結

同じ話者の異なる感情の2音声を選び、タグ付きテキストと音声コードを順に連結します。境界を記録し、同じ話者の別の録音を参照に使います。最終データには一般的な転換 5,000 件と、非中性感情間の明確な転換 4,000 件が含まれます。

区間ごとの報酬

学習時は各区間の感情を別々に検査し、境界の無音が 0.6 秒を超えるとペナルティを与えます。推論時はタグ付きテキスト全体から1本の音声を生成します。学習用の連結は、この連続出力を教えるためのものです。

未評価:現行リリースの完全な区間別評価。音声全体が「喜び」と判定されても、前半が喜び、後半が悲しみになっているとは限りません。

ささやき

[whisper] タグ、またはささやきの参照音声を使います。

[whisper] …私の声…どうして、こんな声に………私の声…どうして、こんな声に……

2種類の入力

1,652 件のささやき音声に、それぞれ2種類の入力を用意します。①通常の参照音声+[whisper]、②ささやきの参照音声+タグなしテキスト。どちらも同じ目標音声を予測し、参照の発声方法に従う能力をタグによる制御へつなげます。

Guidance

各ステップで、ささやきタグあり・なしの予測を計算し、で差を強調します。デフォルトの強度はささやき時に 1.5、それ以外は0。2経路は同じ重みを使い、生成履歴は別々に保持します。

トレードオフ:ささやきは出やすくなりますが、声質の類似度と予測品質が低下することがあります。再生音量を下げる操作ではなく、すべての要求で安定して成功するわけでもありません。

強度制御 実験機能

方向の抽出

感情ごとに学習側の500入力を使い、タグあり・なしのを記録します。差を平均し、推論時に加える方向を求めます。

活性値の制御

第20・22層で係数を掛けた方向を加え、元のに戻します。4段階の係数は −0.06、−0.03、0、0.045。0は通常の感情タグ付き生成です。

制限:0以外の強度は文全体の感情設定のみ対応し、文中の感情・イベントタグとは併用できません。72文脈のうち、4段階すべてが順序通りになったのは 70.83%。強度を上げると声質が変わる場合もあり、実験機能として扱っています。

怒りの強さ默认
最弱弱め標準強め

こんなことをして、良心が痛まないのか!

声質の再現

参照音声
生成音声

参照:えっと…こちらのお客様は?
生成:あっ、つい話し込んじゃってたわね。

参照条件

参照音声を音声コードに変換し、書き起こしと一緒にプロンプトへ入れます。新しいセリフに対応する話者マーカーを付け、同じ声を継続させます。プリセット音声は参照録音の選択であり、モデルの重みは共通です。

声質の保持

SFT では目標音声の参照条件を保持し、通常のタグなし音声も混ぜます。方策学習ではを報酬と選別条件に使います。ささやきは声の特徴が変わるため、類似度の閾値を別に扱います。

参照音声の準備:書き起こしを録音内容と一致させます。誤った書き起こしへの頑健性は未測定です。強い感情では声質類似度が低下することもあります。

読みの制御

水神[すいじん]様すいじん様

水神[すいじん]さんから、素敵なお祝いの手紙が届きました!

OmniVoice · 読み制御のプレビュー

テキスト前処理

パーサーは角括弧の直前に連続する漢字を、括弧内の仮名に置換します。この例では、モデルへ渡すテキストはすでに「すいじん様」です。その後の生成処理は変えません。

読みタグの実験

括弧内の読みを学習する候補は基準を満たさず、ささやきとため息の性能も低下しました。明示的な置換は264出力で読みの正解率 94.70%、同じ前処理を使った元モデルも 93.90% に達しました。主な改善は入力を明確にした効果です。

対象範囲:仮名による読みの指定。自動分かち書きや、日本語の高低アクセントの制御は行いません。

評価結果

総合比較

私たちの実験はすべて Fish S2 Pro をベースにしています。
6音色 × 20文 × 喜び・怒り・悲しみ・驚きの計480音声です。全モデルで同じ参照音声と採点方法を使用しました。感情の正解率は、emo2vec large(オープンソースで、私たちの学習には未使用)と EmoRuler(私たちが fine-tune した emo2vec large)の2つの感情認識モデルで判定しています。
Fish Audio Drama 3 にも同じ角括弧の感情タグを使いました(括弧内の内容は自然言語の指示として扱われます)。720音声のうち7件は文の途中で止まり、上限の95秒まで無音が続きましたが、そのまま採点しました。
Qwen3-TTS、OmniVoice、Ming 3.0 TTS などの有名な多言語 TTS も試しました。中国語と英語では良い結果でしたが、日本語を聴くと発音の誤りが多く、自然さも十分ではなかったため、この表では日本語で比較的良い結果だった TTS を比較しています。

モデル感情あり(喜び・怒り・悲しみ・驚き)感情なし
正解率emo2vec large正解率EmoRuler喜び / 怒り / 悲しみ / 驚き %EmoRuler声質の類似度speaker similarity音質UTMOS文字誤り率声質の類似度speaker similarity音質UTMOS文字誤り率
Fish S2 Pro オリジナル学習前のベースモデル17.9%6.0%6 / 0 / 9 / 90.6853.515.6%0.6843.576.2%
OursFish S2 Pro に SFT + 強化学習85.6%93.3%91 / 94 / 95 / 930.6363.555.8%0.6943.784.8%
Fish Audio Drama 3Fish の最新オープンソース · 35B MoE(3B 活性化)32.1%21.2%32 / 14 / 21 / 180.6283.267.0%0.6533.439.3%
IndexTTS-2.5オープンソース · bilibili40.2%30.6%65 / 18 / 19 / 200.6122.266.9%0.7142.916.0%
Irodori-TTS · テキスト記述オープンソース · Aratako30.8%20.6%34 / 23 / 8 / 170.6493.036.0%0.6623.095.7%
Irodori-TTS · emojiオープンソース · Aratako20.0%9.8%17 / 2 / 8 / 120.6513.036.5%0.6623.095.7%
Chatterboxオープンソース · Resembleタグで感情を指定できません0.6753.346.5%

主観聴取テスト MOS(日本語)

15組 × 5種類の感情 = 75文を選び、各参加者が75文すべてを聴きました。

モデル 自然さ ↑ 感情の一致度 ↑ 声質の類似度 ↑ 総合点 ↑ 首位獲得率 ↑
Ours 3.84 4.20 3.52 3.85 31.7%
Fish Audio Drama 3 3.97 3.64 3.45 3.69 23.2%
Irodori-TTS v4 large · テキスト記述 3.61 3.95 3.32 3.63 28.1%
Fish S2 Pro オリジナル 3.75 2.93 3.72 3.47 12.1%
IndexTTS-2.5 2.35 3.49 2.81 2.88 4.9%

3項目はいずれも人による5段階評価(MOS)で、総合点は3項目の単純平均です。首位獲得率は「参加者・文」の組み合わせごとに5モデルを比較し、同点首位の場合は均等に配分します。

ペアごとの勝率

総合点で比較した Ours の勝率です。同点は0.5勝として数えます。

比較 Ours の勝率 ↑
vs. Fish S2 Pro オリジナル 69.3%
vs. Fish Audio Drama 3 58.0%
vs. Irodori-TTS v4 large · テキスト記述 58.7%
vs. IndexTTS-2.5 82.7%

発声イベント

リリース評価では、ため息は56/60件、泣き声は16/60件で検出されました。笑い声はローカル判定で26/60件、外部判定で44/59件。判定基準の違い自体も検証が必要です。

ささやき guidance

同条件のささやき60要求で、guidance により検出数は4件から32件へ増加。一方、SIM は 0.587 から 0.494、UTMOS は 2.80 から 1.78 に低下しました。強度制御にも同様の声質とのトレードオフがあります。

失敗からの知見

01

非ペアデータの拡大効果は限定的

+

初期の非ペアデータ拡大では、感情認識精度の改善は限定的でした。内容と声質を固定したペアデータにより、条件と音声の対応が明確になりました。ただし実験間で他の条件も変わっており、改善すべてを1要因には帰属できません。

02

強弱ラベルには音響的な差が必要

+

同じ音声に強弱ラベルだけを付け直しても、音響的な違いはありません。隠れ状態による制御の傾向は改善しましたが、880出力の厳密な検証では、正方向の設定で全品質基準を満たすものはありませんでした。

03

感情報酬による余計な笑い声

+

感情報酬の最適化では、認識されやすい表現に偏ることがあります。ある検査では、喜びのサンプルの 11.7% に要求していない笑い声が含まれていました。報酬の上昇は、要求に合った演技の改善とは限りません。

04

通常の品質基準ではささやきを誤除外

+

ささやきは音響的な特徴が変わります。通常音声の類似度閾値では有効なサンプルを除外し、検出率を無理に上げると品質が下がる場合があります。検出器の性能が良くても、生成方策がそのイベントを学べるとは限りません。

05

読みの明示的な置換が有効

+

264件の読み評価で、明示的な仮名により正解率は 39.40% から 94.70% に向上しました。同じ前処理を使った元モデルも 93.90%。これは新たな音響能力ではなく、読みを明示した入力による改善です。

Iroha-TTS-V1 について