IndexTTS2 — B站开源的情感可控零样本语音克隆
> 一句话版本:B站(Bilibili)开源的 TTS 模型,给一段 3 秒音频就能克隆声音,还能精确控制情感(8 种情绪)和时长(毫秒级),效果被认为接近 ElevenLabs。20K stars,完全开源可本地部署。
| 项目 | 信息 | |
|---|---|---|
| 来源 | https://github.com/index-tts/index-tts | |
| 创建时间 | 2025-02-06 | |
| Stars | 20,059 | Forks 2,465 |
| 语言 | Python | |
| 开发者 | Bilibili IndexTeam | |
| 训练数据 | 55,000 小时多语言语料(中英日) | |
| 发布日期 | 2025-09-08(IndexTTS2) | |
| 许可证 | B站自定义许可证(非标准开源协议,商用有条件) |
核心内容
四大核心能力
1. 零样本声音克隆
- 只需一段任意语言的音频文件(3-10 秒即可)
- 精确复刻音色、节奏、说话风格
- 输出支持中英文
2. 情感-音色分离控制
- 8 种基本情绪:开心、愤怒、悲伤、恐惧、厌恶、忧郁、惊讶、平静
- 4 种控制方式:
- 情绪滑块(最推荐"忧郁"选项,效果最自然)
- 参考音频(给一段带情感的音频)
- 文字描述("用悲伤的语气说")
- 8 维情感向量(专业调参)
3. 精确时长控制(世界首创)
- 第一个支持精确时长控制的自回归 TTS 模型
- 毫秒级精度
- 指定时长模式:明确指定生成音频长度
- 自由时长模式:自然节奏生成
- 完美适配视频配音需求
4. 多模态情感输入
- 音频 + 文字
- 情感音频 + 目标文字
- 情感描述文字 + 目标文字
- 情感向量 + 目标文字
竞品对比
| 特性 | IndexTTS2 | MaskGCT | F5-TTS | ElevenLabs |
|---|---|---|---|---|
| 声音克隆 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 情感控制 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐ |
| 时长控制 | ⭐⭐⭐⭐⭐ | ❌ | ❌ | ❌ |
| 本地部署 | ✅ | ✅ | ✅ | ❌ |
| 开源 | ✅ 完全开源 | ✅ | ✅ | ❌ |
| 商用 | ✅ | ✅ | ✅ | 付费 |
| 价格 | 免费 | 免费 | 免费 | $5-99/月 |
快速使用
# 克隆仓库
git clone https://github.com/index-tts/index-tts.git
cd index-tts
# 安装依赖(推荐用 uv)
uv sync --all-extras
# 下载模型
hf download IndexTeam/IndexTTS-2 --local-dir=checkpoints
# 启动 Web UI
uv run webui.py
# Python API
from indextts.infer_v2 import IndexTTS2
tts = IndexTTS2(cfg_path="checkpoints/config.yaml", model_dir="checkpoints")
tts.infer(spk_audio_prompt='voice.wav',
text="你好,这是IndexTTS2测试",
output_path="output.wav")
社区评价
- "最真实、最有表现力的 TTS 模型"(Reddit LocalLLaMA)
- "语音质量好到可以用它配音看完整部电影"(Reddit)
- "效果比 ElevenLabs 还强"(中文技术社区)
- "电影级 TTS!结果可以达到电影级质量"(@karminski3)
商用许可证分析
IndexTTS2 使用的是B站自定义许可证(不是 Apache/MIT 等标准开源协议)。
✅ 允许
- 全球范围内免费使用(包括商用)
- 免版税
- 可以修改、微调、量化、LoRA
- 可以分发衍生作品
⚠️ 限制条件
- 月活 > 1 亿 或 年收入 > 10 亿人民币:必须单独向 B站申请许可证
- 不可转让:许可证不能转给第三方
- 不可用于改进其他 AI 模型:只能改进 IndexTTS2 本身或非商业 AI 模型
- 禁止高风险场景:医疗诊断、自动驾驶、军事、大规模生物监控等
- 衍生作品必须声明:修改后的模型必须声明"原始权利人不认可、不担保"
⚠️ 法律风险
- 用户承担全部侵权责任:生成语音侵犯第三方版权/肖像权/隐私权,B站不负责
- 管辖权在中国:适用中国法律,上海仲裁委员会仲裁
- 声音克隆的肖像权:克隆别人声音商用需获得被克隆者授权(独立法律问题,与许可证无关)
和其他 TTS 许可证对比
| 模型 | 商用 | 限制 |
|---|---|---|
| **IndexTTS2** | ✅ 免费 | >10亿营收需单独申请,不可转让 |
| **F5-TTS** | ✅ CC-BY-NC 4.0 | 非商业 |
| **CosyVoice2** | ✅ Apache 2.0 | 几乎无限制 |
| **Fish Speech** | ✅ BSD-3 | 几乎无限制 |
| **ElevenLabs** | ✅ 付费 | $5-99/月 |
结论:中小团队和个人基本够用。唯一硬门槛是收入超 10 亿人民币。最大实际风险是声音克隆的肖像权——商用前必须获得被克隆者授权。
Modal 部署可行性分析
结论:完全可行,成本极低。
硬件匹配
| 需求 | Modal 可选 |
|---|---|
| CUDA GPU ≥8GB 显存 | T4 16GB ($0.40/hr) 或 L4 24GB ($0.80/hr) |
| 模型持久存储 | Modal Volume(类似 S3) |
| 预装依赖 | Modal Image(自定义 Docker 镜像) |
成本估算
| 操作 | 时间 | 成本 |
|---|---|---|
| 模型加载(首次) | 10-15 秒 | $0.002-0.003 |
| 生成 10 秒音频 | 5-10 秒 | $0.001-0.002 |
| **单次调用总计** | — | **≈$0.003**(约 2 分钱人民币) |
| $30 免费额度 | — | **≈10,000 次调用** |
推荐架构
import modal
volume = modal.Volume.from_name("indextts-models", create=True)
app = modal.App("indextts-clone")
@app.function(
gpu="L4",
volumes={"/models": volume},
timeout=300,
container_timeout=600
)
def clone_voice(text: str, voice_ref_bytes: bytes) -> bytes:
from indextts.infer_v2 import IndexTTS2
tts = IndexTTS2(
cfg_path="/models/checkpoints/config.yaml",
model_dir="/models/checkpoints"
)
# 写入参考音频 → 生成 → 返回 wav bytes
...
# 暴露为 HTTP API
@app.function(gpu="L4", volumes={"/models": volume})
@modal.web_endpoint()
def api(text: str, voice_url: str):
import requests
voice_ref = requests.get(voice_url).content
audio = clone_voice.remote(text, voice_ref)
return modal.Response(content=audio, media_type="audio/wav")
注意事项
1. 冷启动:首次调用 30-60 秒(下载模型 + 加载 GPU),之后秒级
2. 模型文件:几 GB,用 Volume 持久化避免重复下载
3. 许可证:商用前确认(B站开源,标注 NOASSERTION)
4. 语言:中英文输出最佳,其他语言克隆音色可行但输出质量待验证
分析
为什么 IndexTTS2 重要:
- B站出品:中国最大的视频平台之一的技术实力展示,55,000 小时训练数据不是小公司能搞到的
- 时长控制是世界首创:这是配音行业的刚需,之前没有开源模型能做到
- 情感控制丰富:4 种控制方式,比 ElevenLabs 更灵活
- 完全开源:不像 ElevenLabs 那样闭源收费
不足:
- 许可证不明确:NOASSERTION 标注,商用存在法律风险
- 文档主要中文:国际化程度不够
- 模型文件大:几 GB 下载 + GPU 加载,不适合轻量场景
- 推理速度:自回归模型,比非自回归慢(但质量更高)
与 Jay 的关联:
- 播客配音:Jay 有 67 集播客,可以用 IndexTTS2 做多语言配音或旁白
- OpenClaw TTS 集成:OpenClaw 的 tts 工具目前用第三方 API,可以集成 IndexTTS2 做自托管语音合成
- Modal 部署:结合上一份 Modal 报告,Jay 可以用 Modal 低成本跑 IndexTTS2,按需调用
- 声音克隆:克隆 Jay 自己的声音做 AI 旁白,用于播客或视频
评分
| 维度 | 评分 (1-10) | 说明 |
|---|---|---|
| 技术突破 | 9 | 世界首创时长控制,情感-音色分离 |
| 音质表现 | 9 | 社区评价接近 ElevenLabs |
| 易用性 | 7 | 需要 GPU + 几 GB 模型,但 API 简单 |
| 开放性 | 6 | 开源但许可证不明确 |
| 生态 | 7 | 20K stars,有 ComfyUI 集成,但文档偏中文 |
| Modal 部署 | 8 | 完全可行,成本低 |
| 与 Jay 的关联 | 7 | 播客 + TTS + Modal 组合有用 |
| **总分** | **7.6** | 目前开源 TTS 的天花板,情感控制独一档 |