index-tts/index-tts · 上手攻略
- 仓库:index-tts/index-tts
- 链接:https://github.com/index-tts/index-tts
- 分类:AI · 语音合成(TTS)
- 作者:Tom
- 更新:2026-08-19
这是什么
IndexTTS 是阿里巴巴 Index 团队开源的零样本(Zero-Shot)语音克隆系统,用一段参考音频(10~30秒)即可复刻任意人的音色,生成对应文本的语音。当前稳定版为 IndexTTS-2.5(2026年8月10日发布),支持中文、英语、日语、西班牙语、阿拉伯语五种语言,并在多语言跨音色任务上达到了开源 SOTA 水平。
核心能力: - 音色克隆:单段参考音频,无须训练即可克隆 - 情感控制:通过情感参考音频或 8 维情感向量(happy/angry/sad/afraid/disgusted/melancholic/surprised/calm)精细调节 - 语速控制:duration_factor 参数,范围 0.5x~2.0x - 发音控制:支持拼音(中文)、CMU 音素(英语)、日本假名(日语)细粒度注音 - 多语言跨音色:用中文音色提示即可生成英文等其他语言(zh→en/es/ja/ar) - vLLM 生产部署:可通过 vLLM-Omni 的 OpenAI 兼容 speech API 部署生产服务
IndexTTS-2.5 vs IndexTTS-2:2.5 推理速度更快,支持语言更多(+阿拉伯语),发音控制精度提升,情感向量维度一致但与 Qwen 模型联动(use_qwen_emo=True)。
解决什么问题
传统 TTS 的痛点:需要大量录音数据才能训练一个音色,周期长、成本高。IndexTTS 解决了三个具体场景:
- 快速音色克隆:内容创作、视频配音、有声书——只要有一小段参考音频,立刻生成多语言多情感语音
- 数字人/虚拟形象:克隆真人声音,配合数字人视频生成 pipeline,无需专业配音演员
- 多语言本地化:同一音色无缝切换中/英/日/西/阿五语,一个配音方案覆盖全球市场
快速安装
前置要求 - Python 3.10+ - NVIDIA GPU + CUDA 12.8+(注意:Windows 上 DeepSpeed 安装较困难,非必需可跳过) - 磁盘空间约 60GB(模型权重 + 临时文件)
# 1. 克隆仓库
git clone https://github.com/index-tts/index-tts.git && cd index-tts
# 2. 安装依赖(推荐 uv 包管理器)
pip install -U uv
uv sync --all-extras # 包含 webui / deepspeed 等所有可选功能
# 国内镜像(若下载慢):
# uv sync --all-extras --default-index "https://mirrors.aliyun.com/pypi/simple"
# 3. 下载模型权重(二选一)
# via HuggingFace
uv tool install "huggingface-hub"
hf download IndexTeam/IndexTTS-2.5 --local-dir=checkpoints
# via ModelScope(国内更快)
uv tool install "modelscope"
modelscope download --model IndexTeam/IndexTTS-2.5 --local_dir checkpoints
# 4. 诊断 GPU
uv run tools/gpu_check.py
# 5. 启动 WebUI
uv run webui.py # 默认启动 IndexTTS-2.5
# 或指定版本:
uv run webui.py --version 2 --model_dir ./checkpoints_2 # 启动 IndexTTS-2
# 浏览器打开 http://127.0.0.1:7860
⚠️ 首次启动 WebUI 会自动从 HuggingFace/ModelScope 下载示例音频(约数百 MB),若网络慢可提前设置镜像:
bash export HF_ENDPOINT="https://hf-mirror.com"
核心用法
WebUI(推荐入门)
启动后浏览器访问 http://127.0.0.1:7860,上传参考音频 + 输入文本,即可生成。支持:上传模板图生成特定场景人像、多人物生成、背景替换。
Python API(推荐生产)
import os
os.environ["PYTHONPATH"] = os.path.join(os.getcwd(), ".")
from indextts.infer_v2_5 import IndexTTS2
# 初始化(默认 BF16 推理,VRAM 更省)
tts = IndexTTS2(
cfg_path="checkpoints/config.yaml",
model_dir="checkpoints",
use_bf16=True
)
# 最基础调用:英文音色克隆
tts.infer(
spk_audio_prompt="examples/voice_01.wav", # 参考音频
text="Hello, this is a test of voice cloning.",
lang="EN",
output_path="gen.wav",
verbose=True
)
情感控制(三种方式)
# 方式 A:情感参考音频
tts.infer(
spk_audio_prompt="examples/voice_07.wav",
text="酒楼丧尽天良,开始借机竞拍房间,哎,一群蠢货。",
lang="ZH",
output_path="gen.wav",
emo_audio_prompt="examples/emo_sad.wav", # 悲伤情感参考
emo_alpha=0.9, # 情感强度 0.0~1.0
verbose=True
)
# 方式 B:8维情感向量([happy, angry, sad, afraid, disgusted, melancholic, surprised, calm])
tts.infer(
spk_audio_prompt="examples/voice_09.wav",
text="对不起嘛!我的记性真的不太好……",
lang="ZH",
output_path="gen.wav",
emo_vector=[0, 0, 0.8, 0, 0, 0, 0, 0], # sad=0.8
use_random=False,
verbose=True
)
# 方式 C:文本情感描述(需要 use_qwen_emo=True)
tts = IndexTTS2(cfg_path="checkpoints/config.yaml", model_dir="checkpoints", use_bf16=True, use_qwen_emo=True)
tts.infer(
spk_audio_prompt="examples/voice_12.wav",
text="快躲起来!是他要来了!",
lang="ZH",
output_path="gen.wav",
emo_alpha=0.6,
use_emo_text=True,
emo_text="你吓死我了!你是鬼吗?", # 情感由这段文字决定
use_random=False,
verbose=True
)
语速与发音控制
# 语速:duration_factor 0.5(加速)~ 2.0(减速)
tts.infer(spk_audio_prompt="examples/voice_01.wav",
text="大家好,欢迎来到 IndexTTS 的语速控制演示。",
lang="ZH", output_path="gen_slow.wav", duration_factor=1.2, verbose=True)
# 发音控制:<拼音|拼音> 或 <音素|音素> 注音
text = "他在银行走了半天,发现这笔业务办<行|HANG2>。"
tts.infer(spk_audio_prompt="examples/voice_01.wav", text=text, lang="ZH", output_path="gen.wav", verbose=True)
vLLM 生产部署
# 参考 vLLM Recipes:https://recipes.vllm.ai/IndexTeam/IndexTTS-2.5
# 通过 OpenAI 兼容 API 调用:
curl https://your-vllm-endpoint/v1/audio/speech \
-H "Authorization: Bearer $API_KEY" \
-d '{
"model": "IndexTeam/IndexTTS-2.5",
"input": "Hello world",
"voice": "demo_voice",
"extra_params": {"lang": "en", "emo_vector": [1,0,0,0,0,0,0,0], "emo_alpha": 0.8}
}' --output speech.wav
典型适用场景
| 场景 | 优势 | 注意 |
|---|---|---|
| 内容创作配音 | 5分钟克隆音色,零录音成本 | 需确保参考音频无版权争议 |
| 多语言本地化 | 同一音色覆盖5语种 | 中→阿跨语言 WER 偏高(arXiv 2601.03888 披露) |
| 数字人声音 | 配合数字人视频,情感/语速可精细控制 | 人脸+声音需分开部署 |
| 有声书/播客 | 可批量生成多角色不同情感色彩 | 长文本需分句拼接,注意韵律自然度 |
| 客服/语音助手 | 支持结构化输出(未来扩展) | 当前 API 为同步调用,长文本延迟较高 |
坑与注意
-
CUDA 版本:README 明确要求 CUDA 12.8+,低于此版本会报 CUDA 错误。Windows 用户尤其注意显卡驱动版本。
-
VRAM 消耗:WebUI 默认可能用 FP32/BF16 全精度;A10/V100 等 24G 显存的 GPU 足够,RTX 3060 12G 可跑但建议调低 batch 或关闭部分可选功能。
-
情感向量版本差异:IndexTTS-2.5 的
use_emo_text=True需要构造 IndexTTS2 时传入use_qwen_emo=True(否则 RuntimeError);IndexTTS-2 无此要求。 -
中文多音字:拼音注音需参考
checkpoints/pinyin.vocab,非所有汉字组合都支持。 -
参考音频质量:建议 10~30秒清晰语音,背景噪声过大会影响克隆质量。
-
DeepSpeed 加速:效果因硬件/驱动/系统而异,并非所有情况都更快;建议先用默认设置对比,确认有效再启用。
-
版权与隐私:克隆真人声音需获得授权,仓库内置 Contributor Covenant,禁止用于欺诈、诽谤等用途。
与同类对比
| 特性 | IndexTTS-2.5 | CosyVoice3 | Fish-Speech S2 Pro | Qwen3-TTS |
|---|---|---|---|---|
| 开源 | ✅ | ✅ | ✅ | ✅(部分) |
| 参数规模 | 0.8B | 0.5B / 1.5B | 4B | 1.7B |
| 语种 | 中英日西阿 | 中英日西 | 中英 | 中英 |
| 情感控制 | 8维向量+参考+文本 | 参考+向量 | 有限 | 有限 |
| 语速控制 | ✅ 0.5x~2x | 有限 | ❌ | ✅ |
| vLLM 支持 | ✅ | ❌ | ❌ | ❌ |
| WER(zh) | 4.36(CV3-Eval) | 3.84 | 3.62 | 3.27 |
| WER(en) | 5.12(CV3-Eval) | 4.88 | 3.83 | 5.06 |
⚠️ 上述 WER/SS 数字来自 arXiv 2601.03888(IndexTTS-2.5 技术报告),原始论文截止日期为 2026 年 8 月,数字未在本地复现,仅供参考。
IndexTTS-2.5 的核心优势是生产就绪:vLLM 部署、多语言、音色情感精细控制三者兼有,且中文表现强劲(SS 76.39);缺点是参数规模(0.8B)小于竞品,英文 WER 略高于部分竞品。
一句话推荐结论
IndexTTS-2.5 是目前开源零样本 TTS 中生产就绪度最高的选择——vLLM 部署、多语言覆盖、情感/语速/发音三维精细控制全部具备,克隆效果在中文场景达到 SOTA,适合内容创作、数字人、多语言本地化等直接落地场景。
来源
- GitHub README(含安装命令、Python API 示例):https://github.com/index-tts/index-tts
- arXiv 2601.03888(IndexTTS-2.5 技术报告):https://arxiv.org/abs/2601.03888
- arXiv 2506.21619(IndexTTS-2 论文):https://arxiv.org/abs/2506.21619
- vLLM Recipes for IndexTTS-2.5:https://recipes.vllm.ai/IndexTeam/IndexTTS-2.5
- HuggingFace:https://huggingface.co/IndexTeam/IndexTTS-2.5
- ModelScope:https://modelscope.cn/models/IndexTeam/IndexTTS-2.5