index-tts/index-tts

An Industrial-Level Controllable and Efficient Zero-Shot Text-To-Speech System

📚 什么是 IndexTTS?

IndexTTS 是一个开源的零样本文本到语音(TTS)系统,仅需一个参考音频片段即可克隆语音。最新版本 IndexTTS‑2.5 支持五种语言(中文、英文、日文、西班牙文、阿拉伯文),并允许您控制:

  • 情感 – 通过情感参考音频、显式情感向量,或从文本中自动推断。
  • 语速 – 使用 duration_factor(0.5×‑2.0×)进行调节。
  • 发音 – 在输入文本中直接提供拼音、CMU音标或日文假名。
  • 音色 – 克隆的语音保留原说话人的音色,同时仍可更改语言。

该模型定位为“工业级”解决方案:运行速度足够快,可实现实时使用,支持半精度(BF16/FP16)推理,并可通过 vLLM 配方实现大规模部署。


🚀 快速入门(快速开始)

  1. 克隆仓库
    git clone https://github.com/index-tts/index-tts.git && cd index-tts
    
  2. 安装环境 – 项目使用现代 Python 包管理器 uv。
    pip install -U uv          # 安装 uv 本身
    uv sync --all-extras       # 创建 .venv 并安装所有依赖
    
    可选:如果网络较慢,可添加中文镜像(--default-index)。
  3. 下载模型(例如最新的 IndexTTS‑2.5)通过 Hugging Face CLI:
    uv tool install huggingface-hub
    hf download IndexTeam/IndexTTS-2.5 --local-dir=checkpoints
    
    (您也可以使用 modelscope-hub,命令模式相同。)
  4. 运行 Web UI(测试系统的最简单方式):
    uv run webui.py          # 默认使用 IndexTTS‑2.5
    # 或者,使用旧版 2.0 模型:
    uv run webui.py --version 2 --model_dir ./checkpoints_2
    
    在浏览器中打开 http://127.0.0.1:7860。UI 允许您上传参考语音、输入文本、选择语言,并调整上述控制参数。

🛠️ 核心功能

功能 工作方式 示例参数 / API 调用
零样本语音克隆 将单个参考 wav 作为 spk_audio_prompt 输入模型。 tts.infer(spk_audio_prompt='voice.wav', text='Hello')
情感控制 提供情感参考 wav(emo_audio_prompt)、8 维情感向量(emo_vector),或让模型从文本中推断情感(use_emo_text)。 emo_alpha=0.6, emo_vector=[0,0,0.8,0,0,0,0,0]
语速控制 使用 duration_factor(0.5‑2.0)缩放合成时长。 duration_factor=1.2(较慢)
发音控制 在输入文本中插入 `<phoneme X>` 标签。支持中文拼音、英文 CMU 音标、日文假名。
半精度推理 IndexTTS‑2.5 使用 BF16,IndexTTS‑2 使用 FP16,减少显存占用并加快生成速度。 use_bf16=True(构造函数)
DeepSpeed / 编译 CUDA 内核 适用于兼容 GPU 的可选加速。 安装时使用 --extra deepspeed
生产级部署 提供现成的 vLLM 配方(recipes.vllm.ai/IndexTeam/IndexTTS-2.5)。 参见链接中的配方页面

📦 模型库(预训练检查点)

模型 语言 演示 模型下载(HF / ModelScope)
IndexTTS‑2.5 ZH, EN, JA, ES, AR [演示页面] IndexTeam/IndexTTS-2.5
IndexTTS‑2 ZH, EN [演示页面] IndexTeam/IndexTTS-2
IndexTTS‑1.5 ZH, EN [演示页面] IndexTeam/IndexTTS-1.5
IndexTTS‑1 ZH, EN [演示页面] IndexTeam/Index-TTS

🧑‍💻 使用 Python API(代码片段)

# 初始化(选择您下载的版本)
from indextts.infer_v2_5 import IndexTTS2   # 用于 2.5
tts = IndexTTS2(
    cfg_path='checkpoints/config.yaml',
    model_dir='checkpoints',
    use_bf16=True,          # 半精度
)

# 简单语音克隆
tts.infer(
    spk_audio_prompt='examples/voice_01.wav',
    text='Hello world',
    lang='EN',
    output_path='gen.wav',
    verbose=True,
)

# 情感 + 语速控制
tts.infer(
    spk_audio_prompt='examples/voice_07.wav',
    text='这是一段情绪化的中文',
    lang='ZH',
    emo_audio_prompt='examples/emo_sad.wav',
    emo_alpha=0.8,
    duration_factor=0.9,
    output_path='emo.wav',
)

相同模式也适用于旧版 IndexTTS2 类(indextts.infer_v2)。


📊 报告性能

作者在 CV3‑Eval 套件(多语言语音质量与跨语言合成)上提供了两个基准测试表。旗舰版 IndexTTS‑2.5‑RL(强化学习变体)亮点如下:

  • 五种语言平均词错误率(WER)≈ 6 %。
  • 平均主观评分(SS)≈ 73 / 100,与更大模型(如拥有 20 亿参数的 VoxCPM2)相当。
  • 模型大小:0.8 B 参数 – 显著小于许多竞争系统。

🛡️ 许可与社区

  • 许可:仓库采用 Apache‑2.0 许可(如仓库中 LICENSE 文件所示)。允许商业使用、修改和再分发。
  • 社区:提供 Discord 服务器用于支持,项目在 README 中保留 Discord 标记。可通过 GitHub 提交问题和拉取请求。

📚 何时使用 IndexTTS?

  • 多语言语音克隆的快速原型开发。
  • 交互式应用(如虚拟助手、游戏角色),需要低延迟 TTS 并具备可控情感与语速。
  • 研究:零样本多语言 TTS、语音克隆或可控语音合成。
  • 生产环境 – vLLM 配方与半精度推理使其具备大规模部署可行性。

🎯 总结

IndexTTS 是一个真实、开源、零样本多语言 TTS 引擎,仅需一个音频片段即可克隆语音,并提供对情感、语速和发音的精细控制。它附带即用的预训练模型、基于 uv 的简易安装方式、Web UI 和 Python API,并可通过 vLLM 部署至生产环境。该项目持续维护(最新版本 2.5 发布于 2026 年 8 月),并采用 Apache‑2.0 许可。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目