ローカル環境で動かせる日本語TTS「Irodori-TTS」のv4.1-Smallを試してみました。
以前のv3世代も触ったことがありますが、今回のv4.1はかなり印象が違います。
- 今回の実行環境
- VRAM使用量を測定
- Irodori-TTS v4.1-Smallとは
- 普通の読み上げでも、これまで試したローカルTTSではかなり良い
- Emojiを入れると感情的な演技もできる
- 本当に良かったのは、EmojiもCaptionもないキャラクター台詞
- ゲーム用途では「文脈だけで演技する」のがかなり大きい
- Voice Cloneの再現性もかなり高かった
- ReferenceありではCaptionの効果は意外と小さかった
- Qwen3-TTS VoiceDesignでキャラクターの声を作る
- Qwenで声を作り、Irodoriで喋らせる
- ゲーム実行時にQwen3-TTSを動かす必要はない
- 日本語の読み上げにはまだ弱点もある
- 自動Durationでは末尾の笑い声が途中で切れた
- ブラウザ再生・自動保存・Download結果にも違いがあった
- 今までのローカルTTSより「ゲームで使える」に大きく近づいた
- 今回の評価まとめ
- まとめ
今回の実行環境
今回の検証環境は以下です。
| 項目 | 環境 |
|---|---|
| OS | Windows 11 |
| GPU | NVIDIA GeForce RTX 5070 Ti |
| VRAM | 16GB(nvidia-smi上 16,303 MiB) |
| NVIDIA Driver | 610.62 |
| CUDA UMD | 13.3 |
| Irodori-TTS | Irodori-TTS-v4.1-Small / Rectified Flow / 40 Step |
| Qwen3-TTS | Qwen3-TTS-12Hz-1.7B-VoiceDesign |
今回はIrodori-TTS単体だけでなく、Qwen3-TTS VoiceDesignも同じGPUへ載せた状態で動作を確認しました。
VRAM使用量を測定
実際に試してみたい人にとって気になるのがVRAM使用量だと思います。
そこで、Windowsのアイドル状態、Qwen3-TTSのみ、Irodori-TTSのみ、そして両方を同時にロードした状態でVRAM使用量を測定しました。
| 状態 | VRAM使用量 |
|---|---|
| Windowsアイドル | 1,077 MiB |
| Qwen3-TTS 1.7B VoiceDesignのみ | 5,431 MiB |
| Irodori-TTS v4.1-Smallのみ | 9,273 MiB |
| Qwen3-TTS + Irodori-TTS 同時ロード | 13,628 MiB |
| 両モデル常駐+Irodori生成中ピーク | 13,634 MiB |
| 両モデル常駐+Qwen生成中ピーク | 14,810 MiB |
Windowsアイドル状態が1,077 MiBだったため、単純に差し引くと、Qwen3-TTS 1.7B VoiceDesignで約4.35GB、Irodori-TTS v4.1-Smallで約8.19GB分のVRAMが追加で使われています。
両モデルを同時にロードした状態では13,628 MiBでした。
さらに両方をロードしたまま生成しても、Irodori-TTSでは最大13,634 MiB、Qwen3-TTS VoiceDesignでは最大14,810 MiBまでに収まりました。
今回使用したRTX 5070 Tiはnvidia-smi上で16,303 MiBなので、最大時でも搭載VRAMのおよそ91%です。
RTX 5070 Ti 16GBでは、Qwen3-TTS VoiceDesignとIrodori-TTS v4.1-Smallを同時にGPUへ載せた状態でも生成できました。
16GBなら余裕があるというほどではありませんが、今回の環境では共有GPUメモリへ大きく逃げている様子もなく、VRAM不足による明確な速度低下も感じませんでした。
なお、Windowsのデスクトップ表示やブラウザなどのGPU使用量も含んだ実測値なので、環境や生成条件によって多少変動します。
Irodori-TTS単体では今回約9.3GBだったため、ゲームなどでIrodori-TTSだけを使用する場合は、Qwen3-TTSとの同時運用より必要VRAMをかなり抑えられます。
Irodori-TTSはWeb UIを起動しただけではVRAMが増えなかった
今回の環境では、Irodori-TTSのWeb UIを起動した直後はVRAM使用量が約1.08GBのままで、Windowsアイドル時とほぼ変わりませんでした。
その後、実際にモデルをロードして生成すると9,273 MiBまで増加し、生成終了後もVRAMへ載ったままになりました。
そのため、Irodori-TTSのVRAM使用量を確認する場合は、Web UIを起動した直後ではなく、実際にモデルをロード・生成した後の値を見る必要があります。
今回の環境では、Irodori-TTS v4.1-Small単体なら約9.3GB、Qwen3-TTS 1.7B VoiceDesignと同時にロードしても16GB VRAM内で動作しました。ここからは、実際に音声を生成しながら、通常の読み上げ、感情表現、Voice Cloneなどを順番に確認していきます。
まず普通の文章を読ませてみたところ、この時点でもかなり自然でした。その後、感情のある台詞やVoice Clone、さらに自作ゲーム用を想定したキャラクターボイスまで試していくと、評価はさらに大きく上がりました。
これまで試してきたローカルTTSの中では、個人的には今回のIrodori-TTS v4.1が一番良かったです。
特に印象的だったのは、EmojiやCaptionで明示的に感情を指定しなくても、台詞の文脈に合わせて自然に感情が付いて聞こえたことです。
これまでローカルTTSを試した際には、ゲームのキャラクターへそのまま使うにはもう一歩欲しいと感じることが多かったのですが、今回は印象が大きく変わりました。
「このレベルなら、普通にゲームのキャラクターボイスとして使えそう」
今回の検証で一番大きかったのは、この感覚まで来たことです。
主に以下の項目を実際に試しています。
- 通常の日本語読み上げ
- 感情表現
- Voice Clone
- Captionによるスタイル制御
- Emojiによる感情・非言語表現
- 自動Duration
- Qwen3-TTS VoiceDesignとの組み合わせ
Irodori-TTS v4.1-Smallとは
Irodori-TTS v4.1-Smallでは、Text、Reference Audio、Captionを組み合わせた音声生成が可能です。
Reference AudioなしでCaptionから声を作るVoice Design的な使い方もできますし、Reference Audioを使って特定の声を再現するVoice Cloneもできます。
今回使用したモデルは、
Aratako/Irodori-TTS-v4.1-Small
です。
通常のRectified Flow版を40 Stepで使用しました。
MeanFlow版では少ないStep数で高速生成できますが、今回は通常版を中心に検証しています。
普通の読み上げでも、これまで試したローカルTTSではかなり良い
最初はReference Audioを使わず、Captionだけを指定して普通の文章を生成しました。
例えば、
落ち着いた若い女性の声。自然な会話口調で、聞き手に静かに語りかける。
といった指示です。
最初に聞いたときは出だしが少し気になったこともあり、そこまで強い印象を持っていませんでした。
ただ、その後いくつもの音声を生成し、これまで触ってきたローカルTTSと改めて比較すると、この最初の評価は低すぎたと思います。
通常の日本語会話だけを見ても、これまで試したローカルTTSの中では一番良いと感じるレベルでした。
40 Stepでも生成速度は十分速く、ローカル環境で使うTTSとして実用性を感じます。
一方で、Captionで「落ち着いた声」と指定しても想定より明るい声になるなど、Voice Designについては必ずしも指示通りになるわけではありませんでした。
Emojiを入れると感情的な演技もできる
最初に感情表現の強さに気付いたのは、次のような文章です。
えっ、本当に? 😳
ちょっと待って、それは聞いてないんだけど……。もう、しょうがないなあ。😮💨
でもまあ、そこまで言うなら付き合ってあげる。ふふっ。あとで後悔しても知らないからね? 🤭
この結果はかなり良好でした。
驚き、少し呆れた感じ、最後の楽しそうな話し方まで自然につながります。
音声サンプル:Emojiを使った感情表現
実際に聞いてみると、単純に声の高さを変えているだけではなく、台詞の流れに合わせて話し方そのものが変化しているのが分かります。
さらに興味深かったのが、Emojiを入れた文章では、台詞を読み終えた後に実際の笑い声のような非言語表現まで生成される場合があったことです。
Emojiを付ければ常に同じ演技になるわけではありませんが、驚きや呆れ、笑いといった細かな表現を追加できるのは、キャラクターTTSとして面白いところです。
ただし、後で試したキャラクターボイスでは、EmojiやCaptionを付けなくても文章の文脈だけで自然な感情表現が出ました。今回もっとも評価したのは、むしろそちらです。
本当に良かったのは、EmojiもCaptionもないキャラクター台詞
ただし、今回最も評価したいのはEmojiによる演技ではありません。
後半のテストでは、別のTTSで作ったキャラクター音声をReference AudioとしてIrodori-TTSへ渡しました。
そして、
- Reference Audioは同じ
- Captionなし
- Emojiなし
- 台詞だけ変更
という条件で複数の音声を生成しました。
まずは通常・警戒寄りの台詞です。
……ああ、君か。
少し驚いただけだ。
この森では、聞き慣れない足音には気をつけた方がいい。向こうの道なら、さっき確認した。
今のところ危険な気配はないと思う。でも、油断はしないで。
何かあったら、すぐに私に知らせて。
それじゃあ、行こうか。
音声サンプル:通常・警戒寄り
次に、同じReference Audioで少し親密な台詞です。
君って、意外と頑固なんだね。
……まあ、嫌いじゃないけど。
そういうところ。一緒にいると、少しだけ調子が狂う。
音声サンプル:親密な台詞
さらに、心配しながら少し怒っている場面です。
どうして一人で行ったの。
危ないって言ったよね。
もう少し、自分のことも大事にして。
本当に、心配したんだから。
音声サンプル:心配+軽い怒り
この3本では、CaptionもEmojiも使用していません。
それでも聞き比べると、
- 通常時は落ち着いて警戒している
- 親密な文章では少し柔らかくなる
- 心配している文章では声に強さが出る
と、台詞の内容に合わせて話し方が変化して聞こえます。
もちろん、「モデルが人間と同じように文章の感情を理解している」と断定するつもりはありません。
ただ、少なくとも今回の生成結果では、明示的な感情タグを与えなくても、台詞の文脈に合った自然な演技になっていました。
個人的には、今回のIrodori-TTS v4.1で最も評価したいのはここです。
ゲーム用途では「文脈だけで演技する」のがかなり大きい
ゲームで大量の台詞を扱うことを考えると、これはかなり重要です。
例えば毎回、
Emotion = Angry
Emotion = Happy
Emotion = Worried
のようなTTS専用の感情指定を細かく設定しなければならないと、シナリオや会話量が増えるほど管理が大変になります。
LLMがリアルタイムに生成する会話なら、なおさらです。
元の台詞だけをIrodori-TTSへ渡しても、ある程度自然な演技が付くのであれば実装はかなり楽になります。
必要な場面だけEmojiなどで補助する、という使い方も考えられそうです。
Voice Cloneの再現性もかなり高かった
Voice Cloneについても良好でした。
最初は比較的特徴の少ない女性声をReferenceにしたため、
「本当に同じ声を再現しているのか、それとも似た女性声を出しているだけなのか」
が分かりづらい状態でした。
そこで、やや低めで特徴のあるReference Audioを用意しました。
この声をIrodori-TTSへ渡すと、別の文章でもかなり元の声質が残ります。
さらに先ほどの3種類の台詞でも、演技は変化するのに「同じ人物が話している」という印象は維持されています。
声の一貫性と、文章に合わせた演技をかなり高いレベルで両立できていると感じました。
ReferenceありではCaptionの効果は意外と小さかった
一方で、予想と違った部分もあります。
同じReference Audio、同じTextで、Captionだけを変更して比較しました。
- Captionなし
- 明るく嬉しそうなCaption
- 怒りを抑えているCaption
しかし、今回の条件では思ったほど大きな違いを感じませんでした。
Reference AudioなしでVoice Designを行った場合はCaptionの影響を感じやすかったのですが、Reference Audioを入れると元音声の声質や話し方の影響がかなり強いように感じます。
そのため今回の結果からは、
Referenceでキャラクターの声を固定し、基本的な演技は文章の文脈に任せ、必要な部分だけ補助的にEmojiなどを使う
という運用が良さそうに感じました。
Qwen3-TTS VoiceDesignでキャラクターの声を作る
今回もう一つ試したのがQwen3-TTSです。
Qwen3-TTSにはVoice Design専用モデルがあり、自然言語で声の特徴を指定して新しい声を作ることができます。
今回は例えば、
- 若い成人女性
- 若い女性としては明確に低め
- 静かで柔らかい
- 少し神秘的
- 子供っぽくしない
- 萌え声にしない
といった条件を指定しました。
何度か生成すると、かなり好みに近い声を作れました。
個人的には、ゼロからキャラクターの声を探す「声ガチャ」の用途では、Irodori-TTSのVoice DesignよりQwen3-TTS VoiceDesignの方が好みでした。
実際に今回Reference Audioとして使用した元音声がこちらです。
Qwen3-TTS VoiceDesignで作成したReference音声
声色そのものはかなり気に入りました。
一方で、この音声を生成したQwen3-TTSの文章の読み方については、個人的にはIrodori-TTSほど好みではありませんでした。
Qwenで声を作り、Irodoriで喋らせる
そこで今回一番良かったのが、両者を組み合わせる方法です。
まずQwen3-TTS VoiceDesignで複数の声を生成します。
その中から、
このキャラクターにはこの声が合う。
という音声を選びます。
その音声を、例えば、
character_voice_reference.wav
のようなReference Audioとして保存します。
ここでQwen3-TTSの仕事は終了です。
ゲーム用の実際の台詞は、そのReference AudioをIrodori-TTSへ渡して生成します。
つまり、
Qwen3-TTS VoiceDesign
→ キャラクターの声を作る
Irodori-TTS
→ その声を維持して実際の台詞を演じる
という分業です。
今回のテストでは、この組み合わせがかなり良い結果になりました。
ゲーム実行時にQwen3-TTSを動かす必要はない
この方法の利点は、ゲーム実行時にQwen3-TTSとIrodori-TTSの両方を動かす必要がないことです。
キャラクター制作時だけQwen3-TTS VoiceDesignを使用します。
そこで気に入った音声ができたらReference WAVとして保存します。
以降はそのWAVをキャラクター用の音声資産として扱い、Irodori-TTSだけで台詞を生成できます。
イメージとしては、
Voice Design = キャラクターの声優を決める工程
Voice Clone = その声優に実際の台詞を演じてもらう工程
です。
この分業はかなり合理的だと感じました。
日本語の読み上げにはまだ弱点もある
かなり高く評価していますが、問題がなかったわけではありません。
ニュース風の文章で、
東京都千代田区では、午後3時15分から臨時の説明会が開かれました。
と読ませたところ、「千代田区」を正しく発音できませんでした。
こちらの環境では「とうきょうととちだく」のように聞こえる発音になりました。
Reference Audioを付けても同じ結果だったため、今回の条件では再現性のある誤読でした。
固定されたゲーム台詞なら、読み上げ用テキストだけ、
千代田区 → ちよだ区
のように補正すれば回避できます。
ただし、ニュース読み上げなど任意の文章を大量に扱う用途では、固有名詞の読み精度には注意が必要そうです。
自動Durationでは末尾の笑い声が途中で切れた
Emojiを使ったテストでは、台詞を読み終えた後に笑い声が生成されるケースがありました。
ところが、このテストで別の問題も見つかりました。
Irodori-TTS v4.1-Smallでは、Secondsを指定しない場合、モデルが出力音声の長さを自動的に決定します。
今回、自動Durationでは約16.8秒の音声が生成されました。
自動Duration:約16.8秒
文章そのものは読み終えていますが、その後に生成された笑い声がまだ続いている途中で音声が終了しているように聞こえます。
最初は末尾を削除するtail trimmingが原因ではないかと考え、
trim_tail=True
trim_tail=False
を比較しました。
しかし、どちらも16.8秒で同じ結果になりました。
そのため、少なくとも今回の途中切れについてはtail trimmingのON/OFFでは改善しませんでした。
次に、Secondsを手動で20秒へ変更しました。
Seconds=20を指定した場合
ここで重要なのは、Secondsを20秒へ変更しても、元の約17秒の発話をそのまま維持して末尾に約3秒の余白が追加されるわけではないことです。
実際には台詞の発話時間や文と文の間なども変化し、音声全体が20秒になるように引き伸ばされました。
笑い声もそれに合わせて後ろへ移動しており、20秒版を聞き直しても、末尾は完全に余裕を持って終了しているとは言いにくい状態です。
そのため、
Secondsを長く設定すれば、末尾に安全な無音区間を追加できる。
という使い方ではありません。
今回確認できたのは、Secondsを指定すると発話全体の時間配分そのものが変化するという点です。
Emojiによって笑い声など文章外の非言語表現が追加された場合、Durationの扱いにはまだ注意が必要そうです。
ブラウザ再生・自動保存・Download結果にも違いがあった
さらに今回、Web UIから保存される音声について気になる挙動も確認しました。
ブラウザ上では最後の方まで再生されているのに、Downloadボタンから保存したWAVでは末尾が短くなっているケースがありました。
一方、Irodori-TTSの出力フォルダへ自動保存されたWAVは、ブラウザ上で再生した結果により近い長さになっていました。
今回の記事用サンプルには、ブラウザのDownloadボタンから取得したファイルではなく、Irodori-TTSの出力フォルダへ自動保存されたWAVを使用しています。
少なくとも今回の環境では、生成結果を実際に利用する場合はWeb UIのDownload結果だけでなく、自動保存されたWAVも確認した方が良さそうです。
今までのローカルTTSより「ゲームで使える」に大きく近づいた
これまでローカルTTSをいくつも試してきました。
音質、声の一貫性、感情表現、日本語の自然さなど、それぞれ良い部分はあっても、ゲームのキャラクターボイスとして実際に使うことを考えると、どこかに気になる点が残ることが多くありました。
今回のIrodori-TTS v4.1では、その印象がかなり変わりました。
特に大きかったのが、
同じReference Audioの声を維持しながら、CaptionやEmojiがなくても文章の内容に合わせて自然に話し方が変化したことです。
Voice Cloneした声もかなり安定しており、親密な台詞でも、心配している台詞でも、「同じキャラクターが演技を変えている」と感じられました。
今回の検証で初めて、「このままゲームのキャラクターに使ってみたい」と思えるところまで来ました。
今回の記事で一番伝えたいのは、この点です。
今回の評価まとめ
| 項目 | 今回の印象 |
|---|---|
| 通常の日本語会話 | 非常に良い |
| 音質 | 非常に良い |
| 40 Stepの生成速度 | 十分速い |
| 文脈に応じた感情表現 | かなり良い |
| Voice Clone | かなり良い |
| 声の一貫性 | かなり良い |
| Emojiによる演技 | 笑いなど細かな表現が面白い |
| ReferenceなしVoice Design | 良好 |
| ReferenceありCaption制御 | 今回の条件では変化が小さい |
| 日本語の固有名詞 | 一部で誤読あり |
| 自動Duration | 非言語表現を含む場合は注意 |
| ゲーム用途 | 実際に使ってみたいレベル |
まとめ
Irodori-TTS v4.1-Smallは、今回試したローカルTTSの中では個人的に最も良い結果でした。
普通の日本語読み上げだけでもかなり自然ですが、Voice Cloneしたキャラクター音声で複数の台詞を試したことで、評価がさらに大きく上がりました。
特に良かったのは、
Reference Audioだけで声を固定し、CaptionもEmojiも付けていないのに、台詞の内容に応じて自然に感情が変化して聞こえたことです。
これはゲーム用途では非常に大きなメリットです。
毎回細かく感情タグを付けなくても、通常の台詞そのものからある程度演技してくれるのであれば、LLMで生成した会話をTTSへ渡すようなシステムとも相性が良さそうです。
Voice Cloneの再現性も高く、今回のキャラクター音声では感情が変化しても同じ人物として聞こえました。
一方で、固有名詞の誤読、非言語表現とDurationの関係、Web UIのDownload結果が短くなるケースなど、まだ注意点もあります。
そして今回特に面白かったのが、
Qwen3-TTS VoiceDesignでキャラクターの声を作り、Irodori-TTSにその声で演技してもらう方法です。
Qwen3-TTSはVoice Design。
Irodori-TTSは日本語の読み上げ、Voice Clone、そして自然な演技。
それぞれの得意分野を組み合わせることで、かなり実用的なキャラクターTTSになりました。
これまでローカルTTSを試していて「ゲームにそのまま使うにはもう一歩」と感じることが多かったのですが、今回のIrodori-TTS v4.1では、その印象が変わりました。
少なくとも今回のキャラクターボイスでは、「実験用のTTS」ではなく「実際にゲームへ組み込んでみたいTTS」として考えられるところまで来ています。
今後はMeanFlow版の4 Step生成や、実際のゲームからIrodori-TTSを呼び出した場合の生成速度、VRAM使用量、リアルタイム運用についても確認してみたいと思います。



コメント