TTS 模型横向对比 · Qwen3-TTS 1.7B / IndexTTS-2.5 / MOSS-TTS v1.5

同一台机器(RTX 5060 Ti 16GB)本地推理。两段中文文本,统一的参考音频(clone_1.wav, 4.2s 中文女声)用于克隆类模型。

西游记 · 石猴出世

Qwen3-TTS-1.7B (预设音色 CustomVoice) · 西游记 · 石猴出世生成 40.2s / 音频 55.7s · RTF 0.72 · 24000Hz
Qwen3-TTS-1.7B (声音克隆 Base) · 西游记 · 石猴出世生成 36.4s / 音频 50.5s · RTF 0.72 · 24000Hz
IndexTTS-2.5 · 西游记 · 石猴出世生成 33.3s / 音频 50.3s · RTF 0.66 · 22050Hz
MOSS-TTS-v1.5 · 西游记 · 石猴出世生成 115.8s / 音频 69.7s · RTF 1.66 · 24000Hz

情深深雨濛濛 · 离别

Qwen3-TTS-1.7B (预设音色 CustomVoice) · 情深深雨濛濛 · 离别生成 53.8s / 音频 75.4s · RTF 0.71 · 24000Hz
Qwen3-TTS-1.7B (声音克隆 Base) · 情深深雨濛濛 · 离别生成 35.3s / 音频 49.9s · RTF 0.71 · 24000Hz
IndexTTS-2.5 · 情深深雨濛濛 · 离别生成 43.8s / 音频 66.4s · RTF 0.66 · 22050Hz
MOSS-TTS-v1.5 · 情深深雨濛濛 · 离别生成 124.0s / 音频 75.0s · RTF 1.65 · 24000Hz

雾子(Kiriko)音色专场

参考/训练数据:ow2voice 项目 383 条人工审校台词(10.5 分钟,48kHz→24kHz)。Qwen3-TTS-Base 用官方 SFT 全参微调 3 epochs(8-bit AdamW 适配 16GB 显存);IndexTTS-2.5 与 MOSS-v1.5 无本机训练条件,用统一参考音频(3.4s「还以为他们死了,看来还没死透。」)零样本克隆。

Qwen3-TTS-1.7B 【雾子微调】383条SFT · 西游记 · 石猴出世生成 33.6s / 音频 43.8s · RTF 0.77 · 24000Hz
IndexTTS-2.5 【雾子零样本克隆】 · 西游记 · 石猴出世生成 26.7s / 音频 39.9s · RTF 0.67 · 22050Hz
MOSS-TTS-v1.5 【雾子零样本克隆】 · 西游记 · 石猴出世生成 96.6s / 音频 57.6s · RTF 1.68 · 24000Hz
Qwen3-TTS-1.7B 【雾子微调】383条SFT · 情深深雨濛濛 · 离别生成 34.9s / 音频 46.9s · RTF 0.74 · 24000Hz
IndexTTS-2.5 【雾子零样本克隆】 · 情深深雨濛濛 · 离别生成 43.3s / 音频 64.7s · RTF 0.67 · 22050Hz
MOSS-TTS-v1.5 【雾子零样本克隆】 · 情深深雨濛濛 · 离别生成 106.7s / 音频 64.2s · RTF 1.66 · 24000Hz

情感控制演示(固定同一句话)

Qwen-FT:微调自 Base,官方文档称 instruct 仅 CustomVoice 支持,实测微调 speaker 的 instruct 接口可调用(效果请耳朵裁决);IndexTTS-2.5:8维情感向量(happy/angry/sad/afraid/disgusted/melancholic/surprised/calm);MOSS:无情感接口,只能改写文本本身。

Qwen-FT 无指令固定句:你怎么才回来,我等了你一整天。
Qwen-FT instruct:愤怒固定句:你怎么才回来,我等了你一整天。
Qwen-FT instruct:悲伤固定句:你怎么才回来,我等了你一整天。
Qwen-FT instruct:兴奋固定句:你怎么才回来,我等了你一整天。
IndexTTS 无向量固定句:你怎么才回来,我等了你一整天。
IndexTTS 向量:happy=1.0固定句:你怎么才回来,我等了你一整天。
IndexTTS 向量:angry=1.0固定句:你怎么才回来,我等了你一整天。
IndexTTS 向量:sad=1.0固定句:你怎么才回来,我等了你一整天。
IndexTTS 向量:surprised=1.0固定句:你怎么才回来,我等了你一整天。
MOSS 原句固定句:你怎么才回来,我等了你一整天。
MOSS 文本加感叹+夸张固定句:你怎么才回来,我等了你一整天。
MOSS 文本改写哀伤固定句:你怎么才回来,我等了你一整天。

