{
  "hf_id": "IndexTeam/IndexTTS-2.5",
  "meta": {
    "title": "IndexTTS-2.5",
    "slug": "indextts-2-5",
    "provider": "IndexTeam",
    "description": "Multilingual zero-shot voice-cloning TTS with native speed, emotion, and text-normalization controls, served through vLLM-Omni's OpenAI-compatible speech API.",
    "date_added": "2026-08-10",
    "date_updated": "2026-08-12",
    "tasks": [
      "omni"
    ],
    "related_recipes": [
      "Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice",
      "zai-org/GLM-TTS",
      "OpenMOSS-Team/MOSS-TTS"
    ]
  },
  "model": {
    "model_id": "IndexTeam/IndexTTS-2.5",
    "min_vllm_version": "0.27.0",
    "architecture": "dense",
    "parameter_count": "Undisclosed",
    "active_parameters": "Undisclosed",
    "context_length": 0,
    "base_args": [
      "--trust-remote-code"
    ],
    "base_env": {},
    "install": {
      "pip": {
        "command": "uv pip install \"vllm-omni[indextts2] @ git+https://github.com/vllm-project/vllm-omni.git\"",
        "note": "IndexTTS-2.5 support is included in vLLM-Omni; see the upstream IndexTTS-2.5 recipe for deployment details."
      }
    }
  },
  "omni": {
    "port": 8092,
    "tasks": [
      {
        "id": "t2a",
        "label": "Text → Speech",
        "model_id": "IndexTeam/IndexTTS-2.5",
        "endpoint": "/v1/audio/speech",
        "description": "Multilingual voice cloning with native speed and emotion controls (22.05 kHz mono WAV)",
        "curl": "curl -X POST http://localhost:8092/v1/audio/speech \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"model\": \"IndexTeam/IndexTTS-2.5\",\n    \"input\": \"你好，这是 IndexTTS-2.5 语音合成测试。\",\n    \"voice\": \"demo_voice\",\n    \"speed\": 1.0,\n    \"response_format\": \"wav\",\n    \"extra_params\": {\n      \"lang\": \"zh\",\n      \"text_normalization\": true\n    }\n  }' --output output.wav\n"
      }
    ]
  },
  "features": {},
  "opt_in_features": [],
  "variants": {
    "default": {
      "precision": "bf16",
      "vram_minimum_gb": 96,
      "description": "Native BF16 bundle using the standard two-stage single-GPU deploy profile; lower-memory configurations have not been characterized"
    }
  },
  "hardware_overrides": {},
  "guide": "## Overview\n\nIndexTTS-2.5 is a two-stage text-to-speech system: an autoregressive talker\nproduces semantic codes, then EnhancedCodec, S2Mel CFM/DiT, and BigVGAN\nsynthesize **22.05 kHz mono WAV** audio. The vLLM-Omni integration exposes\nzero-shot voice cloning, reusable named voices, multilingual text processing,\ntext normalization, model-native speed control, and three emotion-conditioning\nmodes through `/v1/audio/speech`.\n\nThe model is available from\n[IndexTeam/IndexTTS-2.5 on Hugging Face](https://huggingface.co/IndexTeam/IndexTTS-2.5).\n\n## Prerequisites\n\n- Download access to [IndexTeam/IndexTTS-2.5 on Hugging Face](https://huggingface.co/IndexTeam/IndexTTS-2.5).\n  vLLM-Omni also accepts an already-downloaded native bundle and its nested\n  upstream `checkpoints/` layout.\n- Use a CUDA GPU with enough memory for both stages. The standard deploy\n  config reserves up to `0.4` GPU-memory utilization per stage on one GPU;\n  lower-memory profiles have not been validated.\n- Follow the merged\n  [vLLM-Omni IndexTTS-2.5 recipe](https://github.com/vllm-project/vllm-omni/blob/main/recipes/IndexTeam/IndexTTS-2_5.md)\n  for the upstream serving requirements.\n\n## Installation\n\n```bash\nuv venv && source .venv/bin/activate\nuv pip install \"vllm-omni[indextts2] @ git+https://github.com/vllm-project/vllm-omni.git\"\n```\n\n## Launch the server\n\nIndexTTS-2.5's standard two-stage deploy config is selected automatically:\n\n```bash\nvllm serve IndexTeam/IndexTTS-2.5 \\\n  --omni \\\n  --trust-remote-code \\\n  --port 8092\n```\n\n## Quick start: upload and reuse a voice\n\nUpload a reference recording once. The voice-storage API requires a consent\nidentifier:\n\n```bash\ncurl -X POST http://localhost:8092/v1/audio/voices \\\n  -F \"audio_sample=@/path/to/reference.wav\" \\\n  -F \"consent=user-consent-id\" \\\n  -F \"name=demo_voice\" \\\n  -F \"speaker_description=IndexTTS-2.5 demo voice\"\n```\n\nReuse that speaker by name:\n\n```bash\ncurl -X POST http://localhost:8092/v1/audio/speech \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"model\": \"IndexTeam/IndexTTS-2.5\",\n    \"input\": \"你好，这是复用已上传音色的语音合成测试。\",\n    \"voice\": \"demo_voice\",\n    \"response_format\": \"wav\",\n    \"extra_params\": {\"lang\": \"zh\", \"text_normalization\": true}\n  }' --output named_voice.wav\n```\n\nUse `ref_audio` instead of `voice` to clone directly from a URL, data URL, or\npermitted `file://` URI. There are no built-in text-only preset speakers.\n\n## Language and text controls\n\nIndexTTS-2.5 officially supports `zh` (Chinese), `en` (English), `ja`\n(Japanese), `es` (Spanish), and `ar` (Arabic). Pass the corresponding code\nthrough `extra_params.lang`. vLLM-Omni also provides `zhen` as an additional\nChinese-English mixed-text preprocessing mode; it is not a separate model\nlanguage. Text normalization is enabled by default:\n\n```json\n{\n  \"input\": \"Hello，欢迎使用 IndexTTS 二点五。\",\n  \"voice\": \"demo_voice\",\n  \"extra_params\": {\n    \"lang\": \"zhen\",\n    \"text_normalization\": true\n  }\n}\n```\n\nSpanish and Arabic requests use `\"lang\": \"es\"` and `\"lang\": \"ar\"`,\nrespectively. Cantonese (`yue`) is not listed as an officially supported\nIndexTTS-2.5 language.\n\nFor Japanese, write numbers, dates, and percentages as readable Japanese\ntext because the Japanese tokenizer does not automatically expand them.\n\n## Native speed control\n\n`speed` accepts values from `0.5` to `2.0`. Values above `1.0` produce shorter,\nfaster speech. vLLM-Omni maps the public API convention to the model-native\n`duration_factor = 1 / speed`, so the audio waveform is not post-resampled:\n\n```bash\ncurl -X POST http://localhost:8092/v1/audio/speech \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"model\": \"IndexTeam/IndexTTS-2.5\",\n    \"input\": \"这是使用模型原生语速控制的测试。\",\n    \"voice\": \"demo_voice\",\n    \"speed\": 1.5,\n    \"extra_params\": {\"lang\": \"zh\"}\n  }' --output speed_1_5.wav\n```\n\n## Emotion control\n\nIndexTTS-2.5 supports an eight-value emotion vector, an emotion description,\nor a separate emotion-reference recording. `emo_alpha` controls conditioning\nstrength from `0` to `1`.\n\nExplicit vector order: `happy`, `angry`, `sad`, `afraid`, `disgusted`,\n`melancholic`, `surprised`, `calm`:\n\n```json\n{\n  \"input\": \"今天真是令人开心的一天！\",\n  \"voice\": \"demo_voice\",\n  \"extra_params\": {\n    \"lang\": \"zh\",\n    \"emo_vector\": [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],\n    \"emo_alpha\": 0.8\n  }\n}\n```\n\nInfer emotion from text:\n\n```json\n{\n  \"input\": \"我们终于完成了这项工作！\",\n  \"voice\": \"demo_voice\",\n  \"extra_params\": {\n    \"lang\": \"zh\",\n    \"use_emo_text\": true,\n    \"emo_text\": \"开心、兴奋而且充满活力\",\n    \"emo_alpha\": 0.8\n  }\n}\n```\n\nTransfer expression from another recording while preserving the uploaded\nspeaker identity:\n\n```json\n{\n  \"input\": \"请用情绪参考音频中的表达方式朗读这句话。\",\n  \"voice\": \"demo_voice\",\n  \"extra_params\": {\n    \"lang\": \"zh\",\n    \"emo_audio\": \"file:///path/to/emotion_reference.wav\",\n    \"emo_alpha\": 0.8\n  }\n}\n```\n\nWhen several emotion sources are supplied, precedence is `use_emo_text` >\n`emo_vector` > `emo_audio` > the speaker-reference emotion.\n\n## Validation notes\n\nThe integration has completed end-to-end generation with voice cloning and\nWhisper-small transcript checks. In the fixed-seed Chinese validation,\n`speed=1.0` produced 5.503 s and `speed=2.0` produced 2.752 s; both matched\nthe requested sentence. These measurements are functional evidence, not a\ngeneral throughput claim.\n\n## References\n\n- [IndexTTS-2.5 model page](https://huggingface.co/IndexTeam/IndexTTS-2.5)\n- [vLLM-Omni IndexTTS-2.5 recipe](https://github.com/vllm-project/vllm-omni/blob/main/recipes/IndexTeam/IndexTTS-2_5.md)\n- [vLLM-Omni repository](https://github.com/vllm-project/vllm-omni)\n",
  "source": {
    "source": "vllm-omni",
    "repo": "vllm-project/vllm-omni",
    "ref": "main",
    "sha": "cda4a1ef83b295ba332146a7709e6277725edc9f",
    "path": "recipes/models/IndexTeam/IndexTTS-2.5.yaml",
    "edit_url": "https://github.com/vllm-project/vllm-omni/edit/main/recipes/models/IndexTeam/IndexTTS-2.5.yaml",
    "overlays": []
  }
}