字节笔记本
2026年8月29日
Index-TTS:B 站开源的语音合成怎么用
想本地克隆一个声音、又控制情感和语速,开源 TTS 里可选的不少。B 站开源的 IndexTTS 走的是工业级零样本路线:给一段参考音频,就能合成接近同一个人的说话声。最新版 IndexTTS-2.5 覆盖中英日西阿五种语言,推理也比 2 代更快。
仓库在 GitHub:https://github.com/index-tts/index-tts 。官方强调这是唯一正式渠道,别的镜像站不保证安全。
它能做什么
核心能力:
- 零样本音色克隆:一段参考 wav 即可
- 多语言:中文、英文、日语、西班牙语、阿拉伯语
- 情感控制:参考情绪音频、情绪向量,或从文案自动推情绪
- 发音控制:中文拼音、英文 CMU 音素、日语假名
- 语速:
duration_factor在 0.5x–2.0x 之间调 - 生产部署:支持 vLLM 配方
模型体积约 0.8B 参数量级,在 CV3-Eval 等评测里和同类开源模型比,字错率和说话人相似度都不错。
环境准备
需要 Git,以及可用的 NVIDIA GPU(官方安装说明要求 CUDA Toolkit 12.8 或更新)。依赖用 uv 管,别手搓 venv。
git clone https://github.com/index-tts/index-tts.git
cd index-tts
pip install -U uv
uv sync --all-extras国内下载慢时,可以换镜像:
uv sync --all-extras --default-index "https://mirrors.aliyun.com/pypi/simple"--all-extras 会带上 WebUI;Windows 上 DeepSpeed 不好装时,可以去掉 --all-extras,只加需要的 --extra webui。
下载模型
IndexTTS-2.5 权重建议下到 checkpoints:
uv tool install "huggingface-hub"
hf download IndexTeam/IndexTTS-2.5 --local-dir=checkpoints走 ModelScope 也可以:
uv tool install "modelscope"
modelscope download --model IndexTeam/IndexTTS-2.5 --local_dir checkpointsHuggingFace 慢的话,先设镜像再跑:
export HF_ENDPOINT="https://hf-mirror.com"想确认 GPU 是否被正确识别:
uv run tools/gpu_check.py先开 WebUI 试听
uv run webui.py浏览器打开 http://127.0.0.1:7860。示例音频会在首次启动时按需下载,一般不用再装 Git LFS。
常用开关:
- BF16(2.5)/ FP16(2.0):省显存,质量损失很小
- DeepSpeed:有的机器更快,有的反而慢,自己对比
- 编译 CUDA kernel:追求速度时再开
完整参数看:
uv run webui.py -h所有 uv run ... 都会自动进项目虚拟环境,不要先手动 source .venv,容易搞乱依赖。
Python 里怎么调
2.5 的入口在 indextts.infer_v2_5:
from indextts.infer_v2_5 import IndexTTS2
tts = IndexTTS2(
cfg_path="checkpoints/config.yaml",
model_dir="checkpoints",
use_bf16=True,
)
tts.infer(
spk_audio_prompt="examples/voice_01.wav",
text="大家好,这是 IndexTTS 的克隆效果。",
lang="ZH",
output_path="gen.wav",
verbose=True,
)命令行也可以:
PYTHONPATH="$PYTHONPATH:." uv run indextts/infer_v2_5.py \
--cfg_path checkpoints/config.yaml \
--model_dir checkpoints \
--text "Hello world" \
--lang EN默认参考音频在 examples/。如果还没开过 WebUI,可以先拉样例:
uv run python -c "from indextts.utils.examples_downloader import ensure_examples_available; ensure_examples_available()"情感、语速、多音字
音色参考和情绪参考可以拆开。比如音色用 voice_07.wav,情绪用一段悲伤音频:
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,
)emo_alpha 范围 0–1,越大情绪参考影响越重。也可以直接塞 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],
)想让模型从文案里推情绪,打开 use_emo_text=True;2.5 还需要初始化时加 use_qwen_emo=True。emo_alpha 建议先试 0.6 左右,更自然。
语速用 duration_factor:大于 1 变慢,小于 1 变快,合法区间 0.5–2.0。
多音字可以显式标拼音:
他在银<行|XING2>里<行|HANG2>走了半天,发现这笔业务办不<行|HANG2>。
英文用 CMU 音素,日语用假名,写法类似,细节见仓库 README。
版本怎么选
| 版本 | 适合场景 |
|---|---|
| IndexTTS-2.5 | 默认首选:多语言、更快、语速可控、vLLM 部署 |
| IndexTTS-2 | 仍要 2.0 API / 旧 checkpoint 时 |
| IndexTTS-1.5 / 1.0 | 老脚本兼容,功能更少 |
Demo 页:
- 2.5:https://index-tts.github.io/index-tts2-5.github.io/
- 论文:https://arxiv.org/abs/2601.03888
- HuggingFace Space:https://huggingface.co/spaces/IndexTeam/IndexTTS-2.5-Demo
- ModelScope 在线体验:https://modelscope.cn/studios/IndexTeam/IndexTTS-2.5
许可和注意点
项目按 B 站 Model Use License 发布,商用前先读 LICENSE 和 DISCLAIMER,商务合作邮箱是 indexspeech@bilibili.com。
另外官方反复提醒:只认 https://github.com/index-tts/index-tts 这一处仓库。随便搜到的「一键包」网站,别当官方源。
小结
IndexTTS 把零样本克隆、情感控制和多语言合成收成一套可本地跑的流水线。用 uv 装依赖、下 2.5 权重、开 WebUI 听一耳朵,再把同一套 infer 接到自己的脚本里就行。要上线服务,再看 vLLM 配方把推理做成稳定接口。
相关链接: