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 配方实现大规模部署。
🚀 快速入门(快速开始)
- 克隆仓库
git clone https://github.com/index-tts/index-tts.git && cd index-tts - 安装环境 – 项目使用现代 Python 包管理器 uv。
可选:如果网络较慢,可添加中文镜像(pip install -U uv # 安装 uv 本身 uv sync --all-extras # 创建 .venv 并安装所有依赖--default-index)。 - 下载模型(例如最新的 IndexTTS‑2.5)通过 Hugging Face CLI:
(您也可以使用uv tool install huggingface-hub hf download IndexTeam/IndexTTS-2.5 --local-dir=checkpointsmodelscope-hub,命令模式相同。) - 运行 Web UI(测试系统的最简单方式):
在浏览器中打开uv run webui.py # 默认使用 IndexTTS‑2.5 # 或者,使用旧版 2.0 模型: uv run webui.py --version 2 --model_dir ./checkpoints_2http://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 许可。
相关
- 项目
- 项目
- 项目
- 项目
- 项目