自主语气对比(零控制·文本→语气)

不给任何情感参数,考验模型从文本语义自主判断语气的能力(播报/游戏语音聊天场景核心需求)。注意:IndexTTS/MOSS 无参考音频则无雾子音色,此轮它们仅以参考音频定音色(情感默认继承参考),文本语义由各自模型自由发挥。

打得好!

Qwen-FT打得好!
IndexTTS打得好!
MOSS打得好!

卧槽,这波团灭。

Qwen-FT卧槽,这波团灭。
IndexTTS卧槽,这波团灭。
MOSS卧槽,这波团灭。

稳住别浪,我们能赢。

Qwen-FT稳住别浪,我们能赢。
IndexTTS稳住别浪,我们能赢。
MOSS稳住别浪,我们能赢。

欢迎收看今晚的新闻直播,首先为您带来国际方面的最新消息。

Qwen-FT欢迎收看今晚的新闻直播,首先为您带来国际方面的最新消息。
IndexTTS欢迎收看今晚的新闻直播,首先为您带来国际方面的最新消息。
MOSS欢迎收看今晚的新闻直播,首先为您带来国际方面的最新消息。

你怎么才回来,我等了你一整天。

Qwen-FT你怎么才回来,我等了你一整天。
IndexTTS你怎么才回来,我等了你一整天。
MOSS你怎么才回来,我等了你一整天。

赢了赢了赢了!我们终于是冠军了!

Qwen-FT赢了赢了赢了!我们终于是冠军了!
IndexTTS赢了赢了赢了!我们终于是冠军了!
MOSS赢了赢了赢了!我们终于是冠军了!

实时链路原型:ASR→情绪分解→TTS(思路2落地)

素材:user_base_55s.wav(55秒雾子治疗台词朗读)自动切段 → SenseVoice-small 一步出文本+情绪标签 → 情绪路由:② IndexTTS 8维向量映射表 ③ IndexTTS emo_audio_prompt 检索同情绪真实雾子台词(音色雾子、情感也是真雾子演的) ④ Qwen-FT instruct 模板。MOSS 无情感通道未参与。
已知问题:SenseVoice 对短促女声偏判 ANGRY(383条索引中占74%);本素材 11 段全为平静台词(内容本身平缓),路由多样性需换带情绪的语音素材验证。

Segment seg00 · SenseVoice 判定:平静 · 转写「我来帮你恢复平衡。」 · 情感参考台词:00000005eb7a.0b2-let_s_get_bac…

① 用户原声
② IndexTTS 情绪向量路由
③ IndexTTS 真实雾子情感台词参考
④ Qwen-FT instruct 路由

Segment seg01 · SenseVoice 判定:平静 · 转写「如绵绵细雨。」 · 情感参考台词:00000005eb7a.0b2-let_s_get_bac…

① 用户原声
② IndexTTS 情绪向量路由
③ IndexTTS 真实雾子情感台词参考
④ Qwen-FT instruct 路由

Segment seg02 · SenseVoice 判定:平静 · 转写「抚平你的创伤。」 · 情感参考台词:00000005eb7a.0b2-let_s_get_bac…

① 用户原声
② IndexTTS 情绪向量路由
③ IndexTTS 真实雾子情感台词参考
④ Qwen-FT instruct 路由

Segment seg03 · SenseVoice 判定:平静 · 转写「风吹拂来。」 · 情感参考台词:00000005eb7a.0b2-let_s_get_bac…

① 用户原声
② IndexTTS 情绪向量路由
③ IndexTTS 真实雾子情感台词参考
④ Qwen-FT instruct 路由

Segment seg04 · SenseVoice 判定:平静 · 转写「自然能给给予力量。」 · 情感参考台词:00000005eb7a.0b2-let_s_get_bac…

① 用户原声
② IndexTTS 情绪向量路由
③ IndexTTS 真实雾子情感台词参考
④ Qwen-FT instruct 路由

Segment seg05 · SenseVoice 判定:平静 · 转写「你由我来守护。」 · 情感参考台词:00000005eb7a.0b2-let_s_get_bac…

① 用户原声
② IndexTTS 情绪向量路由
③ IndexTTS 真实雾子情感台词参考
④ Qwen-FT instruct 路由

Segment seg06 · SenseVoice 判定:平静 · 转写「灵狐为你引路。」 · 情感参考台词:00000005eb7a.0b2-let_s_get_bac…

① 用户原声
② IndexTTS 情绪向量路由
③ IndexTTS 真实雾子情感台词参考
④ Qwen-FT instruct 路由

Segment seg07 · SenseVoice 判定:平静 · 转写「复恢复吧。」 · 情感参考台词:00000005eb7a.0b2-let_s_get_bac…

① 用户原声
② IndexTTS 情绪向量路由
③ IndexTTS 真实雾子情感台词参考
④ Qwen-FT instruct 路由

Segment seg08 · SenseVoice 判定:平静 · 转写「如同林间暖阳。」 · 情感参考台词:00000005eb7a.0b2-let_s_get_bac…

① 用户原声
② IndexTTS 情绪向量路由
③ IndexTTS 真实雾子情感台词参考
④ Qwen-FT instruct 路由

Segment seg09 · SenseVoice 判定:平静 · 转写「现在没事的了。」 · 情感参考台词:00000005eb7a.0b2-let_s_get_bac…

① 用户原声
② IndexTTS 情绪向量路由
③ IndexTTS 真实雾子情感台词参考
④ Qwen-FT instruct 路由

Segment seg10 · SenseVoice 判定:平静 · 转写「邪气退散。」 · 情感参考台词:00000005eb7a.0b2-let_s_get_bac…

① 用户原声
② IndexTTS 情绪向量路由
③ IndexTTS 真实雾子情感台词参考
④ Qwen-FT instruct 路由

TTS 模型横向对比报告:Qwen3-TTS 1.7B vs IndexTTS-2.5 vs MOSS-TTS v1.5

测试时间:2026-08-30 | 测试机器:Linux + NVIDIA RTX 5060 Ti 16GB(Blackwell, sm_120, CUDA 13.0 驱动)| 全部本地推理 测试文本:①《西游记》第一回"石猴出世"(公版,约 230 字)②《情深深雨濛濛》小说节选(约 250 字,情感对白) 克隆参考音频:clone_1.wav(4.2s 中文女声,Qwen 官方示例音频),三个克隆配置统一使用

一、三个模型是什么来头

Qwen3-TTS-12Hz-1.7B IndexTTS-2.5 MOSS-TTS-v1.5
出品方 阿里通义千问(QwenLM) B站(IndexTeam) 复旦 OpenMOSS 团队
开源协议 Apache-2.0 bilibili 模型许可(限制商用) Apache-2.0
HF 下载量级(本次查询时) Base 302万 / CustomVoice 240万 9.7万 39.9万
架构范式 离散多码本 LM 全端到端("Talker"结构,绕开 LM+DiT 级联) GPT 自回归骨干(~0.8B) + flow-matching s2mel + BigVGAN 声码器 LM 延迟模式(delay pattern) + 32 码本音频 tokenizer
语言底座 Qwen3 系自研 talker Qwen0.6B-emo4 情感 LM Qwen3-4B(36层/4096 hidden)
权重体积 1.7B(4.3GB)+ 0.68GB speech tokenizer 共 5.5GB(gpt 3.3G + s2mel 0.4G + codec 0.6G + qwen0.6b 1.2G) ~8.5B(17GB bf16)
采样率 24kHz 22.05kHz(README)/ config 24kHz 24kHz
支持语言 10 语种(中英日韩德法俄葡西意) 5 语种(中英日西阿) 31 语种(含粤语)
音色获取 CustomVoice: 9 个内置高级音色 + 指令控制;Base: 3 秒快速克隆 零样本克隆(参考音频) 零样本克隆(参考音频),也支持无参考直接合成
情感控制 自然语言 instruct 指令 8 维情感向量(happy/angry/sad/afraid/disgusted/melancholic/surprised/calm),音色与情感解耦 无显式接口,靠文本语义自适应
发音控制 拼音 <行\|XING2>、CMU 音素、日文假名 拼音 tone 标注 + IPA
特色能力 流式/非流式一体,双轨混合流式架构,端到端延迟低至 97ms;VoiceDesign 文字描述设计音色 语速控制 duration_factor(0.5-2.0)、跨语种迁移、长文本 显式停顿 [pause 3.2s]、token 级时长控制、Continuation 前缀续写、code-switching

