dots.tts:小红书用 2B 参数告诉你,语音合成不需要离散 token
2026 年 6 月 5 日,小红书 AI 团队(rednote-hilab)在 GitHub 上悄然放出了一个名为 dots.tts 的项目。四天后,它拿到了 346 颗星、21 个 fork,HuggingFace 上有了在线 Demo,社区已经有人把它移植到了 Apple Silicon 的 MLX 框架和 ComfyUI 上。这个项目只有 2B 参数,但在 Seed-TTS-Eval 基准上拿下了开源模型的最佳平均成绩——中文 WER 0.94%、英文 WER 1.30%,说话人相似度 81.0。更关键的是,它在整个管线里没有使用一个离散 token。

一、离散 vs 连续:TTS 的两条技术路线
语音合成(Text-to-Speech,TTS)领域在过去两年经历了剧烈的技术路线分化。
传统做法是把语音信号量化成离散 token,再用语言模型逐个预测。这条路线的代表有 CosyVoice、Seed-TTS、VoxCPM 等。它的优势是复用了 LLM 的自回归范式,训练稳定、工程成熟。但离散化本身就是一种信息压缩——把连续的声学信号硬切成有限个码本条目,必然会丢失细节,尤其在韵律、情感和说话人音色的还原上存在天花板。
dots.tts 选了另一条路:全连续。它用 AudioVAE 把 48kHz 的原始波形编码成连续的潜在表示,然后用自回归流匹配(AR flow-matching)直接在连续空间里逐 patch 预测。没有 VQ(向量量化)、没有码本、没有离散 token——整个管线从文本到波形都是连续的。
这不是一个简单的“用连续替代离散”的故事。dots.tts 的架构设计把语义编码器、LLM 骨干和流匹配声学头三者串在一起,每个组件各司其职,形成了一条完整的全连续流水线。
二、架构:三个组件各司其职

dots.tts 的架构由三个核心组件组成:
2.1 AudioVAE:48kHz 的连续编码器
AudioVAE 是整个管线的入口和出口。它把 48kHz 的单声道波形编码成连续的潜在表示(latent),推理结束后再用 BigVGAN 风格的因果解码器把 latent 解码回波形。这个 VAE 是冻结的,不参与训练,保证了声学表示的稳定性。
48kHz 的采样率意味着 dots.tts 可以生成接近 CD 音质的语音,这在开源 TTS 模型中并不常见——很多模型为了降低计算量会选择 16kHz 或 24kHz。
2.2 语义编码器 + Qwen2.5-1.5B 骨干
文本侧的处理直接复用了 Qwen2.5-1.5B-Base 作为 LLM 骨干。文本以 BPE token 的形式输入,不需要经过音素转换(phoneme conversion),这意味着它天然支持多语言,不受限于特定语言的音素集。
语义编码器的作用是把每个新生成的 VAE patch 重新编码成紧凑的嵌入,送给 LLM 作为下一步预测的上下文。它会剥离高方差的声学细节,只保留语义级别的信息,让 LLM 专注于“下一段语音该说什么”而不是“下一个采样点是什么”。
2.3 AR 流匹配头:连续空间的逐 patch 去噪
这是 dots.tts 最核心的创新。声学头是一个 DiT(Diffusion Transformer),它根据 LLM 的隐藏状态和已生成的 AR 前缀来去噪下一个 VAE patch。同时,它还接收一个冻结的 CAM++ 说话人 x-vector 作为侧输入,用于保持音色一致性。
这个设计的关键在于:流匹配(flow-matching)直接在连续空间里操作,不需要先量化成离散 token 再生成。每个 patch 的生成都是一次连续的去噪过程,保留了比离散化更丰富的声学细节。
2.4 两种序列布局
dots.tts 支持两种推理模式:
- 普通模式(plain mode):把完整文本作为前缀放在音频 span 之前,标准的 TTS 流程
- 1T1A 交错模式:一个 BPE token 和一个 audio step 交替排列,支持低延迟流式输出,适合与对话 LLM 配合使用
交错模式意味着 dots.tts 可以在 LLM 输出文本的同时就开始生成语音,延迟可以压到非常低。这对实时对话场景非常有价值。
三、训练:三阶段管线
dots.tts 的训练分三个阶段:
- 预训练(Pretrain):在大规模语音数据上训练基础模型
- 自纠正对齐(Self-Corrective Alignment, SCA):用自监督方式修正生成错误,提升音质和对齐度
- MeanFlow 蒸馏(MF):把多步流匹配蒸馏成 4 步推理,实现 7.5 倍加速
三个阶段产出的 checkpoint 都已开源。SCA 版本在各项基准上表现最好,MF 版本在保持接近 SCA 性能的同时把推理步数从 10 步压缩到 4 步,速度提升显著。
四、性能:开源 SOTA 的成绩单
dots.tts 在多个基准上都展示了强劲的表现。
4.1 Seed-TTS-Eval
这是目前 TTS 领域最权威的零样本基准之一,测试模型在没有微调的情况下模仿任意说话人的能力。
| 模型 | 参数 | 中文 WER↓ / SIM↑ | 英文 WER↓ / SIM↑ | 平均 WER↓ / SIM↑ |
|---|---|---|---|---|
| Seed-TTS(闭源) | — | 1.12 / 79.6 | 2.25 / 76.2 | 3.65 / 77.8 |
| Qwen3-TTS | 1.7B | 1.22 / 77.0 | 1.23 / 71.7 | 3.07 / 74.5 |
| CosyVoice 3 | 1.5B | 1.12 / 78.1 | 2.22 / 72.0 | 3.06 / 75.3 |
| dots.tts (SCA) | 2B | 0.94 / 81.0 | 1.30 / 77.1 | 2.95 / 79.2 |
dots.tts 在中文 WER(0.94%)和中文 SIM(81.0)上都拿到了最佳成绩,平均 WER 2.95% 也是全场最低。在说话人相似度上,dots.tts 的 79.2 平均分大幅领先第二名 Seed-TTS 的 77.8。

4.2 MiniMax 多语言基准(24 语种)
这个基准测试模型在 24 种语言上的表现。dots.tts 的 SCA 版本在 24 语种上拿到了最高的平均说话人相似度 83.9,在 19 种语言上单独领先,另外 2 种打平。
这个结果说明全连续架构在多语言场景下的优势——不需要针对每种语言设计离散码本,连续表示天然适应不同语言的声学特征。
4.3 EmergentTTS-Eval
这是一个更贴近实际使用的基准,由 Gemini-2.5-Pro 作为裁判,评估语音的情感表达、韵律复杂度等维度。
dots.tts 的 SCA 版本在语法复杂度(Syntactic Complexity)上拿到了 65.7% 的胜率,超过了所有闭源系统(包括 GPT-4o 和 Gemini)。Pretrain 版本在情感表达(Emotions)上拿到了开源系统中最高的 72.7%。

五、实际使用
5.1 安装
dots.tts 的安装比较标准,推荐用 conda 创建独立环境:
1 | conda create -n dots_tts python=3.10 -y |
模型权重需要从 HuggingFace 下载,SCA 版本约 4GB 左右。首次运行时会自动下载 CAM++ 说话人编码器。
5.2 命令行用法
最简单的用法是给一段参考音频和目标文本:
1 | dots.tts \ |
--prompt-audio 提供参考音频的音色,--prompt-text 提供参考音频对应的文本。两者配合使用时是“续写式克隆”(continuation cloning),效果最好。
如果只提供 --prompt-audio 不提供 --prompt-text,会走 x-vector 模式,只从参考音频中提取音色信息。精度略低但更方便。
5.3 Python API
1 | from dots_tts.runtime import DotsTtsRuntime |
optimize=True 会在首次加载时做 warmup(较慢),之后的推理会更快。
5.4 HuggingFace 在线体验
如果不想本地部署,可以直接在 HuggingFace Space 上体验:

上传参考音频、输入文本、点击 Generate 即可。支持中文、英文、日文、韩文、粤语等多种语言。
5.5 社区生态
dots.tts 开源仅四天,社区已经出现了多个第三方项目:
- dots-tts-mlx:Apple Silicon 纯 MLX 推理端口,不需要 Python 运行时
- mlx-swift-dots-tts:Swift 原生端口,直接在 iOS/macOS 上跑
- Dots-TTS-ComfyUI:ComfyUI 自定义节点,支持 TTS、语音克隆和 Whisper 转录
ComfyUI 的集成意味着 dots.tts 可以和 Stable Diffusion、视频生成等工作流无缝对接。对内容创作者来说,“生成画面 + 配音”可以一站式完成。
六、局限性
dots.tts 不是完美的,有几个值得注意的限制:
低资源语言的 WER 差距。虽然 24 语种的平均 SIM 很高,但在阿拉伯语、印地语、土耳其语、越南语等低资源语言上,WER 明显高于高资源语言。这是 BPE 骨干的固有代价——LLM 的语言覆盖越广,对低资源语言的文本处理就越粗糙。
训练数据偏向语音。虽然 AudioVAE 本身是模态无关的,但 dots.tts 的骨干是在语音为主的混合数据上训练的。唱歌、语音+音效混合生成等场景不在当前版本的覆盖范围内。
微调入口有限。目前只开源了微调脚本,完整的训练管线(预训练、SCA、MeanFlow 蒸馏)还没有释放。想从头训练自己的版本需要等后续更新。
48kHz 的计算开销。48kHz 的采样率意味着更高的计算量。在没有 GPU 的机器上,生成一段 10 秒的语音可能需要几十秒甚至更长。MF 蒸馏版本把推理步数压缩到了 4 步,但仍然需要 GPU 支持。
七、为什么值得关注
dots.tts 的意义不只是“又一个 TTS 模型”。它证明了三件事:
全连续路线是可行的。过去两年,离散 token 路线在 TTS 领域占据了主流,因为它的训练范式更成熟、工程更简单。dots.tts 用实际的 benchmark 成绩证明,全连续路线不仅可行,而且在音质和说话人相似度上可以超越离散路线。
2B 参数足够了。dots.tts 只有 2B 参数,但在 Seed-TTS-Eval 上超过了 1.5B 的 CosyVoice 3 和闭源的 Seed-TTS。这说明模型架构的设计比堆参数更重要。
小红书的 AI 实力被低估了。rednote-hilab 这个团队之前不太被外界关注,但 dots.tts 的技术完成度和开源诚意(Apache-2.0、完整 checkpoint、微调脚本、在线 Demo)都说明这不是一个“交作业”式的开源,而是真正想让社区用起来的项目。
相关链接
- 标题: dots.tts:小红书用 2B 参数告诉你,语音合成不需要离散 token
- 作者: Seven
- 创建于 : 2026-06-09 18:00:00
- 更新于 : 2026-07-14 00:18:15
- 链接: https://blog.oneiseven.top/2026/06/09/dots-tts-小红书开源2B参数全连续语音合成/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。