MioTTS-Inference

February 14, 2026 · View on GitHub

Hugging Face Collection Demo License: MIT

概要

軽量・高速なTTSモデル MioTTS の推論用コードです。

主な特徴:

  • 一般的なLLM推論フレームワーク(llama.cpp、Ollama、vLLMなど)を使用可能
  • REST API経由での音声合成
  • 参照音声のプリセット登録機能
  • Best-of-N による高品質な音声選択

モデル一覧

モデル名パラメータライセンス
MioTTS-0.1B0.1BFalcon-LLM License
MioTTS-0.4B0.4BLFM Open License v1.0
MioTTS-0.6B0.6BApache 2.0
MioTTS-1.2B1.2BLFM Open License v1.0
MioTTS-1.7B1.7BApache 2.0
MioTTS-2.6B2.6BLFM Open License v1.0

量子化配布モデル:

モデル用途
MioTTS-GGUFllama.cpp / Ollama 向け量子化モデル

環境構築

git clone https://github.com/Aratako/MioTTS-Inference.git
cd MioTTS-Inference
uv sync
# flash-attentionのインストール(推奨)
# MAX_JOBSの値はCPUスペックによって変更してください
MAX_JOBS=8 uv pip install --no-build-isolation -v flash-attn

使い方

1. TTSモデル推論サーバの起動

TTSモデルの推論サーバを起動します。モデルのアーキテクチャは通常のLLMと完全に同一であるため、一般的なLLM推論フレームワークで起動できます。OpenAI Compatible APIが立ち上がるようにしてください。

llama.cpp の場合

公式の Quick Start に従い、llama.cppをインストールしてください。その後、以下のように推論サーバを起動します。使いたいモデルに応じて -hff の指定を適宜変更してください。

llama-server -hf Aratako/MioTTS-GGUF -hff MioTTS-1.2B-BF16.gguf -c 8192 --cont-batching --batch_size 8 --port 8000

Ollama の場合

公式の Download に従い、Ollamaをインストールしてください。その後、以下のように推論サーバを起動します。使いたいモデルに応じてモデル名を適宜変更してください。

# CLIを使う場合
OLLAMA_HOST=localhost:8000 ollama serve
# 別ウィンドウで
OLLAMA_HOST=localhost:8000 ollama run hf.co/Aratako/MioTTS-GGUF:MioTTS-1.2B-BF16.gguf

vLLM の場合

公式の Installation に従い、vLLMをインストールしてください。その後、以下のように推論サーバを起動します。使いたいモデルに応じてモデル名を適宜変更してください。また、GPUスペックに応じて --gpu-memory-utilization を調整してください。

vllm serve Aratako/MioTTS-1.2B --max-model-len 1024 --gpu-memory-utilization 0.2

LMStudioやSGLangなどその他の推論フレームワークでも、OpenAI Compatible APIを立てることができれば動作します。

2. 音声合成APIの起動

本リポジトリで提供している音声合成のAPIサーバを起動します。ポート番号は手順1で立てたサーバに合わせてください(例えば、Ollamaはデフォルトではポート11434を使用します)。

python run_server.py --llm-base-url http://localhost:8000/v1

--best-of-n-enabled を付けて起動すると、Best-of-N による音声合成が可能になります。この設定では、1つの入力テキストに対して指定したN個の候補を同時に生成し、ASR(Whisper)によるエラー率などのヒューリスティックな評価で最も良いと判断された音声を返します。

python run_server.py --llm-base-url http://localhost:8000/v1 --best-of-n-enabled

3. WebUIの起動

上記の手順で起動した音声合成APIを使った簡易的なWebUIのデモを用意しています。

python run_gradio.py

実行後、http://localhost:7860 でWebUIにアクセスできます。

環境変数 / CLI引数

run_server.py(音声合成APIサーバ)

環境変数やCLI引数で以下の設定を変更できます。CLI引数が優先されます。

サーバ設定

引数環境変数デフォルト説明
--hostMIOTTS_HOST0.0.0.0サーバホスト
--portMIOTTS_PORT8001サーバポート
--reloadMIOTTS_RELOADfalseホットリロードの有効化
--log-levelMIOTTS_LOG_LEVELinfoログレベル

LLM設定

引数環境変数デフォルト説明
--llm-base-urlMIOTTS_LLM_BASE_URLhttp://localhost:8000/v1LLM APIのベースURL
--llm-api-keyMIOTTS_LLM_API_KEYなしLLM APIキー(必要な場合)
--llm-modelMIOTTS_LLM_MODEL自動取得LLMのモデル名
--llm-timeoutMIOTTS_LLM_TIMEOUT120.0LLMリクエストのタイムアウト(秒)

サンプリングパラメータ

環境変数デフォルト説明
MIOTTS_LLM_TEMPERATURE0.8Temperature
MIOTTS_LLM_TOP_P1.0Top-P
MIOTTS_LLM_MAX_TOKENS700最大生成トークン数
MIOTTS_LLM_REPETITION_PENALTY1.0Repetition Penalty(1.0-1.5)
MIOTTS_LLM_PRESENCE_PENALTY0.0Presence Penalty(0.0-1.0)
MIOTTS_LLM_FREQUENCY_PENALTY0.0Frequency Penalty(0.0-1.0)

コーデック設定

