一天一个开源项目(第60篇):IndexTTS - B 站开源的工业级零样本语音合成系统

0 阅读5分钟

引言

"The Future of Voice, Now Generating."

这是「一天一个开源项目」系列的第 60 篇文章。今天介绍的项目是 IndexTTSGitHub)。

想要工业级、可控、高效的零样本语音合成?IndexTTS 是 B 站 IndexTeam 开源的 零样本 TTS 系统音色克隆情感控制时长控制(IndexTTS2)。支持情感参考音频、情感向量、文本情感描述,实现情感与音色解耦,多语言(中英等),提供 WebUI 与 Python API,基于 uv 管理依赖。

你将学到什么

  • IndexTTS 的核心能力与架构
  • IndexTTS2 的情感控制与时长控制
  • 音色克隆、情感参考、文本情感的使用方式
  • 环境搭建与 WebUI 快速开始
  • 与同类 TTS 的对比

前置知识

  • 对 TTS、语音合成有基本了解
  • 有 NVIDIA GPU 与 CUDA 12.8+(推荐)

项目背景

项目简介

IndexTTS 是 B 站 IndexTeam 开源的工业级可控零样本 TTS 系统。用户提供一段参考音频即可克隆音色,同时可独立控制情感:通过情感参考音频、8 维情感向量或文本描述。IndexTTS2 进一步实现自回归 TTS 的精确时长控制,支持可控与不可控两种模式,情感与音色解耦,多语言表现优异。

团队

  • 团队:B 站 IndexTeam(indexspeech@bilibili.com
  • 核心作者:Wei Deng、Siyi Zhou、Jingchen Shu、Xun Zhou、Jinchao Wang 等
  • 社区:QQ 群、Discord

项目数据


主要功能

核心能力

能力说明
零样本音色克隆单段参考音频即可克隆音色
情感控制情感参考音频、8 维情感向量、文本情感描述
情感与音色解耦音色来自音色 prompt,情感来自情感 prompt,独立控制
时长控制IndexTTS2 支持精确时长控制(自回归 TTS 首例)
多语言中文、英文等,IndexTTS1.5 显著提升英文
拼音控制支持拼音标注精确发音

使用场景

  1. 视频配音:严格音画同步的时长控制
  2. 有声书/播客:情感丰富的朗读
  3. 游戏/虚拟角色:音色克隆 + 情感控制
  4. 多语言内容:中英双语合成

快速开始

环境要求:git、git-lfs、uv、CUDA 12.8+(推荐)

安装

git clone https://github.com/index-tts/index-tts.git && cd index-tts
git lfs pull
pip install -U uv
uv sync --all-extras

下载模型(IndexTTS-2):

uv tool install "huggingface-hub[cli,hf_xet]"
hf download IndexTeam/IndexTTS-2 --local-dir=checkpoints

启动 WebUI

uv run webui.py

访问 http://127.0.0.1:7860

Python 调用示例

from indextts.infer_v2 import IndexTTS2

tts = IndexTTS2(cfg_path="checkpoints/config.yaml", model_dir="checkpoints",
                use_fp16=True, use_cuda_kernel=False, use_deepspeed=False)

# 基础音色克隆
tts.infer(spk_audio_prompt='examples/voice_01.wav', text="Translate for me, what is a surprise!",
          output_path="gen.wav", verbose=True)

# 情感参考音频
tts.infer(spk_audio_prompt='examples/voice_07.wav', text="酒楼丧尽天良,开始借机竞拍房间,哎,一群蠢货。",
          output_path="gen.wav", emo_audio_prompt="examples/emo_sad.wav", verbose=True)

# 情感向量 [happy, angry, sad, afraid, disgusted, melancholic, surprised, calm]
tts.infer(spk_audio_prompt='examples/09.wav', text="对不起嘛!我的记性真的不太好~",
          output_path="gen.wav", emo_vector=[0, 0, 0.8, 0, 0, 0, 0, 0], verbose=True)

# 文本情感描述
tts.infer(spk_audio_prompt='examples/voice_12.wav', text="快躲起来!是他要来了!",
          output_path="gen.wav", use_emo_text=True, emo_alpha=0.6, verbose=True)

情感控制方式

方式参数说明
情感参考音频emo_audio_prompt从参考音频提取情感
情感向量emo_vector8 维:[happy, angry, sad, afraid, disgusted, melancholic, surprised, calm]
文本情感use_emo_text=Trueemo_text从文本或指定描述生成情感
情感强度emo_alpha0.0–1.0,默认 1.0

项目优势

对比项IndexTTS2传统 TTS其他零样本 TTS
时长控制精确可控(自回归首例)通常不可控多数不可控
情感控制多模态(音频/向量/文本)有限视模型而定
情感与音色解耦,独立控制常耦合常耦合
零样本单段参考即可需训练视模型而定
多语言中英等视模型而定视模型而定

项目详细剖析

版本演进

版本发布时间主要特性
IndexTTS-1.02025/03模型权重与推理代码
IndexTTS-1.52025/05稳定性提升、英文表现增强
IndexTTS-22025/09精确时长控制、情感解耦、多模态情感控制

技术要点

  • 自回归 + 时长控制:首次在自回归 TTS 中实现精确时长控制,适配视频配音等场景
  • GPT 潜在表示:增强高情感表达时的清晰度
  • 三阶段训练:提升生成稳定性
  • 软指令机制:基于 Qwen3 微调,用文本描述引导情感

推荐配置

  • FP16:降低显存、加速推理,质量损失很小
  • DeepSpeed:视硬件可能加速,需实测
  • CUDA 12.8+:确保正确安装

依赖管理

  • 仅支持 uv:官方明确要求使用 uv,conda/pip 可能导致依赖版本错误、GPU 不可用等问题
  • 国内镜像uv sync --all-extras --default-index "https://mirrors.aliyun.com/pypi/simple"

项目地址与资源

官方资源

适用人群

  • 需要高质量零样本 TTS 的开发者
  • 视频配音、有声书、播客制作者
  • 需要情感与音色独立控制的场景
  • 多语言语音合成需求

欢迎来我中的个人主页找到更多有用的知识和有趣的产品