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

引言

"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+(推荐)

安装

bash 复制代码
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):

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

启动 WebUI

bash 复制代码
uv run webui.py

访问 http://127.0.0.1:7860

Python 调用示例

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_vector 8 维:[happy, angry, sad, afraid, disgusted, melancholic, surprised, calm]
文本情感 use_emo_text=Trueemo_text 从文本或指定描述生成情感
情感强度 emo_alpha 0.0--1.0,默认 1.0

项目优势

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

项目详细剖析

版本演进

版本 发布时间 主要特性
IndexTTS-1.0 2025/03 模型权重与推理代码
IndexTTS-1.5 2025/05 稳定性提升、英文表现增强
IndexTTS-2 2025/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 的开发者
  • 视频配音、有声书、播客制作者
  • 需要情感与音色独立控制的场景
  • 多语言语音合成需求

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

相关推荐
Ian在掘金1 天前
从零实现一个 PDF 智能问答系统
人工智能·langchain
飞Link1 天前
智能体时代的“紧箍咒”:深度解析 Agent 治理架构与 AI 杀伤开关
人工智能·架构
飞Link1 天前
2000 亿砸向算力:字节跳动 AI 基建跨越,后端与运维的“万亿 Token”生死战
运维·人工智能
zhangfeng11331 天前
小龙虾 wordbuddy 安装浏览器控制器 agent-browser npm install -g agent-browse
前端·人工智能·npm·node.js
阿里云大数据AI技术1 天前
一条 SQL 生成广告:Hologres 如何实现素材生成到投放分析一体化
人工智能·sql
liudanzhengxi1 天前
GitSubmodule避坑全攻略
人工智能·新人首发
用户425210800601 天前
Claude Code Linux 服务器部署与配置
人工智能
OJAC1111 天前
学过Python却不敢投AI岗,他最后拿下12K offer
人工智能
Bigger1 天前
因为看不懂小棉袄的画,我写了个 AI 程序帮我“翻译”她的世界
前端·人工智能·ai编程
CeshirenTester1 天前
LangChain的工具调用 vs 原生Skill API:性能差在哪儿?
java·人工智能·langchain