Models and technology

IndexTTS 2: control a voice and its emotion separately

Bilibili's IndexTTS 2 separates speaker identity from emotional expression. A character can keep the same voice while performance comes from another recording, manually chosen emotion strengths, or a text description. That offers a concrete editing workflow for dialogue and dramatic narration.

Bilibili · IndexTTS teamSources checked
Official GitHub
Developer
bilibili IndexTTS
Version covered
v2.0.0 / IndexTTS-2
Emotion inputs
Audio, eight-value vector, text
Python entry point
indextts.infer_v2.IndexTTS2

Strengths worth exploring

01

Direct identity and emotion independently

A speaker reference supplies timbre, while an emotional reference supplies style. This allows new combinations without finding a recording of that speaker performing every desired emotion.

Official source [2]
02

Mix eight emotion intensities

The public interface includes happy, angry, sad, afraid, disgusted, melancholic, surprised, and calm dimensions. A vector gives explicit control over the mix.

Official source [1]
03

Give emotion its own text direction

Infer emotion from the script or supply a separate description, so dialogue and acting notes can be edited independently.

Official source [1]

Separate research results from released features

The paper proposes precise duration control, but the v2.0.0 release explicitly says this feature is not enabled. A claim that this public release can accept an exact number of seconds for video synchronization would be misleading.

Official source [1]

Tune emotion around the line

The released examples expose emo_audio_prompt, emo_vector, and emo_text. Stronger emotion still needs to be checked for clarity and continuity; the guide recommends moderate strengths for text-based emotion modes.

Mixed Chinese/pinyin pronunciation control remains available for valid entries in the model's pinyin vocabulary.

Official source [1]

Usage and deployment

  1. Install Git, Git LFS, and uv, then prepare the supported GPU/PyTorch environment. The commands pin v2.0.0 to keep this guide aligned with its examples.
  2. Sync WebUI dependencies and download IndexTeam/IndexTTS-2 into checkpoints. Initial startup may also retrieve auxiliary models.
  3. Start uv run webui.py, choose a speaker reference, and test the desired emotion input. Use the release's IndexTTS2 examples for code integration.
IndexTTS 2bash
git clone --branch v2.0.0 https://github.com/index-tts/index-tts.git
cd index-tts
git lfs install
git lfs pull
uv sync --extra webui
uv tool install 'huggingface-hub[cli]'
hf download IndexTeam/IndexTTS-2 --local-dir checkpoints
uv run webui.py

Before you get started

  • Do not treat v2.0.0, later 2.x releases, and every paper experiment as the same runnable feature set.
  • The examples warn that random sampling may reduce voice similarity. Compare identity and speech clarity when changing emotion controls.

Where it fits

Useful for game characters, emotional dialogue, audiobooks, and workflows where one consistent speaker performs several moods.

Official resources and sources

  1. IndexTTS · v2.0.0 READMEhttps://github.com/index-tts/index-tts/tree/v2.0.0
  2. IndexTTS2 · Technical paperhttps://arxiv.org/abs/2506.21619
  3. IndexTeam/IndexTTS-2 · Model weightshttps://huggingface.co/IndexTeam/IndexTTS-2

DS Speech currently provides Qwen-Audio-3.0-TTS online. Other models in this library are documented for learning and self-deployment.

Explore more voice models

Qwen-Audio-3.0-TTSNatural-language delivery, emotion, and dialect controlOmniVoiceBroad language coverage with short-reference cloningIndexTTS 1.5Chinese/English cloning with targeted pronunciation correctionVoxCPMContinuous speech, contextual delivery, and detailed audio