ByteNoteByteNote

字节笔记本

2026年8月29日

Index-TTS:B 站开源的语音合成怎么用

API中转
¥120

想本地克隆一个声音、又控制情感和语速,开源 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。

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

国内下载慢时,可以换镜像:

bash
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

bash
uv tool install "huggingface-hub"
hf download IndexTeam/IndexTTS-2.5 --local-dir=checkpoints

走 ModelScope 也可以:

bash
uv tool install "modelscope"
modelscope download --model IndexTeam/IndexTTS-2.5 --local_dir checkpoints

HuggingFace 慢的话,先设镜像再跑:

bash
export HF_ENDPOINT="https://hf-mirror.com"

想确认 GPU 是否被正确识别:

bash
uv run tools/gpu_check.py

先开 WebUI 试听

bash
uv run webui.py

浏览器打开 http://127.0.0.1:7860。示例音频会在首次启动时按需下载,一般不用再装 Git LFS。

常用开关:

  • BF16(2.5)/ FP16(2.0):省显存,质量损失很小
  • DeepSpeed:有的机器更快,有的反而慢,自己对比
  • 编译 CUDA kernel:追求速度时再开

完整参数看:

bash
uv run webui.py -h

所有 uv run ... 都会自动进项目虚拟环境,不要先手动 source .venv,容易搞乱依赖。

Python 里怎么调

2.5 的入口在 indextts.infer_v2_5

python
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,
)

命令行也可以:

bash
PYTHONPATH="$PYTHONPATH:." uv run indextts/infer_v2_5.py \
  --cfg_path checkpoints/config.yaml \
  --model_dir checkpoints \
  --text "Hello world" \
  --lang EN

默认参考音频在 examples/。如果还没开过 WebUI,可以先拉样例:

bash
uv run python -c "from indextts.utils.examples_downloader import ensure_examples_available; ensure_examples_available()"

情感、语速、多音字

音色参考和情绪参考可以拆开。比如音色用 voice_07.wav,情绪用一段悲伤音频:

python
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]

python
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=Trueemo_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 页:

许可和注意点

项目按 B 站 Model Use License 发布,商用前先读 LICENSE 和 DISCLAIMER,商务合作邮箱是 indexspeech@bilibili.com

另外官方反复提醒:只认 https://github.com/index-tts/index-tts 这一处仓库。随便搜到的「一键包」网站,别当官方源。

小结

IndexTTS 把零样本克隆、情感控制和多语言合成收成一套可本地跑的流水线。用 uv 装依赖、下 2.5 权重、开 WebUI 听一耳朵,再把同一套 infer 接到自己的脚本里就行。要上线服务,再看 vLLM 配方把推理做成稳定接口。

相关链接:

分享: