CosyVoice 是阿里 Speech Lab(FunAudioLLM 团队)于 2024 年 7 月发布的大规模多语言零样本 TTS 合成系统。核心创新是首次将有监督语义语音 token(Supervised Semantic Speech Tokens, S³)引入 TTS 模型,相比无监督 token 在内容一致性和说话人相似度上显著提升。
- 系统架构
- 有监督语义 Token(S³)
- LLM Token 生成
- Optimal-Transport Conditional Flow Matching(OT-CFM)
- 零样本语音克隆
- 指令驱动生成(CosyVoice-instruct)
- 训练数据
- 大规模多语言数据
CosyVoice
CosyVoice 是阿里 Speech Lab(FunAudioLLM 团队)于 2024 年 7 月发布的大规模多语言零样本 TTS 合成系统。核心创新是首次将有监督语义语音 token(Supervised Semantic Speech Tokens, S³)引入 TTS 模型,相比无监督 token 在内容一致性和说话人相似度上显著提升。
代码开源:https://github.com/FunAudioLLM/CosyVoice Demo:https://fun-audio-llm.github.io
系统架构
CosyVoice 由四个核心组件组成:
| 组件 | 功能 |
|---|---|
| S³ Tokenizer | 有监督语义语音 token 提取 |
| Text Encoder | 文本与语音 token 语义空间对齐 |
| LLM | 自回归生成语音 token 序列 |
| OT-CFM Vocoder | 从 token 生成 Mel 频谱图 |
训练流水线:Tokenizer(ASR encoder + VQ) → LLM(text + speaker → tokens) → CFM(tokens → waveform) → HiFiGAN(mel → waveform)
1. 有监督语义 Token(S³)
核心创新:将 vector quantization 层插入多语言 ASR 模型编码器中间,从有监督 ASR 训练中获得离散语音 token。
- 基座模型:SenseVoice-Large(富识别 ASR 模型)
- VQ 插入位置:前 6 层 encoder 之后
- Codebook:单个 codebook,4096 个码向量
- 更新方式:EMA(Exponentially Moving Average)更新 codebook embedding
- 训练:8 张 A800 GPU,210,000 步微调
数学流程:
- Mel 频谱图 X → Encoder₁ → 上下文表征 H
- VQ 离散化:μₗ = argminₙ ||hₗ - cₙ||₂
- Codebook 更新:c_{μₗ} := α·c_{μₗ} + (1-α)·hₗ
- 量化表征 H̄ → 额外位置编码 → Encoder₂ → H̃
- ASR Decoder 预测文本标签后验概率 P(Y|X)
对比无监督 token(Encodec、HuBERT),S³ token 的优势: - 显式语义信息,与文本有明确对齐 - 中文 Common Voice 上 WER 比 Whisper-Large-V3 低 4.14% - LibriTTS 上 WER 3.18%(插入 VQ 后仅轻微影响 ASR 性能)
2. LLM Token 生成
将 TTS 重构为自回归序列生成问题。
输入序列构造:[S, v, {ȳᵤ}ᵤ∈[1:U], T, {μₗ}ₗ∈[1:L], E]
- S = start of sequence
- v = speaker embedding(x-vector / 3D-Speaker CAM++,从 3-10s 参考音频提取)
- {ȳᵤ} = 文本编码(BPE tokenizer + TextEncoder,对齐文本与语音语义空间)
- T = turn of speech(文本与语音的分隔标记)
- {μₗ} = 有监督语义 token 序列
- E = end of sequence
训练:Teacher-forcing,仅计算语音 token 和 E 的交叉熵损失。
模型规格:
| 配置 | Text Encoder | Language Model |
|---|---|---|
| Tiny | 6 层, 512d, 8 heads | 12 层, 512d, 8 heads |
| Normal | 6 层, 1024d, 16 heads | 14 层, 1024d, 16 heads |
- Tiny LR = 1e-3,Normal LR = 1e-4
- Warmup = 10,000 步
- 多语言模型:64 张 V100-32M,800,000 步
3. Optimal-Transport Conditional Flow Matching(OT-CFM)
用 CFM 替代传统 diffusion 模型,直接将语义 token 映射到 Mel 频谱图,绕过 phonemizer 和 forced aligner。
- 概率密度路径:从标准正态先验 p₀(X) = N(X; 0, I) 到 Mel 频谱数据分布 q(X)
- OT 路径:φᵗᵒᵗ(X₀, X₁) = (1-(1-σ)t)X₀ + tX₁
- 神经网路输入:OT 路径中间态、时间步 t、speaker embedding v、语义 token {μₗ}、masked Mel 频谱 X̃₁
- Masking:从随机起点到末尾的连续帧置零
- Cosine scheduler:t := 1 - cos(½tπ),在生成初期分配更多步数
- Classifier-Free Guidance(CFG):
- 训练时以 0.2 概率随机丢弃条件
- 推理时:ν̃ₜ = (1+β)·νₜ(条件) - β·νₜ(无条件),β = 0.7
- 最终波形:CFM 输出 Mel → HiFiGAN vocoder → 波形
零样本语音克隆
- 参考音频:3-10 秒即可提取 speaker embedding
- 同语言:prompt speech token + 输入文本合并为统一输入,prompt token 视为预生成
- 跨语言:省略 prompt 关联的文本和 token,防止原语言韵律影响目标语言
- 增强条件:speaker embedding + prompt Mel 频谱拼接,提升音色和环境一致性
指令驱动生成(CosyVoice-instruct)
在 CosyVoice-base 基础上进行 instruction fine-tuning,支持:
| 控制维度 | 示例 |
|---|---|
| Speaker Identity | "Selene 'Moonshade', is a mysterious, elegant dancer..." |
| Speaking Style | "A happy girl with high tone and quick speech." |
| 细粒度副语言 | [laughter], [breath], 词语强调 <strong>...</strong> |
训练数据:Speaker Identity 101h + Speaking Style 407h + Fine-grained Paralinguistics 48h
情感控制准确率(6 种情绪):CosyVoice-instruct 在 happy(1.00)、sad(0.98)、angry(0.83)、disgusted(0.93) 上显著优于 base 和无指令版本。
训练数据
大规模多语言数据
| 语言 | 时长 |
|---|---|
| 中文(ZH) | 130,000 小时 |
| 英文(EN) | 30,000 小时 |
| 粤语(Yue) | 5,000 小时 |
| 日语(JP) | 4,600 小时 |
| 韩语(KO) | 2,200 小时 |
| 总计 | ~171,800 小时 |
数据流程:语音检测 → SNR 估计 → 说话人分离 → SenseVoice-Large + Paraformer 伪标签 → Force-alignment 精炼
性能指标
英语(LibriTTS test-clean)
| 模型 | WER (%) | Ins.+Del. | 说话人相似度 (SS) |
|---|---|---|---|
| Original | 2.66 | 92 | 69.67 |
| ChatTTS | 8.32 | 441 | - |
| CosyVoice | 2.89 ± 0.18 | 88.60 ± 3.88 | 74.30 ± 0.15 |
| CosyVoice + ASR rerank (5×) | 1.51 | 47 | 74.30 |
中文(AISHELL-3 test)
| 模型 | CER (%) | Ins.+Del. | SS |
|---|---|---|---|
| Original | 2.52 | 25 | 74.15 |
| ChatTTS | 3.87 | 111 | - |
| CosyVoice | 3.82 ± 0.24 | 24.4 ± 2.24 | 81.58 ± 0.16 |
| CosyVoice + ASR rerank (5×) | 1.84 | 11 | 81.58 |
关键发现
- 数据规模至关重要:仅用 LibriTTS 训练的多语言 tokenizer 会同时降低内容一致性和说话人相似度;加入大规模内部数据集后显著提升至人类水平
- 文本和语音 tokenizer 共同决定内容一致性,对说话人相似度影响较小
- CosyVoice 可作为数据生成器:用合成语音训练 ASR 模型,加入 MLS 文本的合成数据显著提升识别精度(WER 2.79→2.04)
- 单 codebook 4096 码的 S³ tokenizer 即达到卓越效果
相关页面
- fun-audio-llm — FunAudioLLM 团队,CosyVoice 的归属组织
- fun-codec — 同团队的语音编解码工具包
- cosyvoice-2 — CosyVoice 的后续版本
- cosyvoice-3 — CosyVoice 第三代
- diffro — 同团队的 diffusion-based 语音模型
- qwen3-tts — Qwen 团队的 TTS 模型,竞品
- seed-tts — 字节跳动 Seed 团队的自回归 TTS,竞品