Skip to content

IrodoriTTS

Irodori-TTS v4.1 is a Japanese-focused TTS model with voice cloning and caption-based VoiceDesign in one checkpoint. TomoriBot runs it through the local FastAPI wrapper in servers/tts/irodoritts/.

The default model is Aratako/Irodori-TTS-v4.1-Small. Compatible Hugging Face checkpoints can be selected with IRODORI_TTS_MODEL_ID, including community fine-tunes such as phasefield-audio/Irodori-TTS-v4.1-Anime.

Irodori now uses uv for dependency and PyTorch backend management. Install uv first, then run the setup script from the TomoriBot repo root.

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

The setup scripts create servers/tts/irodoritts/.venv, so bun run launch --irodoritts continues to work after installation.

Available backends are:

  • cu128: NVIDIA CUDA 12.8 on Windows/Linux
  • cpu: CPU-only, or macOS CPU/MPS through PyPI
  • rocm: AMD ROCm on Linux/WSL
  • xpu: Intel XPU on Windows/Linux

The default endpoint URL is http://127.0.0.1:8013.

The default model is Aratako/Irodori-TTS-v4.1-Small. Compatible Hugging Face repositories, community fine-tunes (such as phasefield-audio/Irodori-TTS-v4.1-Anime), or local checkpoint files can be configured via environment variables.

When starting the sidecar (directly with Python or via bun run launch --irodoritts), the server automatically reads the repository root .env (or a local .env in servers/tts/irodoritts/) and logs the active model ID on startup.

Add to your .env in the TomoriBot root:

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

In 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

On 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

If you have downloaded a checkpoint file (.pt or .safetensors) locally, set IRODORI_TTS_CHECKPOINT to its path:

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

Current Irodori downloads the checkpoint together with any tokenizer assets bundled in the Hugging Face repo. Hugging Face subfolder variants are also supported by IRODORI_TTS_MODEL_ID when the model repo provides them.

Run /providers, choose Add New Custom Endpoint, and use the speech API compatibility:

  • API Compatibility: tts-clone
  • endpoint_url: http://127.0.0.1:8013

After saving the connection, select it and use its model dropdown to add a Speech model. For v4.1, the recommended settings are:

  • Voice Source Mode: Auto
  • Script Markup Style: Emoji

Auto lets the same Irodori endpoint support both TomoriBot voice modes, so emotion cues survive the send:

  • Personas with a voice sample assigned under Persona > Voice send a stored reference clip for voice cloning.
  • Personas with a VoiceDesign prompt set under Persona > Voice send the saved natural-language prompt as Irodori caption conditioning.

You can still choose Voice Clone as the Voice Source Mode if you only want reference-audio voice cloning.

Use /providers for endpoint registration and model setup. Then open /config > Models > Switch Models to select and activate the registered endpoint.

  1. Prepare a clean 10-20 second Japanese voice clip with one speaker and no background music.
  2. Open /config under Models > TTS Parameters & Voices and upload the clip.
  3. Open /config under Persona > Voice, then choose the persona and the voice sample.

Irodori v4.1 supports longer reference conditioning than the old v2 model, but clean source audio remains more important than raw duration.

  1. Open /config under Persona > Voice.
  2. Choose the persona.
  3. Enter a natural-language description of the desired voice and delivery.

TomoriBot sends this prompt as instruct; the Irodori wrapper maps it to the v4.1 caption condition. VoiceDesign requests do not require a stored reference clip.

TomoriBot strips Discord custom emoji syntax before sending text to TTS. With script_markup: emoji, Unicode emojis are preserved for Irodori’s text conditioning.

The default remains Irodori’s higher-quality 40-step linear sampling. For lower latency, try Sway Sampling with fewer steps:

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

This is an inference quality/speed tradeoff, so test it with your chosen checkpoint and voices before making it permanent.

The previous TomoriBot installer cloned and patched Irodori’s pyproject.toml, manually installed dacvae, and pinned an old v2-era Irodori commit. Those workarounds were necessary for the older upstream package layout but are no longer appropriate for current Irodori.

The sidecar now has its own pyproject.toml and follows upstream’s uv backend setup. Irodori and dacvae remain pinned to known commits there for reproducible installs, but TomoriBot no longer modifies upstream source code during installation.

VariableDefaultPurpose
IRODORI_TTS_MODEL_IDAratako/Irodori-TTS-v4.1-SmallHugging Face model repo or supported repo/subfolder source
IRODORI_TTS_CHECKPOINTunsetOptional local .pt or .safetensors checkpoint; overrides the Hugging Face model
TOMORI_TTS_HOST127.0.0.1Server bind address
TOMORI_TTS_PORT8013Server port
IRODORI_MODEL_DEVICEautoModel device (auto, cuda, cpu, mps, xpu)
IRODORI_CODEC_DEVICEautoCodec device
IRODORI_MODEL_PRECISIONbf16 on CUDA, otherwise fp32Model precision
IRODORI_CODEC_PRECISIONfp32Codec precision
IRODORI_COMPILE_MODELfalseEnable torch.compile for the Irodori model
IRODORI_COMPILE_DYNAMICfalseEnable dynamic shapes when compiling
IRODORI_NUM_STEPS40Euler sampling steps
IRODORI_T_SCHEDULE_MODElinearSampling schedule (linear or sway)
IRODORI_SWAY_COEFF-1.0Sway coefficient when using the sway schedule
IRODORI_CFG_SCALE_TEXT3.0Text guidance scale
IRODORI_CFG_SCALE_CAPTION3.0Caption / VoiceDesign guidance scale
IRODORI_CFG_SCALE_SPEAKER5.0Reference-speaker guidance scale
IRODORI_MAX_REF_SECONDScheckpoint defaultOptional cap on reference audio duration
TOMORI_TTS_MAX_TEXT_CHARS1000Per-request text length cap