最近 B 站开源团队发布了 IndexTTS2 ------ 一个情感表达更细腻、时长可控、零样本音色克隆能力极强的自回归 TTS 系统。它在 GitHub 上已经 Star 破万,绝对是当下最热门的 TTS 项目之一。
这篇文章我会带你快速了解它的能力,然后手把手讲解如何在 macOS(尤其是 Apple Silicon 如 M1/M2/M3/M4) 安装并成功运行这个项目,包括你一定会踩的坑(例如:DeepSpeed 不支持 mac!)。
⭐ 1. IndexTTS2 简介
IndexTTS2 是 B 站团队推出的第二代大规模自回归 Text-to-Speech(TTS)模型。相比此前的 TTS 系统,它有三大核心亮点:
🔥 1. 支持精确时长控制(Auto-regressive Duration Control)
传统自回归 TTS 无法精确控制语音长度,而 IndexTTS2 能做到:
- 模式 A:显式指定生成 token 数
- 模式 B:自然韵律的自由生成
这意味着它不仅能做视频配音(严格对齐字幕/口型),也能做"自然风格"的朗读,一举两得。
😄 2. 强表达力的情感控制
IndexTTS2 设计了音色 与情感二者完全解耦的策略:
- 模型能克隆音色(音色提示)
- 同时完美复刻指定的情感(情感提示音频或文本)
支持方式包括:
- 情感音频(emo_audio_prompt)
- 8 维情感向量([happy, angry, sad...])
- 文本生成情感(use_emo_text)
- 文本描述情感(emo_text 指定)
简直像做语音"定制魔法"。
🎧 3. 更清晰、更稳、更像真人
为了解决高表达情绪下 TTS 语音模糊的问题,团队引入:
- GPT latent
- 三阶段训练范式
- 更强大的数据机制
实际听起来的效果非常自然,情绪流畅,人话味儿非常足。
如果你想快速体验,官方提供了多个 Demo:
- HuggingFace
- ModelScope
- 官网 Demo
⭐ 2. macOS 安装 IndexTTS2:一篇最全避坑指南
别看官方文档一句话写 "uv sync --all-extras",mac 上这么干必报错!
最大元凶:DeepSpeed 无法在 macOS 编译。
下面我带你从零开始装,但确保不会踩坑,直接能跑 WebUI。
🍎 2.1 环境准备
Step 1:确保安装 Git 与 Git LFS
bash
brew install git git-lfs
git lfs install
Step 2:克隆仓库并下载权重文件
bash
git clone https://github.com/index-tts/index-tts.git
cd index-tts
git lfs pull
🍎 2.2 安装 uv(必须用 uv)
IndexTTS 官方强烈建议使用 uv,因为 pip 容易导致版本冲突。
快速安装:
bash
pip install -U uv
⚠ 2.3 重要提醒:macOS 不能安装 DeepSpeed!
DeepSpeed 官方明确:
- ❌ 不支持 macOS
- ❌ 不支持 Apple Silicon
- ❌ 不支持 CPU-only
- ❌ 需要 CUDA toolchain
所以如果你执行:
uv sync --all-extras
你一定会遇到你之前那个错误:
Failed to build deepspeed ModuleNotFoundError: No module named 'setuptools'
这是伪报错,真正原因是 DeepSpeed 在 mac 上根本不能编译。
🍎 2.4 正确的 macOS 安装命令
你只需要:
bash
uv sync --extra webui
不要:
- ❌
--all-extras - ❌
--extra deepspeed
因为:
- WebUI 是我们需要的
- DeepSpeed mac 装不了
- 其他 extras 也一般不需要
这样会安装:
- PyTorch(CPU 或 Metal)
- BigVGAN
- TTS 核心组件
而且不会出错。
🍎 2.5 下载模型权重(HuggingFace)
推荐:
bash
uv tool install "huggingface-hub[cli,hf_xet]"
hf download IndexTeam/IndexTTS-2 --local-dir=checkpoints
或者 ModelScope:
bash
uv tool install modelscope
modelscope download --model IndexTeam/IndexTTS-2 --local_dir checkpoints
⭐ 2.6 启动 WebUI(mac 上可直接运行)
bash
uv run webui.py
然后访问:
http://127.0.0.1:7860
如果你是 Apple M4 等新芯片,可以打开 FP16 减少显存占用:
bash
uv run webui.py --fp16
⭐ 2.7 Python 调用示例(最常用)
python
from indextts.infer_v2 import IndexTTS2
tts = IndexTTS2(
cfg_path="checkpoints/config.yaml",
model_dir="checkpoints",
use_fp16=True, # Mac M 系列建议开启
use_deepspeed=False, # 必须关闭
)
text = "今天天气真不错,咱们一起去散步吧。"
tts.infer(
spk_audio_prompt="examples/voice_01.wav",
text=text,
output_path="gen.wav",
verbose=True
)
⭐ 3. 避坑总结(非常关键)
| 功能 | macOS 支持情况 |
|---|---|
| DeepSpeed | ❌ 完全不支持 |
| CUDA kernel | ❌ 没 CUDA |
| GPU(Metal 加速) | ✔ PyTorch 支持 Metal |
| FP16 | ✔️ 推荐开启 |
| WebUI | ✔ 正常运行 |
| 模型推理 | ✔ 速度尚可,音质优 |
所以 mac 上跑 IndexTTS2 完全没问题,只要避开 DeepSpeed。
⭐ 4. 结语
IndexTTS2 是目前最强的开源零样本语音生成模型之一,它不仅能克隆音色,还能做非常真实的情感表达,同时还支持精确控制时长,应用场景非常广:
- AI 数字人
- 情感配音
- 视频口播
- 游戏角色语音
- 多场景 TTS