Iroha-TTS-V1 — an original anime character illustration for expressive Japanese TTS

Iroha-TTS-V1

Give every line a little more character.

Expressive Japanese TTS for character dialogue. Clone a voice, choose an emotion, adjust its intensity, and explore different takes on the same line. Built with Fish Audio. Based on Fish Audio S2-Pro.

Generate speech360° ASMRAudio demoVideo demoBlog

Features · Quick start · Parameters · Agent guide · 中文

Features

One original anime character expressing joy, anger, sadness and surprise

01 · Direct the emotion

Give one character joy, anger, sadness or surprise with a simple tag.

[happy] [angry] [sad] [surprised]

02 · Dial in the intensity

Choose one of four presets, or pass a float within the supported range to explore the space between them.

weakest → weak → default → strong
intensity=-0.015

03 · Turn the mood mid-line

Move from delight to sadness within one generation, without stitching separate audio clips.

[happy]やっと会えた。[sad]でも、もうお別れだね。

04 · Your voice, in character

Clone a voice from a short reference recording and its transcript, then explore different expressions.

Reference audio + transcript

05 · More than spoken words

Place laughter, sighs or crying where the scene calls for them.

[laugh] [sigh] [cry]

06 · Tell it in a whisper

Use a whisper tag for quiet dialogue and close-up moments.

[whisper]ここだけの話だよ。

07 · Give names their reading

Add kana to names, rare words and heteronyms to specify how they should be pronounced.

水神[すいじん] / 水神[みずかみ]

Intensity control is experimental: continuous coefficients do not imply a linear perceptual response. Crying, whispering and voice matching vary with the line and reference. The illustrations show expressions; the reference audio determines the voice. Hear more scenes →

Quick start

Linux · Python 3.12 · NVIDIA GPU with at least 28 GB free VRAM. First use downloads about 11 GB of base weights. Run with an HF login that has access to this repository:

python3.12 -m venv .venv
source .venv/bin/activate
pip install -U huggingface_hub
hf download IrohaStudio/Iroha-TTS --local-dir Iroha-TTS
cd Iroha-TTS
pip install -r requirements.txt

python infer.py \
  --text "やっと会えたね!ずっと待ってたんだよ。" \
  --emotion joy --intensity -0.015 --seed 7 \
  --ref my_voice.wav --ref-text "Exact transcript of the reference recording" \
  --out joy.wav

Replace my_voice.wav and the reference text with your recording and its accurate transcript. Output is 44.1 kHz WAV. Change --seed for another take; without a reference, the voice may also change with the seed.

For more details, ask your agent to read AGENT_GUIDE.md. It covers pinned downloads, Python / JSONL usage, parameter combinations, configuration and troubleshooting.

Parameters

Parameter Default Purpose
--text / --jsonl Choose one Single line / batch input
--emotion none joy, anger, sadness, surprise; neutral / none add no emotion tag
--intensity Unset (α=0) Four presets or an in-range float; shipped range [-0.06, 0.045]
--ref / --ref-text None Reference recording and accurate transcript, supplied together
--seed 0 Choose another integer to explore a different take
--guidance Whisper 1.5, others 0 Vocal-event guidance; 0 disables it; separate from emotion intensity
--max-frames 400 Generation limit, about 18.6 seconds; no automatic sentence splitting
--no-argmax Off Also sample residual codebooks
--out / --out-dir out.wav / outputs Single output file / batch output directory
--model Bundled model/ Model configuration and weights
--base Cache/download Optional local Fish S2-Pro base directory
--device cuda Inference device

Presets: weakest=-0.06, weak=-0.03, default=0, strong=0.045. Floats such as -0.015 are used directly, without snapping to a preset. Nonzero intensity needs an explicit choice of one of the four emotions and text without emotion or vocal-event tags. Use default intensity for transitions, laughter, sighs, crying and whispers.

Full parameter rules and configuration → AGENT_GUIDE.md

With emotion (joy, anger, sadness, surprise)

