现有自回归大规模文本转语音(TTS)模型在语音自然度方面具有优势,但其逐token生成机制难以精确控制合成语音的时长。这在需要严格视音频同步的应用(如视频配音)中成为显著限制。
本文提出了IndexTTS2,创新性地提出了一种通用且适用于自回归模型的语音时长控制方法。
该方法支持两种生成模式:一种可显式指定生成token数量以精确控制语音时长;另一种则自由自回归生成语音,同时忠实还原输入提示的韵律特征。
此外,IndexTTS2实现了情感表达与说话人身份的解耦,可独立控制音色和情感。在零样本设置下,模型能准确复刻目标音色(来自音色提示),同时完美还原指定的情感语调(来自风格提示)。
为提升高情感表达下的语音清晰度,我们引入GPT潜在表示,并设计了三阶段训练范式,提升生成语音的稳定性。为降低情感控制门槛,我们基于文本描述微调Qwen3,设计了软指令机制,有效引导语音生成所需情感。
多数据集实验结果表明,IndexTTS2在词错误率、说话人相似度和情感保真度方面均超越现有零样本TTS模型。音频样例见:IndexTTS2演示页面。
Tips: 如需更多信息请联系作者。商业合作请联系 indexspeech@bilibili.com。
QQ群:553460296(1群) 663272642(4群)
Discord:https://discord.gg/uT32E7KDmy
邮箱:indexspeech@bilibili.com
欢迎加入我们的社区!🌏
欢迎大家交流讨论!
[!CAUTION] 感谢大家对bilibili indextts项目的支持与关注! 请注意,目前由核心团队直接维护的官方渠道仅有: https://github.com/index-tts/index-tts. 其他任何网站或服务均非官方提供,我们对其内容及安全性、准确性和及时性不作任何担保。 为了保障您的权益,建议通过上述官方渠道获取bilibili indextts项目的最新进展与更新。
2025/09/08 🔥🔥🔥 IndexTTS-2全球发布!
2025/05/14 🔥🔥 IndexTTS-1.5发布,显著提升模型稳定性及英文表现。2025/03/25 🔥 IndexTTS-1.0发布,开放模型权重与推理代码。2025/02/12 🔥 论文提交arXiv,发布演示与测试集。IndexTTS2架构总览:
主要创新点:
| HuggingFace | ModelScope |
|---|---|
| 😁 IndexTTS-2 | IndexTTS-2 |
| IndexTTS-1.5 | IndexTTS-1.5 |
| IndexTTS | IndexTTS |
在仓库中启用Git-LFS:
git lfs install
git clone https://github.com/index-tts/index-tts.git && cd index-tts
git lfs pull # 下载大文件
[!TIP] 快速安装方法:
uv安装方式多样,详见官网。也可快速安装:
pip install -U uv
[!WARNING] 本文档仅支持uv安装。其他工具如conda/pip无法保证依赖正确,可能导致偶发bug、报错、GPU加速失效等问题。
uv比pip快115倍,强烈推荐。
使用uv安装依赖时,会创建虚拟环境,将所有依赖安装到.venv目录:
uv sync --all-extras
如中国大陆地区用户下载缓慢,可选用国内镜像:
uv sync --all-extras --default-index "https://mirrors.aliyun.com/pypi/simple"
uv sync --all-extras --default-index "https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple"
[!TIP] 可选功能:
--all-extras:安装全部可选功能。可去除自定义。--extra webui:安装WebUI支持(推荐)。--extra deepspeed:安装DeepSpeed加速。
[!IMPORTANT] Windows注意: DeepSpeed在部分Windows环境较难安装,可去除
--all-extras。Linux/Windows注意: 如遇CUDA相关报错,请确保已安装NVIDIA CUDA Toolkit 12.8及以上。
HuggingFace下载:
uv tool install "huggingface_hub[cli]"
hf download IndexTeam/IndexTTS-2 --local-dir=checkpoints
ModelScope下载:
uv tool install "modelscope"
modelscope download --model IndexTeam/IndexTTS-2 --local_dir checkpoints
[!NOTE] 项目首次运行还会自动下载部分小模型。如网络访问HuggingFace较慢,建议提前设置:
export HF_ENDPOINT="https://hf-mirror.com"
可运行脚本检测机器是否有GPU,以及是否安装了GPU版本的PyTorch。(如PyTorch版本不对,可能使用CPU启动,推理会非常慢)
uv run tools/gpu_check.py
uv run webui.py
浏览器访问 http://127.0.0.1:7860 查看演示。
可通过命令行参数开启FP16推理(降低显存占用)、DeepSpeed加速、CUDA内核编译加速等。可运行以下命令查看所有选项:
uv run webui.py -h
祝使用愉快!
用uv run <file.py>保证程序在uv创建的虚拟环境下运行。部分情况需要指定PYTHONPATH。
示例:
PYTHONPATH="$PYTHONPATH:." uv run indextts/infer_v2.py
以下为IndexTTS2脚本调用示例:
from indextts.infer_v2 import IndexTTS2
tts = IndexTTS2(cfg_path="checkpoints/config.yaml", model_dir="checkpoints", use_fp16=False, use_cuda_kernel=False, use_deepspeed=False)
text = "Translate for me, what is a surprise!"
tts.infer(spk_audio_prompt='examples/voice_01.wav', text=text, output_path="gen.wav", verbose=True)
from indextts.infer_v2 import IndexTTS2
tts = IndexTTS2(cfg_path="checkpoints/config.yaml", model_dir="checkpoints", use_fp16=False, use_cuda_kernel=False, use_deepspeed=False)
text = "酒楼丧尽天良,开始借机竞拍房间,哎,一群蠢货。"
tts.infer(spk_audio_prompt='examples/voice_07.wav', text=text, output_path="gen.wav", emo_audio_prompt="examples/emo_sad.wav", verbose=True)
emo_alpha,范围0.0-1.0,默认1.0):from indextts.infer_v2 import IndexTTS2
tts = IndexTTS2(cfg_path="checkpoints/config.yaml", model_dir="checkpoints", use_fp16=False, use_cuda_kernel=False, use_deepspeed=False)
text = "酒楼丧尽天良,开始借机竞拍房间,哎,一群蠢货。"
tts.infer(spk_audio_prompt='examples/voice_07.wav', text=text, output_path="gen.wav", emo_audio_prompt="examples/emo_sad.wav", emo_alpha=0.9, verbose=True)
[高兴, 愤怒, 悲伤, 害怕, 厌恶, 忧郁, 惊讶, 平静],可用use_random开启随机情感采样(默认False):[!NOTE] 开启随机采样会降低音色的还原度。
from indextts.infer_v2 import IndexTTS2
tts = IndexTTS2(cfg_path="checkpoints/config.yaml", model_dir="checkpoints", use_fp16=False, use_cuda_kernel=False, use_deepspeed=False)
text = "哇塞!这个爆率也太高了!欧皇附体了!"
tts.infer(spk_audio_prompt='examples/voice_10.wav', text=text, output_path="gen.wav", emo_vector=[0, 0, 0, 0, 0, 0, 0.45, 0], use_random=False, verbose=True)
use_emo_text根据文本自动生成情感向量,可用use_random开启随机情感采样:from indextts.infer_v2 import IndexTTS2
tts = IndexTTS2(cfg_path="checkpoints/config.yaml", model_dir="checkpoints", use_fp16=False, use_cuda_kernel=False, use_deepspeed=False)
text = "快躲起来!是他要来了!他要来抓我们了!"
tts.infer(spk_audio_prompt='examples/voice_12.wav', text=text, output_path="gen.wav", emo_alpha=0.6, use_emo_text=True, use_random=False, verbose=True)
emo_text),实现文本与情感分离控制:from indextts.infer_v2 import IndexTTS2
tts = IndexTTS2(cfg_path="checkpoints/config.yaml", model_dir="checkpoints", use_fp16=False, use_cuda_kernel=False, use_deepspeed=False)
text = "快躲起来!是他要来了!他要来抓我们了!"
emo_text = "你吓死我了!你是鬼吗?"
tts.infer(spk_audio_prompt='examples/voice_12.wav', text=text, output_path="gen.wav", emo_alpha=0.6, use_emo_text=True, emo_text=emo_text, use_random=False, verbose=True)
[!TIP] 拼音使用注意事项:
IndexTTS2依然支持中文字符与拼音混合建模。 在使用时,如果需要精确的发音控制,请输入包含特定拼音标注的文本来触发拼音控制功能。 需要注意的是:拼音控制并不是对所有声母韵母(辅音、元音)组合都生效,系统仅保留中文合法拼音的发音。 具体合法情况可参考项目中的
checkpoints/pinyin.vocab文件。参考样例:
之前你做DE5很好,所以这一次也DEI3做DE2很好才XING2,如果这次目标完成得不错的话,我们就直接打DI1去银行取钱。
如果需要使用旧的IndexTTS1.5模型,可以import旧模块:
from indextts.infer import IndexTTS
tts = IndexTTS(model_dir="checkpoints",cfg_path="checkpoints/config.yaml")
voice = "examples/voice_07.wav"
text = "大家好,我现在正在bilibili 体验 ai 科技,说实话,来之前我绝对想不到!AI技术已经发展到这样匪夷所思的地步了!比如说,现在正在说话的其实是B站为我现场复刻的数字分身,简直就是平行宇宙的另一个我了。如果大家也想体验更多深入的AIGC功能,可以访问 bilibili studio,相信我,你们也会吃惊的。"
tts.infer(voice, text, 'gen.wav')
详细信息见 README_INDEXTTS_1_5,或访问 index-tts:v1.5.0。
我们诚挚感谢来自Bilibili的同事们,是大家的共同努力让IndexTTS系列得以实现。
🌟 如果本项目对您有帮助,请为我们点star并引用论文。
IndexTTS2:
@article{zhou2025indextts2, title={IndexTTS2: A Breakthrough in Emotionally Expressive and Duration-Controlled Auto-Regressive Zero-Shot Text-to-Speech}, author={Siyi Zhou, Yiquan Zhou, Yi He, Xun Zhou, Jinchao Wang, Wei Deng, Jingchen Shu}, journal={arXiv preprint arXiv:2506.21619}, year={2025} }
IndexTTS:
@article{deng2025indextts, title={IndexTTS: An Industrial-Level Controllable and Efficient Zero-Shot Text-To-Speech System}, author={Wei Deng, Siyi Zhou, Jingchen Shu, Jinchao Wang, Lu Wang}, journal={arXiv preprint arXiv:2502.05512}, year={2025}, doi={10.48550/arXiv.2502.05512}, url={https://arxiv.org/abs/2502.05512} }