コンテンツにスキップ

IrodoriTTS

Irodori-TTS v4.1は、日本語向けの音声合成モデルです。1つのチェックポイントでボイスクローニングとキャプションベースのボイスデザインに対応しています。TomoriBotではservers/tts/irodoritts/のローカルFastAPIラッパーを介して実行します。

デフォルトモデルはAratako/Irodori-TTS-v4.1-Smallです。IRODORI_TTS_MODEL_IDを設定すると、phasefield-audio/Irodori-TTS-v4.1-Animeなどの互換Hugging Faceチェックポイントも使用できます。

現在のIrodoriは、依存関係とPyTorchバックエンドの管理にuvを使用します。先にuvをインストールし、TomoriBotリポジトリのルートからセットアップスクリプトを実行してください。

Terminal window
.\servers\tts\irodoritts\install-irodori.ps1 cu128
.\servers\tts\irodoritts\.venv\Scripts\python.exe servers\tts\irodoritts\server.py
Terminal window
bash servers/tts/irodoritts/install-irodori.sh cu128
servers/tts/irodoritts/.venv/bin/python servers/tts/irodoritts/server.py

セットアップスクリプトはservers/tts/irodoritts/.venvを作成するため、インストール後もbun run launch --irodorittsをそのまま使用できます。

利用可能なバックエンド:

  • cu128:Windows/LinuxのNVIDIA CUDA 12.8
  • cpu:CPUのみ、またはmacOSのCPU/MPS
  • rocm:Linux/WSLのAMD ROCm
  • xpu:Windows/LinuxのIntel XPU

デフォルトのエンドポイントURLはhttp://127.0.0.1:8013です。

別のチェックポイントを使用する

Section titled “別のチェックポイントを使用する”

デフォルトモデルはAratako/Irodori-TTS-v4.1-Smallです。環境変数を設定することで、互換性のあるHugging Faceリポジトリやコミュニティファインチューン(phasefield-audio/Irodori-TTS-v4.1-Animeなど)、またはローカルのチェックポイントファイルを指定できます。

サイドカー起動時(Pythonによる直接起動、またはbun run launch --irodoritts)、サーバーはリポジトリ直下の.env(またはservers/tts/irodoritts/.env)を自動的に読み込み、起動時に使用中のモデルIDをログ出力します。

.env を使用する場合(設定を保持)

Section titled “.env を使用する場合(設定を保持)”

TomoriBotのルートにある.envファイルに追記します。

IRODORI_TTS_MODEL_ID="phasefield-audio/Irodori-TTS-v4.1-Anime"

セッションごとに環境変数を指定する場合

Section titled “セッションごとに環境変数を指定する場合”

Windows PowerShellの場合:

Terminal window
$env:IRODORI_TTS_MODEL_ID = "phasefield-audio/Irodori-TTS-v4.1-Anime"
.\servers\tts\irodoritts\.venv\Scripts\python.exe servers\tts\irodoritts\server.py

Linux Bashの場合:

Terminal window
IRODORI_TTS_MODEL_ID=phasefield-audio/Irodori-TTS-v4.1-Anime \
servers/tts/irodoritts/.venv/bin/python servers/tts/irodoritts/server.py

ローカルのチェックポイントファイルを使用する場合

Section titled “ローカルのチェックポイントファイルを使用する場合”

チェックポイントファイル(.ptまたは.safetensors)をローカルにダウンロードしている場合は、IRODORI_TTS_CHECKPOINTにファイルパスを指定します。

IRODORI_TTS_CHECKPOINT="/path/to/custom_checkpoint.pt"

現在のIrodoriは、チェックポイントとHugging Faceリポジトリ内のトークナイザー資産をまとめて取得します。モデル側が提供している場合は、IRODORI_TTS_MODEL_IDでHugging Faceのサブフォルダ版も指定できます。

/providers新しいカスタムエンドポイントを追加 を選びます。

  • API互換性: tts-clone
  • endpoint_url: http://127.0.0.1:8013

保存したエンドポイントを選択し、モデルドロップダウンから音声モデルを追加します。v4.1では以下の設定を推奨します。

  • 音声ソースモード: 自動
  • スクリプトマークアップ形式: 絵文字