引数環境変数デフォルト説明
--codec-modelMIOTTS_CODEC_MODELAratako/MioCodec-25Hz-44.1kHz-v2MioCodecのモデル名
--deviceMIOTTS_DEVICEcuda(なければcpuコーデックの推論デバイス

プリセット設定

引数環境変数デフォルト説明
--presets-dirMIOTTS_PRESETS_DIRpresetsプリセットのディレクトリ

Best-of-N設定

引数環境変数デフォルト説明
--best-of-n-enabledMIOTTS_BEST_OF_N_ENABLEDfalseBest-of-Nの有効化
--best-of-n-defaultMIOTTS_BEST_OF_N_DEFAULT1デフォルトのN(1=通常の生成)
--best-of-n-maxMIOTTS_BEST_OF_N_MAX8Nの最大値
--best-of-n-languageMIOTTS_BEST_OF_N_LANGUAGEautoBest-of-N用の言語設定(auto/ja/en

ASR設定(Best-of-N用)

引数環境変数デフォルト説明
--asr-modelMIOTTS_ASR_MODELopenai/whisper-large-v3-turboASRモデル
--asr-deviceMIOTTS_ASR_DEVICEMIOTTS_DEVICEと同じASRの推論デバイス
--asr-compute-typeMIOTTS_ASR_COMPUTE_TYPEfloat16(cuda)/ int8(cpu)ASRの計算精度
--asr-batch-sizeMIOTTS_ASR_BATCH_SIZE0(全並列)ASRのバッチサイズ
--asr-languageMIOTTS_ASR_LANGUAGEautoASR言語

その他設定

引数環境変数デフォルト説明
--max-text-lengthMIOTTS_MAX_TEXT_LENGTH300入力テキストの最大文字数
--max-reference-mbMIOTTS_MAX_REFERENCE_MB20参照音声の最大サイズ(MB)
--allowed-audio-extsMIOTTS_ALLOWED_AUDIO_EXTS.wav,.flac,.ogg許可する音声拡張子

参照音声の最大長は20秒に固定されています。

run_gradio.py(WebUI)

環境変数デフォルト説明
MIOTTS_API_BASEhttp://localhost:8001音声合成APIサーバのベースURL

WebUI上の「Advanced Settings」からもAPI Base URLを変更できます。

参照音声のプリセットについて

参照音声を毎回入力する代わりに、事前にコーデックでエンコードした結果をプリセットとして登録して使いまわすことができます。

python scripts/generate_preset.py --audio /path/to/audio.wav --preset-id preset_name

generate_preset.py の引数

引数必須デフォルト説明
--audioはい-参照音声ファイルのパス
--preset-idはい-プリセットID(ファイル名になります)
--output-dirいいえpresets出力ディレクトリ
--model-idいいえAratako/MioCodec-25Hz-44.1kHz-v2MioCodecのモデル名
--deviceいいえcuda推論デバイス

デフォルトプリセット

以下のプリセットが同梱されています:

  • jp_female - 日本語・女性音声
  • jp_male - 日本語・男性音声
  • en_female - 英語・女性音声
  • en_male - 英語・男性音声

API仕様

ヘルスチェック

GET /health

レスポンス:

{"status": "ok"}

プリセット一覧取得

GET /v1/presets

レスポンス:

{"presets": ["en_female", "en_male", "jp_female", "jp_male"]}

音声合成(JSONリクエスト)

POST /v1/tts
Content-Type: application/json

リクエストボディ:

{
  "text": "合成するテキスト",
  "reference": {
    "type": "preset",
    "preset_id": "jp_female"
  },
  "llm": {
    "temperature": 0.8,
    "top_p": 1.0,
    "max_tokens": 700,
    "repetition_penalty": 1.0,
    "presence_penalty": 0.0,
    "frequency_penalty": 0.0
  },
  "output": {
    "format": "base64"
  },
  "best_of_n": {
    "enabled": false,
    "n": 1,
    "language": "auto"
  }
}

reference は必須です。 テキスト前処理は、入力が日本語なら正規化、それ以外は strip() のみを適用します。

フィールド必須説明
textstringはい合成するテキスト
reference.typestringはいpreset または base64
reference.preset_idstring条件付きtype=preset の場合に必須
reference.datastring条件付きtype=base64 の場合に必須
llm.*-いいえLLMパラメータ
output.formatstringいいえwav または base64(デフォルト: base64)
best_of_n.*-いいえBest-of-N設定

レスポンス:

{
  "audio": "Base64エンコードされたWAVデータ",
  "format": "base64",
  "sample_rate": 24000,
  "token_count": 123,
  "timings": {
    "llm_sec": 0.5,
    "parse_sec": 0.01,
    "codec_sec": 0.2,
    "total_sec": 0.71,
    "best_of_n_sec": null,
    "asr_sec": null
  },
  "normalized_text": "前処理後のテキスト"
}

音声合成(ファイルアップロード)

POST /v1/tts/file
Content-Type: multipart/form-data

フォームフィールド:

reference_audio または reference_preset_id のどちらかが必須です。

フィールド必須説明
textstringはい合成するテキスト
reference_audiofile条件付きreference_preset_id 未指定時は必須
reference_preset_idstring条件付きreference_audio 未指定時は必須
modelstringいいえLMのモデル名
temperaturefloatいいえTemperature
top_pfloatいいえTop-Pサ
max_tokensintいいえ最大生成トークン数
repetition_penaltyfloatいいえRepetition Penalty
presence_penaltyfloatいいえPresence Penalty
frequency_penaltyfloatいいえFrequency Penalty
output_formatstringいいえwav または base64
best_of_n_enabledbooleanいいえBest-of-Nの有効化
best_of_n_nintいいえNの値
best_of_n_languagestringいいえBest-of-N用の言語設定

レスポンス:

  • output_format=wav: WAVファイル(audio/wav
  • output_format=base64: JSONレスポンス

ライセンス・クレジット

  • コード: MIT License
  • デフォルトプリセット: presets以下のデフォルトプリセットは T5Gemma-TTSgemini-2.5-pro-tts の生成音声を利用しているため、これを用いて合成した音声は商用利用出来ません。
  • モデル: 各モデルのライセンスに従ってください。