二、工程与生态对比

Qwen3-TTS IndexTTS-2.5 MOSS-TTS-v1.5
安装方式 pip install qwen-tts(官方 PyPI 包) GitHub 仓库 + uv sync(python 3.10-3.11 强约束) GitHub 仓库 + transformers==5.0.0
Python 要求 3.12 推荐 3.10–3.11 ≥3.10
依赖重量 重(keras/opencv/modelscope 等)
显存需求 ~4-6GB ~6GB bf16 全量 17GB > 16GB,需 device_map="auto" 部分层落 CPU
推理接口 generate_custom_voice / generate_voice_clone / generate_voice_design IndexTTS2.infer(spk_audio_prompt, text, lang, emo_vector, duration_factor) transformers AutoModel/AutoProcessor + build_user_message,标准 HF 生态
首跑额外下载 无(tokenizer 打包在仓库里) 4 个辅助模型(w2v-bert-2.0 / MaskGCT semantic codec / CAMPPlus / BigVGAN)
RTX 5060 Ti 兼容 需 torch cu128 torch 2.8+(默认 cu128 轮子) torch 2.9.1+cu128(pyproject 明确指定)

三、实测结果(本机 RTX 5060 Ti 16GB)

统一流程:同一参考音频(clone_1.wav)做克隆、同一对文本、串行独占 GPU。RTF = 生成耗时 / 音频时长(<1 即快于实时)。

配置 加载 西游记(230字) 情深深(250字) RTF 采样率
Qwen3-TTS 1.7B CustomVoice(预设音色 Vivian + 指令控制) 2.8s 55.7s 音频 / 40.2s 生成 75.4s / 53.8s 0.72 24kHz
Qwen3-TTS 1.7B Base(3 秒声音克隆) ~3s 50.5s / 36.4s 49.9s / 35.3s 0.71 24kHz
IndexTTS-2.5(克隆 + 情感向量) 14.0s 50.3s / 33.3s 66.4s / 43.8s 0.66 22.05kHz
MOSS-TTS-v1.5(8B,克隆,Qwen3 主干 int8 量化) 15.5s 69.7s / 115.8s 75.0s / 124.0s 1.65 24kHz

要点: - 速度:IndexTTS-2.5 与 Qwen3-TTS 都明显快于实时(RTF 0.66-0.72);MOSS 8B 即便量化后仍超实时(1.65),消费级显卡上适合离线场景。 - 显存:Qwen ≈ 5GB、IndexTTS ≈ 7GB、MOSS 量化后 ≈ 10GB(另有 7.1GB fp32 音频 tokenizer 放 CPU)。bf16 全量跑 MOSS 需要 24GB 卡。 - 踩坑记录(对复现者最有价值的部分): 1. IndexTTS-2.5 的 HF 权重与 GitHub main 的 infer_v2_5.py 存在版本错位:tiktoken 词表 58836 vs text_embedding 12001 行,直接按 README 跑会 CUDA device-side assert(embedding 越界,且 CPU 路径异常被吞、静默无产物)。解法:走 infer_v2 路径(bpe.model + config.yaml 自洽),emo_vector 等功能不受影响;官方已知问题是 #748(canonical 的 configs/config_v2_5.yaml 在两个 hub 上都 404)。 2. MOSS 17GB bf16 装不进 16GB 卡;bnb/fnf4/torchao 的 transformers 5.0 量化加载路径都先物化全量 bf16 再量化导致 OOM。解法:CPU 加载 → 仅对 Qwen3 主干 quantize_(language_model, int8_weight_only()) → 整体上 GPUaudio_tokenizer(7.1GB fp32) 留 CPU。速度从 4s/token 提升到 8.6 it/s。 3. torchaudio 2.9 的 load/save 依赖 torchcodec,三个环境都要补装。

四、听感与客观信号(网页可试听)

生成均成功、无中途截断或复读崩溃。以下为 ffmpeg volumedetect 客观指标(试听请打开网页播放器,建议按"音色相似度→中文韵律→标点停顿→情感表达"四个维度对比):

