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 解决了三个具体场景:

  1. 快速音色克隆:内容创作、视频配音、有声书——只要有一小段参考音频,立刻生成多语言多情感语音
  2. 数字人/虚拟形象:克隆真人声音,配合数字人视频生成 pipeline,无需专业配音演员
  3. 多语言本地化:同一音色无缝切换中/英/日/西/阿五语,一个配音方案覆盖全球市场

快速安装

前置要求 - 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 为同步调用,长文本延迟较高

坑与注意

  1. CUDA 版本:README 明确要求 CUDA 12.8+,低于此版本会报 CUDA 错误。Windows 用户尤其注意显卡驱动版本。

  2. VRAM 消耗:WebUI 默认可能用 FP32/BF16 全精度;A10/V100 等 24G 显存的 GPU 足够,RTX 3060 12G 可跑但建议调低 batch 或关闭部分可选功能。

  3. 情感向量版本差异:IndexTTS-2.5 的 use_emo_text=True 需要构造 IndexTTS2 时传入 use_qwen_emo=True(否则 RuntimeError);IndexTTS-2 无此要求。

  4. 中文多音字:拼音注音需参考 checkpoints/pinyin.vocab,非所有汉字组合都支持。

  5. 参考音频质量:建议 10~30秒清晰语音,背景噪声过大会影响克隆质量。

  6. DeepSpeed 加速:效果因硬件/驱动/系统而异,并非所有情况都更快;建议先用默认设置对比,确认有效再启用。

  7. 版权与隐私:克隆真人声音需获得授权,仓库内置 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