ModelAccuracy
emo2vec large
Accuracy
EmoRuler
Joy / Anger /
Sadness / Surprise %
EmoRuler
Fish S2 Pro (original)
Starting point, no fine-tuning
17.9%6.0%6 / 0 / 9 / 9
Ours
Fish S2 Pro + SFT + reinforcement learning
85.6%93.3%91 / 94 / 95 / 93
Fish Audio Drama 3
Latest open-source Fish model · 35B MoE (3B active)
32.1%21.2%32 / 14 / 21 / 18
IndexTTS-2.5
Open source · bilibili
40.2%30.6%65 / 18 / 19 / 20
Irodori-TTS-v4-Large · text description
Open source · Aratako
30.8%20.6%34 / 23 / 8 / 17
Irodori-TTS-v4-Large · emoji
Open source · Aratako
20.0%9.8%17 / 2 / 8 / 12
Chatterbox
Open source · Resemble
Cannot specify emotion with tags

With / Without emotion

ModelWith emotionWithout emotion
Speaker
similarity
Audio quality
UTMOS
CERSpeaker
similarity
Audio quality
UTMOS
CER
Fish S2 Pro (original)
Starting point, no fine-tuning
0.6853.515.6%0.6843.576.2%
Ours
Fish S2 Pro + SFT + reinforcement learning
0.6363.555.8%0.6943.784.8%
Fish Audio Drama 3
Latest open-source Fish model · 35B MoE (3B active)
0.6283.267.0%0.6533.439.3%
IndexTTS-2.5
Open source · bilibili
0.6122.266.9%0.7142.916.0%
Irodori-TTS-v4-Large · text description
Open source · Aratako
0.6493.036.0%0.6623.095.7%
Irodori-TTS-v4-Large · emoji
Open source · Aratako
0.6513.036.5%0.6623.095.7%
Chatterbox
Open source · Resemble
Cannot specify emotion with tags0.6753.346.5%

Subjective Listening Test MOS (Japanese)

ModelNaturalness ↑Emotion
match ↑
Speaker
similarity ↑
Overall
score ↑
Win
share ↑
Ours3.844.203.523.8531.7%
Fish Audio Drama 33.973.643.453.6923.2%
Irodori-TTS-v4-Large · text description3.613.953.323.6328.1%
Fish S2 Pro (original)3.752.933.723.4712.1%
IndexTTS-2.52.353.492.812.884.9%

All three dimensions are rated by human listeners on a five-point scale (MOS). The overall score is the unweighted mean of the three dimensions. Win share: the five models are compared for each listener–sentence pair, with ties for first place splitting the win equally.

Pairwise Win Rates

Pairwise win rates for Ours, based on the overall score, with ties counted as half a win:

ComparisonOurs win rate ↑
vs. Fish S2 Pro (original)69.3%
vs. Fish Audio Drama 358.0%
vs. Irodori-TTS-v4-Large · text description58.7%
vs. IndexTTS-2.582.7%

Binaural post-processing

spatial/ places finished speech around the listener's head for headphones, as in the whisper demo: circling, sweeping or held at one spot. It is a separate step, not a model feature, and needs no GPU.

pip install -r spatial/requirements.txt
python spatial/binaural.py --in a.wav b.wav --start -90 --turns 2 --near 0.8 --out orbit.wav

TODO

  • Support more emotion and paralinguistic tags.
  • Support emotion intensity control with all tags.
  • Release Qwen3-TTS, Ming-3.0-tts, and OmniVoice models trained with a similar approach.
  • Provide a WebUI for deploying different models and add support for sglang-omni.
  • Release the GitHub project.

Contact

For technical questions, please contact ake.speechai@gmail.com.

License

This model is licensed under the Fish Audio Research License, Copyright © 39 AI, INC. All Rights Reserved (LICENSE.md). It is a Derivative Work of Fish Audio S2-Pro: research and non-commercial use is free; any commercial use requires a separate license from Fish Audio (fish.audio, business@fish.audio). The Fish S2-Pro weights are not included here and are downloaded from Fish Audio's repository under the same license. What was changed is listed in NOTICE. The inference code written for this release (emotts/, infer.py) is also available under the MIT License (LICENSE-MIT). spatial/binaural.py is under the MIT License, and the measured HRIRs in spatial/hrir/ are by TH Köln under CC BY-SA 3.0 (details).

Downloads last month
458
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for IrohaStudio/Iroha-TTS

Base model

fishaudio/s2-pro
Finetuned
(20)
this model

Spaces using IrohaStudio/Iroha-TTS 2