10|CosyVoice:监督语义 token、流式生成与后训练
CosyVoice 把文本到语义 token 的语言模型、条件流匹配声学模型与波形生成连接起来。与只追求音频重建的 codec 不同,它通过语音理解任务组织 token 表示,让 token 更适合文本条件生成。本文以 1→2→3 的变化解释各阶段职责,不把当前仓库所有功能倒填进首版。
CosyVoice 1 · CosyVoice 2 · CosyVoice 3 · 官方实现
前端 token、语言模型与声学解码器要一起满足流式约束,才能持续输出可播放音频。

图 1|CosyVoice 2 的监督 tokenizer、语言模型与分块流匹配
深入学习路径
沿着语音表示、序列协议、分块声学模型和后训练目标阅读;服务流式指标作为独立前置。
| 子文章 | 阅读目标 |
|---|---|
| 01|流式 TTS:分块、上下文缓存与延迟指标 | 分块、上下文缓存与延迟指标 |
| 02|监督语义编码:ASR 瓶颈、FSQ 与离散编号 | ASR 瓶颈、FSQ 与离散编号 |
| 03|统一语言模型:混合序列、填充标记与流式推进 | 混合序列、填充标记与流式推进 |
| 04|分块声学生成:前瞻、注意力遮罩与流匹配 | 前瞻、注意力遮罩与流匹配 |
| 05|CosyVoice 3:多任务表示、可微奖励与发音控制 | 多任务表示、可微奖励与发音控制 |
各篇包含独立机制解释、张量或状态约定、数值例与验证边界。代码集中入口见 深入机制实验附录。
1. 版本变化发生在什么位置
| 版本 | 关键机制 | 解决的问题 |
|---|---|---|
| CosyVoice 1 | 监督语义 token、LLM、CFM | 让内容生成与声学重建分工 |
| CosyVoice 2 | FSQ、统一流式/非流式文本语音建模、分块因果 CFM | 提高 token 利用与在线合成能力 |
| CosyVoice 3 | 多任务监督 tokenizer、DiffRO、发音修补与指令训练 | 在真实复杂文本、语言和风格中增强可控性 |
截至 2026-09-29,官方 README 给出的模型下载项包含 Fun-CosyVoice3-0.5B-2512。模型名称中的日期、论文发布日期与仓库最新提交属于不同时间字段,应分别记录。
2. FSQ 为何不用最近邻码本查找
Finite Scalar Quantization 把若干连续分量分别压缩、量化到有限整数格点,再组合成离散编号。它与 RVQ 的“逐层量化残差”不同。下式是便于理解的对称范围教学版本:
公式符号与约定
| 符号 | 含义、单位与约定 |
|---|---|
| 量化前向量第 j 个分量。 | |
| 分量索引,1 至 D。 | |
| 把实数压到 −1 与 1 之间。 | |
| 最大整数幅值,本例取 1;实际实现范围按配置决定。 | |
| 量化后的整数分量,本例为 −1、0 或 1。 | |
| 参与组合的量化分量数,本例 2。 | |
| 组合可表示的格点总数;本例 9。 | |
| 四舍五入类量化操作,具体边界规则由实现决定。 |
若两维经压缩后为 (0.8,-0.2),取整得到 (1,0);两维各有三种值,共 9 个组合。训练时离散取整仍需要梯度近似,不能把 round 当作普通处处可导算子。
3. CosyVoice 3 的 DiffRO

图 2|DiffRO 在语义 token 上读取可微任务反馈
| 组件 | 职责 | 与直接评价波形的区别 |
|---|---|---|
| token-to-text 等任务模型 | 检查 token 是否保留文字/属性信息 | 不必每次完整运行声学生成链路 |
| Gumbel-Softmax 近似 | 让离散选择有可反传近似 | 为梯度提供连续通道 |
| KL 约束 | 限制偏离参考模型的程度 | 防止只追任务奖励而破坏已有能力 |
这类任务反馈不能等同于真人听感。内容奖励偏重正确读字,音质与身份还需其他任务和验证。CosyVoice 3 同时扩展原始文字与音素/拼音混合输入,让发音干预更明确;训练中出现的控制格式才有可预期含义。
发音修补把“读错之后只能换句子”转化为更明确的输入控制问题。
模型支持流式输出,不代表外层服务没有等待整句、缓存或首包阻塞。
4. 学习与实验路线
先测同一参考的零样本短句,再测数字、多音字、跨语言与长句,最后测输入文字逐步到达的情形。参数与硬件变化应与前后端改动分开记录。下一篇 流式合成与状态给出延迟定义、分块图和诊断方法。
专题导航:TTS 总目录
正在连接 GitHub 评论…