文件 时长 mean_volume max_volume 备注
qwen_custom/qingshen 75.4s -21.6 dB -1.3 dB 电平显著高于其他配置(instruct 情感指令或推高了响度)
qwen_custom/xiyouji 55.7s -23.4 dB -2.0 dB 同上
qwen_clone 两段 ~50s -36~-38 dB -17.5 dB 克隆参考音色,语速较快(同文本音频最短)
indextts25 两段 50.3s/66.4s -34~-36 dB -12~-18 dB 情沉段比西游段响 1.5dB,情感向量有效果迹象
moss_v15 两段 69.7s/75.0s -39~-41 dB -22 dB 响度最低、时长最长,符合其保守稳态韵律风格

建议听点: 1. 多音字:西游记段落里"石猴""迸裂""甲子",情深深段落里"还(huán/hái)"——考验文本前端。 2. 古典白话韵律:西游记是明代白话,长句多逗号,看谁的停顿更自然;MOSS 官方强调标点跟随,IndexTTS-2.5 主打拼音可控。 3. 情感对比:情深深段落三家分别用了 instruct(Qwen CV)、情感向量 sad+melancholic(IndexTTS)、纯文本语义(MOSS)。 4. 音色一致性:IndexTTS/MOSS/Qwen-Clone 用同一参考音频,可直接对比谁更像参考音色;Qwen-CV 是内置音色 Vivian,单独欣赏。

五、加赛:雾子(Kiriko)音色专场

数据源:~/tmp/ow2voice/data/clean_pairs/kiriko/(守望先锋2 国服雾子台词,383 对音频+人工审校中文转写,约 10.5 分钟,重采样 48k→24kHz)。统一参考音频取 3.4s 干净台词(已排除出训练集)。

配置 方式 西游记 情深深 RTF
Qwen3-TTS-1.7B-Base 官方 SFT 全参微调(lr=2e-6,2 epochs,8-bit AdamW,13GB 显存) 43.8s 46.9s 0.76
IndexTTS-2.5 零样本克隆(3.4s 参考) 39.9s 64.7s 0.67
MOSS-TTS-v1.5 零样本克隆(同参考) 57.6s 64.2s 1.68

训练与微调要点(复现注意): - Qwen 官方 sft_12hz.py 在 16GB 卡上直接跑会 OOM(fp32 AdamW 状态 ~13.6GB),换 bitsandbytes AdamW8bit + sdpa 注意力后 13GB 稳定跑完 - lr 是生死线(踩坑实录):首次按 shell 示例 lr=2e-5 训 3 epochs,模型语言能力灾难性崩坏(ASR 实测输出为中英混杂胡话,长文本 165s ≈ 1.4字/秒的呓语)。ASR 退化曲线:epoch-0 完好 → epoch-1 起崩。改用 README 正文示例 lr=2e-6 × 2 epochs 后输出完全可懂(whisper 转写全程跟上原文),语速恢复正常(~3.5字/秒)。小数据集(10 分钟)全参微调务必从小 lr 起步,且每个 epoch 存 checkpoint 逐个 ASR 验收 - 训练 codes 质量验证方法:检查 train_with_codes.jsonl 的码本形状/值域/时长一致性(14 码本 RVQ、值域 2-2038、步数≈时长×12Hz) - 微调后 speaker 列表变为 ['kiriko'],推理直接 generate_custom_voice(speaker="kiriko"),无需参考音频 - IndexTTS-2.5 / MOSS 官方均无单卡训练路线(前者无训练代码,后者全参 SFT 按 8 卡 FSDP 设计),按其官方主路线零样本克隆参赛

六、面向实时场景:自主语气与 ASR→情绪→TTS 原型

应用目标:播报 + 游戏内语音聊天——用户不可能手动调语气,TTS 需要自主判断语气。两条思路同时验证:

6.1 思路1:模型自主判定(零控制文本→语气)

6 句情感内含句(游戏体/播报体/情绪句)零控制过三家雾子音色,产物见网页「自主语气对比」区。能力分层(基于架构与实测):

模型 文本自主度 机制
Qwen3-TTS ⭐⭐⭐ 语义驱动是设计核心,叹号/语气词直接影响韵律
MOSS-v1.5 ⭐⭐ 标点跟随 + 语义自适应,无显式情感接口反而"纯文本驱动"
IndexTTS-2.5 情感与音色解耦设计,不给向量时情感继承参考音频(源码 merge_emovec 实证),文本只影响内容

6.2 思路2:ASR 顺带分解情绪(原型已跑通)

链路:user_base_55s.wav 自动切段 → SenseVoice-small(一步出文本+情绪标签)→ 情绪路由 → TTS

6.3 实时链路推荐

七、选型建议

八、本次复现说明