自動では、同じIrodoriエンドポイントでTomoriBotの両方の音声モードを利用できます。エモーション表現も途切れません。

  • ペルソナ > 音声で音声サンプルを割り当てたペルソナは、保存済みの参照音声を使ってボイスクローニングします。
  • ペルソナ > 音声でボイスデザインプロンプトを設定したペルソナは、保存済みの自然言語プロンプトをIrodoriのキャプション条件として使用します。

参照音声によるボイスクローニングだけを使いたい場合は、音声ソースモードで従来どおり音声クローンを選択しても構いません。

登録すると、エンドポイントはすぐに有効になります。今後、音声エンドポイントを切り替える場合にのみ/providersを使用します。

  1. 背景音楽のない、1人の話者による10〜20秒のクリアな日本語の音声クリップを準備します。
  2. /configを実行し、モデル > TTSパラメーターと音声でクリップをアップロードします。
  3. /configを実行し、ペルソナ > 音声でペルソナと音声サンプルを選択します。

Irodori v4.1は旧v2より長い参照条件に対応していますが、単純な長さよりも音声の品質のほうが重要です。

  1. /configを実行し、ペルソナ > 音声を開きます。
  2. ペルソナを選択します。
  3. 希望する声質や話し方を自然言語で記述します。

TomoriBotはこのプロンプトをinstructとして送信し、Irodoriラッパーがv4.1のcaption条件に変換します。ボイスデザインでは参照音声は不要です。

TomoriBotはTTSへ送信する前にDiscordのカスタム絵文字構文を削除します。script_markup: emojiでは、Unicode絵文字をIrodoriのテキスト条件用に保持します。

デフォルトは高品質寄りの40ステップlinear samplingです。レイテンシを下げたい場合は、ステップ数を減らしたSway Samplingを試せます。

Terminal window
$env:IRODORI_NUM_STEPS = "6"
$env:IRODORI_T_SCHEDULE_MODE = "sway"
$env:IRODORI_SWAY_COEFF = "-1.0"

品質と速度のトレードオフがあるため、常用する前に使用するチェックポイントと音声で確認してください。

インストールスクリプトが簡単になった理由

Section titled “インストールスクリプトが簡単になった理由”

以前のTomoriBotインストーラーはIrodoriのpyproject.tomlにパッチを当て、dacvaeを手動インストールし、古いv2時代のIrodoriコミットを固定していました。当時のパッケージ構成では必要な回避策でしたが、現在のIrodoriでは適切ではありません。

現在はサイドカー専用のpyproject.tomlを用意し、アップストリームと同じuvベースのバックエンド構成を使います。再現可能なインストールのためIrodoriとdacvaeの既知コミットは固定しますが、インストール時にアップストリームのソースコードを書き換えることはありません。

変数デフォルト値目的
IRODORI_TTS_MODEL_IDAratako/Irodori-TTS-v4.1-SmallHugging Faceモデル、または対応するrepo/subfolder指定
IRODORI_TTS_CHECKPOINT未設定任意のローカル.pt / .safetensorsチェックポイント。設定時はHugging Faceモデルより優先
TOMORI_TTS_HOST127.0.0.1サーバーのバインドアドレス
TOMORI_TTS_PORT8013サーバーポート
IRODORI_MODEL_DEVICEautoモデルデバイス(autocudacpumpsxpu
IRODORI_CODEC_DEVICEautoコーデックデバイス
IRODORI_MODEL_PRECISIONCUDAではbf16、それ以外はfp32モデル精度
IRODORI_CODEC_PRECISIONfp32コーデック精度
IRODORI_COMPILE_MODELfalseIrodoriモデルでtorch.compileを有効化
IRODORI_COMPILE_DYNAMICfalseコンパイル時にdynamic shapesを有効化
IRODORI_NUM_STEPS40Euler samplingのステップ数
IRODORI_T_SCHEDULE_MODElinearサンプリングスケジュール(linear / sway
IRODORI_SWAY_COEFF-1.0sway使用時の係数
IRODORI_CFG_SCALE_TEXT3.0テキスト条件のguidance scale
IRODORI_CFG_SCALE_CAPTION3.0Caption / ボイスデザイン条件のguidance scale
IRODORI_CFG_SCALE_SPEAKER5.0参照話者条件のguidance scale
IRODORI_MAX_REF_SECONDSチェックポイント側のデフォルト参照音声長の任意上限
TOMORI_TTS_MAX_TEXT_CHARS10001リクエストあたりのテキスト長上限