用自己的声音给视频配音
B站 IndexTeam · 2.5IndexTTS 是哔哩哔哩 IndexTeam 开源的零样本配音项目。当前版本是 2026 年 8 月发布的 IndexTTS-2.5,仓库约 2.4 万星,协议是 B 站模型使用协议,不是随便能商用的那种宽松协议。给它一小段人声,再给一段文字,它就用这段声音把字念出来。
2.5 支持中文、英文、日文、西班牙文、阿拉伯文,音色和情绪可以分开控:同一段参考声音,情绪可以另给一段录音,也可以直接写一句情绪描述。语速用 duration_factor 调,范围 0.5 到 2.0,大于 1 是放慢,小于 1 是加快。模型大约 8 亿参数。
和 Codex 的接法是把仓库交给它,让它按官方说明用 uv 装环境、把 2.5 模型下到本机,再用你的参考录音把口播稿按场景配完。本机需要一张英伟达显卡。官方演示页上的影视重配音样片,就是这个系列拿来展示效果的。
| 项目 | 说明 |
|---|---|
| 输入 | 一段参考人声(wav),加要念的文字。情绪可以再加一段录音、8 个情绪数值,或一句情绪描述 |
| 适用类型 | 口播、解说、带情绪的台词、同一条视频的外语版 |
| 输出 | wav 音频。网页演示和 Python 接口都能指定输出文件 |
| 语言 | 中文、英文、日文、西班牙文、阿拉伯文。2.5 还能标拼音、英文音标、日文假名来纠发音 |
| 规格 | 2.5 约 8 亿参数。情绪向量顺序:开心、生气、难过、害怕、厌恶、忧郁、惊讶、平静 |
| 环境 | 建议配置 |
|---|---|
| 操作系统 | Windows、Linux 都按仓库说明走。Windows 上 DeepSpeed 经常装不上,不要开这个附加项 |
| 运行环境 | 先装 git 和 uv。依赖只用 uv 装,官方不保证用 conda 或单独 pip 能装对 |
| 硬件 | 英伟达显卡。安装报 CUDA 错误时,本机 CUDA 工具包要 12.8 或更新。官方没写死显存数字,2.5 用 BF16 可以少占显存 |
| 没有显卡 | 本机跑不了。可以先看官方演示页里的样片。不要改用不明来源的在线代跑网站,仓库声明只有 GitHub 这一个官方渠道 |
| 关键依赖 | uv、网页演示附加项 webui、2.5 模型权重。第一次打开网页演示还会自动下示例音频 |
在 GitHub 搜索 index-tts,进 index-tts/index-tts 这个仓库,克隆到本地。然后只加网页演示这一项,避开 Windows 上难装的 DeepSpeed。
cd index-tts
pip install -U uv
uv sync --extra webui
权重下到仓库里的 checkpoints 目录。国内访问慢时,先按文末折叠区里的镜像设置环境变量,再执行下载。
uv tool install "huggingface-hub"
hf download IndexTeam/IndexTTS-2.5 --local-dir=checkpoints
也可以改用 ModelScope,包名同样是 IndexTeam/IndexTTS-2.5,目录仍是 checkpoints。
跑起来后,按终端打印的本机地址打开。上传你自己的一段干净人声,打一行字生成。确认嗓子对,再交给脚本批量跑。
uv run tools/gpu_check.py
uv run webui.py
2.5 的类在 infer_v2_5 里。文字情绪必须在初始化时打开 use_qwen_emo,否则一调用就报 RuntimeError。参考录音换成你自己的文件。
from indextts.infer_v2_5 import IndexTTS2
tts = IndexTTS2(cfg_path="checkpoints/config.yaml", model_dir="checkpoints", use_bf16=True, use_qwen_emo=True)
tts.infer(spk_audio_prompt="my_voice.wav", text="封面这一段兴奋一点。", lang="ZH", output_path="封面.wav", emo_text="兴奋", emo_alpha=0.6, use_emo_text=True)
tts.infer(spk_audio_prompt="my_voice.wav", text="结尾平静一点。", lang="ZH", output_path="结尾.wav", duration_factor=1.1)
常用参数:
| 参数 | 作用 |
|---|---|
spk_audio_prompt | 参考人声,决定嗓子 |
lang | ZH / EN / JA / ES / AR |
emo_audio_prompt | 另一段带情绪的录音,和嗓子分开 |
emo_alpha | 情绪有多浓,0 到 1,默认 1。文字情绪建议 0.6 或更低 |
emo_text | 用一句话描述情绪。要同时开 use_emo_text,并且初始化时 use_qwen_emo=True |
emo_vector | 8 个小数,顺序见上面的能力表。和情绪录音二选一 |
duration_factor | 0.5 到 2.0。大于 1 放慢,小于 1 加快 |
use_random | 打开后音色会漂,克隆不像本人。配音保持默认关闭 |
把仓库目录交给 Codex,把下面这段原话发过去。它会按官方说明装环境、下模型,再用你放进去的参考录音把口播稿按场景存成 wav。
按仓库说明用 uv 装好网页演示,不要装 DeepSpeed。把 IndexTTS-2.5 下到 checkpoints。用我放进来的参考录音,把这份口播稿按场景配音:封面兴奋一点,结尾平静一点,每段用场景名存成 wav。
数字来自仓库 README 里 IndexTTS-2.5 技术报告的表,评测集是 CV3-Eval。WER 越低越好,说话人相似度越高越像参考音。
| 指标 | 官方数字 |
|---|---|
| 参数量 | 0.8B |
| 零样本平均(2.5 / 2.5-RL) | WER 6.75 / 6.00,说话人相似度 73.18 / 73.63 |
| 中文零样本(2.5) | WER 4.36,说话人相似度 77.10 |
| 跨语言平均,中文音色说外语(2.5 / RL) | WER 6.22 / 6.17,相似度 68.62 / 70.20 |
| RTX 4090 综合 RTF,越低越快 | 2.5 bf16 为 0.2065,2.0 fp16 为 0.3257 |
参考录音和生成都在你自己的电脑上,模型权重下到本地。前提是有英伟达显卡。没有显卡就只能看官方演示页,本教程不写第三方代跑。
新装就用 2.5,它是仓库现在的默认版本,语速控制也在这一版。2.0 的网页演示要另下 checkpoints_2,并加上版本参数。两套权重不要混用同一个目录。
先确认是英伟达显卡,并且 CUDA 工具包是 12.8 或更新。依赖只用 uv 装。Windows 上去掉 DeepSpeed,改成只装 webui 这一项,再跑仓库自带的 gpu_check。
2.5 初始化时打开 use_bf16。官方没有公布最低显存,只说明半精度更快、更省显存,音质损失很小。还是不够就缩短单次文本,不要一次丢一整篇稿。
2.5 要在创建 IndexTTS2 时传入 use_qwen_emo=True。只在 infer 里写 use_emo_text=True 不够。2.0 没有这个要求。
参考录音要干净、没有背景音乐和别人的声音。不要开 use_random,官方写了打开后克隆相似度会下降。情绪太浓时把 emo_alpha 降到 0.6 附近。
仓库克隆好,参考录音放进目录,把上面第 5 步那段提示词发过去。让它先跑 gpu_check 和网页演示,听对了再批量出各场景 wav。
看仓库里的 LICENSE 和 DISCLAIMER。这是 B 站模型使用协议,不是宽松的开源许可。商用和合作要联系官方,邮箱在文末折叠区里。