MioTTS - コーデックから自作した軽量LLMベースTTS
2026年2月11日にAratakoが公開した日英対応の軽量TTSモデル群。「コーデックからスクラッチで開発した」と本人が言っている通り、音声コーデック、ボコーダー、TTSモデル、推論サーバーまで一式揃えた力作。
- コレクション: Aratako/MioTTS
- 推論コード: Aratako/MioTTS-Inference
- コーデック: Aratako/MioCodec
- ライセンス: モデルサイズにより異なる(後述)
MioTTSの全体像
MioTTSはLLMアーキテクチャをそのまま使ったTTSモデル。テキストを入力すると音声トークンを自己回帰で生成し、それをコーデックでデコードして波形にする。LLMの推論フレームワークがそのまま使えるのが大きな特徴で、llama.cpp、Ollama、vLLMなどOpenAI互換APIを提供する既存のツールがそのまま動く。
構成要素は3つ:
- MioCodec — 音声をコンテンツトークンとグローバル埋め込みに分離するニューラル音声コーデック
- MioTTS本体 — LLMベースの自己回帰TTSモデル(0.1B〜2.6B)
- MioTTS-Inference — REST APIとGradio WebUIを備えた推論サーバー
MioCodec: 独自の音声コーデック
MioTTSの話をするにはまずMioCodecから。
MioCodecはkanade-tokenizerの実装をベースにしたニューラル音声コーデック。音声を以下の2つの要素に分離する:
- コンテンツトークン: 言語情報と音素内容を表す離散トークン。25Hzの低フレームレートで、「何を言っているか」を表現する
- グローバル埋め込み: 話者のアイデンティティ、録音環境、マイク特性といった音響特性を表す連続ベクトル。「どう話しているか」を表現する
この分離設計がMioTTSの効率性の鍵になっている。TTSのLLM部分はコンテンツトークンの生成だけに集中すればよく、話者情報はグローバル埋め込みとして別途与える。ゼロショット音声クローニングは、ソースのコンテンツトークンにターゲット話者のグローバル埋め込みを組み合わせるだけで実現できる。
スペック
| 項目 | MioCodec 24kHz版 | MioCodec 44.1kHz版 |
|---|---|---|
| トークンレート | 25 Hz | 25 Hz |
| ビットレート | 341 bps | 341 bps |
| サンプルレート | 24 kHz | 44.1 kHz |
| ボコーダー | iSTFTHead(内蔵) | MioVocoder(外部) |
| パラメータ数 | 132M | 118M(ボコーダー除く) |
| 用途 | 軽量・高速推論 | 高品質音声処理 |
24kHz版はiSTFTHeadを統合しており、外部ボコーダーなしで波形を直接生成できる。44.1kHz版はMioVocoderと共同チューニングしたもので、スタジオ品質の音声処理向け。
学習
9言語、約88,000時間以上の音声データで学習。SSLエンコーダーにWavLM-base+を使用し、2段階(24kHz版)または3段階(44.1kHz版)の学習プロセスを経ている。
- Phase 1: マルチ解像度メルスペクトログラム損失 + SSL特徴再構成損失による特徴アライメント
- Phase 2: 敵対的学習(マルチピリオド弁別器、マルチスケールSTFT弁別器)による知覚品質の改善
- Phase 3(44.1kHz版のみ): ボコーダーとコーデックデコーダーのエンドツーエンド共同チューニング
元となったkanadeは2026年2月のarXiv論文で発表されたもので、単一レイヤーの分離型音声トークナイザ。MioCodecはこのkanadeのアーキテクチャを拡張し、iSTFTHeadによる統合波形デコーダーの搭載やボキャブラリーサイズの調整を行っている。
モデルファミリー
6サイズ展開で、それぞれ異なるベースLLMから初期化されている。
| モデル | パラメータ | ベースモデル | ライセンス | RTF |
|---|---|---|---|---|
| MioTTS-0.1B | 0.1B | Falcon-H1-Tiny-Multilingual-100M | Falcon-LLM License | 0.04 - 0.05 |
| MioTTS-0.4B | 0.4B | LiquidAI/LFM2-350M | LFM Open License v1.0 | 0.035 - 0.045 |
| MioTTS-0.6B | 0.6B | Qwen3-0.6B-Base | Apache 2.0 | 0.055 - 0.065 |
| MioTTS-1.2B | 1.2B | LiquidAI/LFM2.5-1.2B-Base | LFM Open License v1.0 | 0.065 - 0.075 |
| MioTTS-1.7B | 1.7B | Qwen3-1.7B-Base | Apache 2.0 | 0.10 - 0.11 |
| MioTTS-2.6B | 2.6B | LiquidAI/LFM2-2.6B | LFM Open License v1.0 | 0.135 - 0.145 |
RTFはNVIDIA RTX 5090 + vLLM 0.15.1で約15秒の音声を生成した際の実時間係数。0.1Bモデルでも RTF 0.04〜0.05、つまりリアルタイムの20〜25倍速で音声を生成できる。
ベースモデルが多彩なのが面白い。Falcon H1、LiquidAIのLFM2/LFM2.5、Qwen3と、異なるアーキテクチャのLLMを試している。特にLFM2はLiquid AIのハイブリッドアーキテクチャで、Transformerとは異なるSSM系の設計。0.4Bモデルが0.6Bより低いRTFを出しているのはこのアーキテクチャの違いが効いている可能性がある。
学習データは英語と日本語で約10万時間。データセットとしてEmilia-DatasetとHiFiTTS-2が使われている。
ライセンスの注意点
ベースモデルごとにライセンスが異なる。Apache 2.0のQwen3ベースモデル(0.6B、1.7B)が最も自由度が高い。Falcon-LLM LicenseとLFM Open Licenseはそれぞれ個別の利用条件があるので、商用利用する場合は確認が必要。
ベンチマーク: J-HARD-TTS-Eval
0.1BモデルのモデルカードにJ-HARD-TTS-Evalの評価結果が掲載されている。これはParakeet Inc.が公開した日本語ゼロショットTTS評価ベンチマークで、以下の4タスクで自己回帰TTSモデルの堅牢性を測定する。
- Continuation: 部分的なテキストの続きを生成
- Repetition: 繰り返しパターンの安定性
- Rhyme: 韻律パターンの処理
- Short: 短文での安定性
評価指標はCER(文字誤り率、低いほど良い)とSS(話者類似度、高いほど良い)。
0.1Bの結果から抜粋:
- Rhymeタスク: Best CER 0.1419で最高性能
- Repetitionタスク: Best CER 4.963で最高性能
- Continuationタスク: Best CER 0.2884で最高性能
0.1Bという極小サイズでピーク性能はかなり高い。ただし平均スコアと最悪スコアのばらつきが大きく、安定性は大規模モデルに劣る。Shortタスクのように最小限の文脈しかない場合の改善は今後の課題とされている。
SS(話者類似度)は0.53〜0.57程度。モデルカードでも言及されているが、これは「LLMではなくコーデックが音声クローニングを担当する設計トレードオフ」によるもの。グローバル埋め込みでの話者表現はコンパクトだが、きめ細かい話者特徴の再現には限界がある。
GGUF対応: llama.cppとOllamaで動く
全6サイズのGGUF量子化版がMioTTS-GGUFで公開されている。
| モデル | BF16 | Q8_0 | Q6_K | Q4_K_M |
|---|---|---|---|---|
| 0.1B | 232 MB | 125 MB | 97.3 MB | 79.6 MB |
| 0.4B | 736 MB | 392 MB | 304 MB | 239 MB |
| 0.6B | 1.22 GB | 653 MB | 506 MB | 408 MB |
| 1.2B | 2.39 GB | 1.27 GB | 983 MB | 751 MB |
| 1.7B | 3.5 GB | 1.86 GB | 1.44 GB | 1.13 GB |
| 2.6B | 5.19 GB | 2.76 GB | 2.13 GB | 1.58 GB |
0.1BのQ4_K_Mで79.6MB。スマホでも動きそうなサイズ感。LLMの推論フレームワークがそのまま使えるので、llama.cppやOllamaで起動してOpenAI互換APIとして呼び出し、別途MioTTS-Inferenceサーバーがコーデックのデコードを担当する構成になる。
セットアップ
推論サーバーの構成
git clone https://github.com/Aratako/MioTTS-Inference.git
cd MioTTS-Inference
uv sync
MAX_JOBS=8 uv pip install --no-build-isolation -v flash-attn
3ステップで起動する:
1. LLM推論サーバーの起動(llama.cpp、Ollama、vLLMなど)
2. TTS APIサーバーの起動
python run_server.py --llm-base-url http://localhost:8000/v1
3. WebUI起動(オプション)
python run_gradio.py
http://localhost:7860 でアクセスできる。
プリセット音声
デフォルトで jp_female、jp_male、en_female、en_male の4プリセットが用意されている。独自のプリセットも登録可能。
python scripts/generate_preset.py --audio /path/to/audio.wav --preset-id my_voice
推奨生成パラメータ
- Temperature: 0.8
- Top-p: 1.0
- Repetition penalty: 1.0
T5Gemma-TTSとの関係
Aratakoは2025年にT5Gemma-TTSというTTSモデルも公開している。こちらはEncoder-Decoder LLMアーキテクチャで、T5とGemmaを組み合わせたもの。MioTTSはDecoder-onlyのLLMアーキテクチャに移行し、さらにコーデックも独自開発したという進化形にあたる。
MioTTSのサンプル音声生成にT5Gemma-TTSとGemini 2.5 Pro TTSが参照音声として使われていることから、T5Gemma-TTSの経験がMioTTSの開発に活かされているのだろう。
他のオープンソースTTSとの比較
直近で公開されたオープンソースTTSと並べてみる。
| プロジェクト | アーキテクチャ | 日本語 | パラメータ | 推論フレームワーク |
|---|---|---|---|---|
| MioTTS | Decoder-only LLM + 独自コーデック | 対応 | 0.1B〜2.6B | llama.cpp, Ollama, vLLM |
| Qwen3-TTS | 離散マルチコードブックLM | 対応 | 0.6B〜1.7B | 専用 |
| CosyVoice 3 | LLM + DiT Flow Matching | 対応 | - | 専用 |
| Kokoro | StyleTTS2ベース | 対応 | 82M | 専用 |
MioTTSの最大の差別化ポイントは「既存のLLM推論フレームワークがそのまま使える」こと。GGUFに変換してllama.cppで動かせるTTSモデルは珍しい。エッジデバイスやローカル環境での運用を考えると、この互換性は実用面で大きなアドバンテージになる。
コーデックからフルスクラッチで構築しているのも個人開発としては異色。普通はEncodecやDAC、SpeechTokenizerなど既存のコーデックを使うところを、kanadeベースで独自に88,000時間のデータで学習し、24kHz版と44.1kHz版の2種類を用意している。