IndexTTS-2.5:生产级零样本 TTS,一段参考音频克隆音色 + 细粒度情感与语速控制
index-tts-25-production-tts-voice-clone-emotion-multilingual
by Mycelium Protocol
一段参考音频,文字进去,带有相同音色的语音出来——这是零样本 TTS 的核心承诺。IndexTTS 把这件事从演示级推向了生产级:22,000+ stars,活跃的版本迭代,以及正式的 vLLM 生产部署支持。
2026 年 8 月 10 日,IndexTTS-2.5 正式发布。
GitHub: https://github.com/index-tts/index-tts | ⭐ 22,615 | Python
HuggingFace: IndexTeam/IndexTTS-2.5 | arxiv: 2601.03888
核心能力:三件事
IndexTTS-2.5 的核心围绕三个轴展开:音色克隆、情感控制、发音控制。
音色克隆:一段音频搞定
零样本音色克隆是 IndexTTS 的基础能力——不需要训练,不需要大量数据,给一段参考音频就能把音色迁移到任意文本:
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='voice.wav', # 参考音频(提供音色)
text="Hello world.",
lang="EN", # ZH / EN / JA / ES / AR
output_path="gen.wav"
)
跨语言支持:中文、英文、日语、西班牙语、阿拉伯语。跨语言音色保持——用中文参考音频生成英文,音色仍然一致。
情感控制:四种方式
IndexTTS-2.5 提供了四种粒度不同的情感控制方式,可以混合使用。
情感由 8 个维度组成:[愉快, 愤怒, 悲伤, 恐惧, 厌恶, 忧郁, 惊讶, 平静]
方式 1:情感参考音频
最直观的方式。给一段情绪化的参考音频,让模型从中提取情感:
tts.infer(
spk_audio_prompt='voice.wav', # 音色来源
emo_audio_prompt='emo_sad.wav', # 情感来源(独立于音色)
emo_alpha=0.9, # 情感强度,0.0–1.0,默认 1.0
text="酒楼丧尽天良,开始借机竞拍房间。",
lang="ZH",
output_path="gen.wav"
)
emo_alpha 控制情感强度,0 = 不受情感音频影响,1 = 完全按情感音频的情绪输出。
方式 2:8 维情感向量
直接用数字指定每个情感维度的强度:
tts.infer(
spk_audio_prompt='voice.wav',
emo_vector=[0, 0, 0.8, 0, 0, 0, 0, 0], # 悲伤强度 0.8
text="对不起,我的记性真的不太好。",
lang="ZH",
output_path="gen.wav"
)
顺序固定:[happy, angry, sad, afraid, disgusted, melancholic, surprised, calm]。
方式 3:从文本内容自动推断情感
让模型从文本本身推断情感,需要 Qwen 情感理解模块:
tts = IndexTTS2(..., use_qwen_emo=True) # 初始化时开启
tts.infer(
spk_audio_prompt='voice.wav',
text="快躲起来!是他要来了!",
lang="ZH",
use_emo_text=True,
emo_alpha=0.6, # 推荐用较低强度,更自然
output_path="gen.wav"
)
方式 4:显式情感描述文本
文本和情感描述分开,让模型用情感描述来生成语音:
tts.infer(
spk_audio_prompt='voice.wav',
text="快躲起来!是他要来了!",
emo_text="你吓死我了!你是鬼吗?", # 情感描述,独立于台词
lang="ZH",
use_emo_text=True,
emo_alpha=0.6,
output_path="gen.wav"
)
语速控制
duration_factor 控制语速,大于 1 变慢,小于 1 变快:
# 慢速(1.2× 时长 = 语速降低约 20%)
tts.infer(..., duration_factor=1.2, output_path="slow.wav")
# 快速(0.8× 时长 = 语速加快约 25%)
tts.infer(..., duration_factor=0.8, output_path="fast.wav")
有效范围:0.5–2.0。
发音控制:拼音 / CMU 音素 / 日语假名
对多音字、专业术语、外来词,IndexTTS-2.5 支持在文本里内联标注精确发音。
中文拼音(多音字控制):
他在银<行|XING2>里<行|HANG2>走了半天,发现这笔业务办不<行|HANG2>。
英文 CMU 音素(专业词汇精确发音):
He had a <minute|M IH1 . N AH0 T> to examine the <minute|M AY0 . N UW1 T> details.
日语假名(汉字多读音控制):
彼は料理が<上手|じょうず>だが、囲碁では<上手|うわて>に負けた。
安装与启动
git clone https://github.com/index-tts/index-tts.git && cd index-tts
# 安装(uv 自动管理 Python 版本和所有依赖)
pip install -U uv
uv sync --all-extras
# 下载模型
hf download IndexTeam/IndexTTS-2.5 --local-dir=checkpoints
# 启动 WebUI(localhost:7860)
uv run webui.py
推理脚本:
PYTHONPATH="$PYTHONPATH:." uv run indextts/infer_v2_5.py \
--cfg_path checkpoints/config.yaml \
--model_dir checkpoints \
--text "Hello world" \
--lang EN
BF16 推理(2.5 版本默认,降低显存占用,质量损失极小)。
DeepSpeed(可选,部分硬件上会加速,需要实测)。
FP8/BF16 推理:国内镜像:uv sync --default-index "https://hf-mirror.com"
生产部署:vLLM
IndexTTS-2.5 正式支持 vLLM 生产部署,见 vLLM recipe for IndexTTS。
版本演进
| 版本 | 时间 | 关键能力 |
|---|---|---|
| IndexTTS 1.0 | 2025-03 | 零样本 TTS,基础版 |
| IndexTTS 1.5 | 2025-05 | 英文稳定性大幅提升 |
| IndexTTS 2 | 2025-09 | 首个自回归 TTS + 精确时长控制 + 情感控制 |
| IndexTTS 2.5 | 2026-08 | 五语言 + 语速控制 + 发音标注改进 + 推理提速 + vLLM |
Mycelium Protocol — 追踪 AI 系统的底层演化
关于 Mycelium
菌丝协议。持续追踪 AI 工具、系统和实验的内容节点。
IndexTTS-2.5: Production-Grade Zero-Shot TTS with Fine-Grained Emotion and Speed Control
by Mycelium Protocol
One reference audio clip. Text goes in. Speech in the same voice comes out. That’s the zero-shot TTS promise. IndexTTS has taken this from demo-quality to production-grade: 22,000+ stars, active versioning, and now vLLM deployment support.
On August 10, 2026, IndexTTS-2.5 was released.
GitHub: https://github.com/index-tts/index-tts | ⭐ 22,615 | Python
HuggingFace: IndexTeam/IndexTTS-2.5 | arxiv: 2601.03888
Core Capabilities: Three Axes
IndexTTS-2.5 centers on three axes: voice cloning, emotion control, and pronunciation control.
Voice Cloning: One Audio Clip
Zero-shot voice cloning is the foundation — no training, no dataset, just a reference audio:
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='voice.wav',
text="Hello world.",
lang="EN", # ZH / EN / JA / ES / AR
output_path="gen.wav"
)
Languages: Chinese, English, Japanese, Spanish, Arabic. Cross-lingual voice preservation — clone a Chinese voice and generate English, the timbre carries over.
Emotion Control: Four Modes
The 8-dimension emotion space: [happy, angry, sad, afraid, disgusted, melancholic, surprised, calm]
Mode 1 — Emotion reference audio: provide a separate emotional audio clip; emo_alpha (0.0–1.0) controls how strongly it affects the output.
tts.infer(
spk_audio_prompt='voice.wav',
emo_audio_prompt='emo_sad.wav',
emo_alpha=0.9,
text="...", lang="ZH", output_path="gen.wav"
)
Mode 2 — 8-float emotion vector: specify each dimension directly.
tts.infer(
spk_audio_prompt='voice.wav',
emo_vector=[0, 0, 0.8, 0, 0, 0, 0, 0], # sad=0.8
text="...", lang="ZH", output_path="gen.wav"
)
Mode 3 — Text-derived emotion (use_emo_text=True): the model infers emotion from the script itself. Requires use_qwen_emo=True at initialization. Recommended emo_alpha ≈ 0.6 for naturalness.
Mode 4 — Explicit emotion description (emo_text): provide a separate description of the desired emotion, independent of the speech script.
Speaking Speed Control
tts.infer(..., duration_factor=1.2, ...) # slower (~20%)
tts.infer(..., duration_factor=0.8, ...) # faster (~25%)
Valid range: 0.5×–2.0×. Default: 1.0.
Pronunciation Control
Inline annotations directly in the text:
Chinese Pinyin (polyphone disambiguation):
他在银<行|XING2>里<行|HANG2>走了半天,发现这笔业务办不<行|HANG2>。
English CMU phonemes (technical terms, loanwords):
He had a <minute|M IH1 . N AH0 T> to examine the <minute|M AY0 . N UW1 T> details.
Japanese Kana (kanji multiple readings):
彼は料理が<上手|じょうず>だが、囲碁では<上手|うわて>に負けた。
Install and Run
git clone https://github.com/index-tts/index-tts.git && cd index-tts
pip install -U uv
uv sync --all-extras
# Download weights
hf download IndexTeam/IndexTTS-2.5 --local-dir=checkpoints
# WebUI at localhost:7860
uv run webui.py
CLI inference:
PYTHONPATH="$PYTHONPATH:." uv run indextts/infer_v2_5.py \
--cfg_path checkpoints/config.yaml \
--model_dir checkpoints \
--text "Hello world" \
--lang EN
BF16 inference is the default for 2.5 — lower VRAM, minimal quality loss. DeepSpeed is optional; test on your hardware.
Production Deployment
IndexTTS-2.5 supports production deployment via vLLM.
Version History
| Version | Date | Key additions |
|---|---|---|
| 1.0 | 2025-03 | Initial zero-shot TTS |
| 1.5 | 2025-05 | English stability improvements |
| 2 | 2025-09 | Autoregressive architecture + duration control + emotion control |
| 2.5 | 2026-08 | 5 languages + speed control + pronunciation improvements + faster inference + vLLM |
Mycelium Protocol — tracking the deep evolution of AI systems
© 2026 Mycelium Protocol. All rights reserved.
关于本站 · 免责声明
🍄 Mushroom Research Blog 是非营利、免费公开的个人科技观察博客与公众号 XStack18,不接受商业合作、不代表任何企业或机构立场,也不谋求商业利益。我们以个人视角客观中立地记录和分析 AI、Web3 等领域的最新模型发布与技术动态——不止转述新闻标题或二手信息,而是给出有独立思考的深入分析,希望帮更多人获得有价值的一手科技认知。
⚠️ 文中介绍的开源代码与模型,仅供学习交流与技术借鉴。它们大多仍处于早期阶段,有待进一步研究和验证,请勿直接用于工作或生产环境;如需采用,请先自行充分测试,并核实其许可证与安全性。
Open-source code and models featured here are shared for learning and reference only. Most are early-stage and still need further study and verification — please don't use them directly in your work or in production. Test them thoroughly and check their licenses and security first.
- 本站文章均为作者基于公开信息的个人研究与观点整理,不代表文中提及的任何公司、产品、模型的官方立场,未与其构成商业关联或合作关系。
- 科技行业信息更新极快,我们尽力保证内容准确、及时,但不对完整性、实时性做绝对保证,具体请以相关企业/项目官方公告为准。
- 文中引用的第三方商标、产品名称、图片、数据等版权归原权利人所有,我们会尽量注明来源;如你认为存在版权疑问或侵权,请通过下方邮箱联系我们,收到通知后会尽快核实处理(更正、加注来源或删除)。
- 文章内容仅为技术科普与个人观点,不构成投资、法律或其他专业建议,据此进行任何决策的后果需自行判断和承担。
📮 侵权 / 勘误 / 合作咨询:hello@mushroom.cv
💬 评论与讨论
使用 GitHub 账号登录后发表评论