B站开源了 IndexTTS-2.5。

0.8B 参数,支持中英日西阿五种语言。相比 IndexTTS-2 多了日语、西班牙语、阿拉伯语,推理更快,还加了语速控制和发音控制。
架构上走的是自回归路线:GPT backbone 做文本到语义 token,flow-matching 做语义到梅尔谱,BigVGAN 做 vocoder 输出 22.05kHz 波形。推理大概需要 6GB 显存,RTX 4090 上跑 bf16 整体 RTF 0.2065,比 2 代 fp16 的 0.3257 快了 58%。
情感迁移:没训过的语言也能用
这是整件事里最让人意外的点。
情感训练数据只有中英两种语言,但评测时拿日语音频当参考去测阿拉伯语合成,情感相似度 0.869,MOS 4.18。情感表达似乎不依赖语言特定的声学特征,而是某种跨语言共有的东西。
当然,这只是一个测试结果,不代表所有语言对之间都有这种迁移效果。但方向是对的:如果情感表征确实可以跨语言泛化,那未来加新语言的门槛会比预想的低很多。
速度快了 2.28 倍,怎么做到的
两个关键改动:
语义 codec 帧率从 50Hz 压到 25Hz。T2S(文本到语义)的 RTF 从 0.232 降到 0.119。
S2M(语义到梅尔)骨干从 U-DiT 换成 Zipformer。S2M 的 RTF 直接从 0.078 降到 0.017,变成原来的 1/4.6。盲听主观偏好 56% 选 Zipformer,40% 选 U-DiT,4% 听不出区别。
Zipformer 本来是语音识别里的架构,这里拿来当 S2M 解码器效果不错。另外 2.5 还引入了 GRPO 强化学习做后训练,这也是 2 代没有的。
0.8B 跟一堆大模型同场竞技
CV3-Eval 上的评测结果,IndexTTS-2.5-RL 五语种平均说话人相似度 73.63,排第一。WER 6.00 排第二,第一是 Fish Audio S2 Pro(4B 参数,WER 5.94),但它的相似度只有 64.49。
同场对比的还有 VoxCPM2(2B)、Moss-TTS 1.5(8B)、Qwen3-TTS(1.7B)。0.8B 拿到这个成绩,参数效率确实突出。
跨语言 TTS 上(中文 prompt 合成其他语言),2.5-RL 五语种平均 WER 6.17、SS 70.20,日语方向尤其好,WER 6.38、SS 75.82。
情感控制有四种方式
第一种是给参考音频,直接模仿情感。可以调 emo_alpha(0.0 到 1.0)控制强度。
第二种是给一个 8 维向量,顺序是 [happy, angry, sad, afraid, disgusted, melancholic, surprised, calm],每个维度 0 到 1。比如 [0, 0, 0.8, 0, 0, 0, 0, 0] 就是偏悲伤。
第三种是写文字描述,比如「你吓死我了!你是鬼吗?」,模型自动转成情感向量。这个需要加载 QwenEmotion 模型(初始化时 use_qwen_emo=True)。
第四种是直接从合成文本自动推情感,类似 TTS 自己读懂了语境。
另外语速 0.5 到 2.0 倍可调(duration_factor),发音可以用 <行|HANG2> 这种格式强制指定拼音、CMU 音素或日语假名。
可以怎么用
安装走 uv 管理依赖,Python 3.10 到 3.11,需要 NVIDIA GPU:
git clone https://github.com/index-tts/index-tts.git && cd index-tts
pip install -U uv
uv sync --all-extras
hf download IndexTeam/IndexTTS-2.5 --local-dir=checkpoints
Python API 很简单:
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="prompt.wav",
text="Hello, this is a voice cloning demo.",
lang="EN",
output_path="output.wav",
)
WebUI 也提供了,uv run webui.py 就能启动。生产部署支持 vLLM。
License 免费商用,但月活过亿或年营收 10 亿以上需要单独申请。模型与代码均已开源:
有一些已知限制:长文本会分段合成然后拼接,段间韵律不连贯;情感文字描述需要额外加载 QwenEmotion 模型;开启随机采样(use_random=True)会降低声音克隆的保真度。
更多 TTS 与开源模型动态,欢迎在 云栈社区 一起关注交流。