CosyVoice 开源语音合成模型详解

关键要点

CosyVoice 是阿里通义实验室(FunAudioLLM)开源的多语言语音生成模型,支持 9 种语言和 18+ 种中文方言(含粤语),具备零样本声音克隆能力。


版本演进

版本 发布时间 模型大小 关键特性
CosyVoice 1.0 2024/07 300M 首版,基础多语言 TTS
CosyVoice 2.0 2024/12 500M 流式合成、延迟 150ms
Fun-CosyVoice3 2025/12 500M 内容一致性、说话人相似度、韵律自然度全面提升

核心特性

语言覆盖

合成模式

模式 说明 是否需要参考音频
SFT 预置音色直接合成 否
Zero-shot 给一段参考音频克隆声音 是
Cross-lingual 跨语言合成(如用中文声音说英语) 是
Instruct 通过文本指令控制语气、方言、情感 是

Instruct 模式亮点

可以通过自然语言指令控制合成效果,例如: - 'You are a helpful assistant. 请用广东话表达。<|endofprompt|>' → 用粤语朗读 - 'You are a helpful assistant. 请用尽可能快地语速说一句话。<|endofprompt|>' → 加速朗读 - 支持 [breath]、[laughter]、<strong> 等细粒度控制标签


模型规模对比:语音模型为什么比 LLM 小?

当前主流 TTS 模型规模

模型 参数量 出品方
F5-TTS 0.3B 上海交大
CosyVoice2/3 0.5B 阿里通义
Spark TTS 0.5B 科大讯飞
Index-TTS2 1.5B —
GLM-TTS 1.5B 智谱
HiggsAudio-v2 3B 目前开源最大
Seed-TTS 未公开 字节(闭源)

ASR 模型规模

模型 参数量
Whisper 39M ~ 1.5B
SenseVoice ~0.3B
Qwen3-ASR 多种规格

全模态大模型(语音+文本一体)

模型 参数量
Qwen2.5-Omni 7B
GPT-4o 巨大(未公开)

为什么语音模型比 LLM 小?

  1. 任务不同:TTS 只需把文本"翻译"成音频波形,不需要理解世界知识
  2. 架构不同:LLM 是纯 Transformer 堆叠,语音模型通常是 LLM + 声码器(vocoder)+ Flow Matching 的组合,LLM 部分只是其中一环
  3. 信息密度不同:语音的"语义信息密度"远低于文本,0.5B 参数就能很好地建模声学特征

趋势

语音模型在变大:第一代 CosyVoice 300M → 第二代 500M → 全模态方向(Qwen-Omni)已到 7B。专用 TTS 模型当前主流规模 0.3B~1.5B,足够好用;真正让语音"有灵魂"(情感、风格控制)的是全模态大模型路线。


CosyVoice3 性能评测(官方数据)

模型 中文 CER↓ 中文 SS↑ 英文 WER↓ 英文 SS↑
Human 1.26% 75.5 2.14% 73.4
Seed-TTS(闭源) 1.12% 79.6 2.25% 76.2
CosyVoice2 1.45% 75.7 2.57% 65.9
Fun-CosyVoice3 1.21% 78.0 2.24% 71.8
Fun-CosyVoice3+RL 0.81% 77.4 1.68% 69.5

CER = 字错率(越低越好),SS = 说话人相似度(越高越好) CosyVoice3+RL 的中文 CER 已超越人类水平(0.81% vs 1.26%)


与 Edge-TTS 对比

维度 Edge-TTS CosyVoice3
粤语支持 2 个固定音色 18 种方言 + instruct 控制
声音克隆 不支持 零样本克隆
自然度 中等(有机械感) 高(接近真人)
开源 否(微软 API) 是(Apache 2.0)
部署 无需 GPU(云端) 需 GPU(0.5B 模型 T4 即可)
成本 免费 免费(自建)
适用场景 快速原型、轻量级 高质量内容生产、研究

实测感受(2026-10-18)


Colab 快速体验指南

环境要求

步骤

Cell 1: 克隆仓库

!git clone --recursive https://github.com/FunAudioLLM/CosyVoice.git
%cd /content/CosyVoice
!git submodule update --init --recursive

Cell 2: 安装依赖

!pip install -r requirements.txt -q
!apt-get install -y sox libsox-dev -qq

Cell 3: 下载模型

# HuggingFace(海外)
from huggingface_hub import snapshot_download
snapshot_download('FunAudioLLM/Fun-CosyVoice3-0.5B-2512', local_dir='pretrained_models/Fun-CosyVoice3-0.5B')

# 或 ModelScope(国内镜像,更快)
# from modelscope import snapshot_download
# snapshot_download('FunAudioLLM/Fun-CosyVoice3-0.5B-2512', local_dir='pretrained_models/Fun-CosyVoice3-0.5B')

Cell 4: 粤语合成测试

import sys
sys.path.append('third_party/Matcha-TTS')
import torchaudio
from cosyvoice.cli.cosyvoice import AutoModel

cosyvoice = AutoModel(model_dir='pretrained_models/Fun-CosyVoice3-0.5B')

# 粤语口语文本
text = "好少咯,一般系放嗰啲国庆啊,中秋嗰啲可能会咯。"
instruct_text = 'You are a helpful assistant. 请用广东话表达。<|endofprompt|>'
prompt_wav = './asset/zero_shot_prompt.wav'

for i, j in enumerate(cosyvoice.inference_instruct2(text, instruct_text, prompt_wav, stream=False)):
    torchaudio.save(f'cantonese_{i}.wav', j['tts_speech'], cosyvoice.sample_rate)

from IPython.display import Audio
display(Audio('cantonese_0.wav'))

Colab 实测部署记录

环境

实际下载量:远不止 0.5B

虽然模型标注"0.5B 参数",但实际部署需要下载的内容远超预期:

组件 大小 说明
CosyVoice 仓库 + Matcha-TTS 子模块 ~67 MB git clone --recursive
Python 依赖(requirements.txt) 若干 pip install,含 torch、torchaudio 等
Fun-CosyVoice3-0.5B 模型文件 ~9.75 GB HuggingFace 下载,含 20 个文件
系统依赖(sox) ~几 MB apt-get install sox libsox-dev

关键认知:0.5B 只是 LLM 主干的参数量。完整系统包含 LLM + Flow Matching + 声码器 + 语音编解码器 + 文本前端等多个子模型,总下载量约 10 GB。部署一个"小模型"的实际磁盘开销是参数量数字的 10-20 倍。

遇到的坑

1. onnxruntime-gpu 版本不兼容

ERROR: Could not find a version that satisfies the requirement onnxruntime-gpu==1.18.0

requirements.txt 锁定了 onnxruntime-gpu==1.18.0,但 Colab 的 Python 3.12 环境下该版本不可用(1.18.0 要求 Python <3.12)。解决方案:忽略此错误,CosyVoice3 推理不依赖 onnxruntime,可继续运行。

2. Python 版本兼容问题

ERROR: Ignored the following versions that require a different python version: 
1.21.x Requires-Python >=3.7,<3.11
1.26.x Requires-Python <3.13,>=3.9

部分旧版 numpy 等依赖与 Python 3.12 不兼容,但 pip 会自动选择可用版本,不影响核心功能。

3. Matcha-TTS 子模块必须克隆

CosyVoice 依赖 third_party/Matcha-TTS 子模块,推理代码中有 sys.path.append('third_party/Matcha-TTS')。如果忘记 --recursive 克隆,后续会报 ImportError。

实际部署步骤(修正版)

# Cell 1: 克隆仓库(必须 --recursive)
!git clone --recursive https://github.com/FunAudioLLM/CosyVoice.git
%cd /content/CosyVoice
!git submodule update --init --recursive

# Cell 2: 安装依赖(onnxruntime-gpu 报错可忽略)
!pip install -r requirements.txt -q
!apt-get install -y sox libsox-dev -qq

# Cell 3: 下载模型(约 10GB,Colab Pro 约 1-2 分钟)
from huggingface_hub import snapshot_download
snapshot_download('FunAudioLLM/Fun-CosyVoice3-0.5B-2512', 
                  local_dir='pretrained_models/Fun-CosyVoice3-0.5B')

# Cell 4: 推理测试
import sys
sys.path.append('third_party/Matcha-TTS')
import torchaudio
from cosyvoice.cli.cosyvoice import AutoModel

cosyvoice = AutoModel(model_dir='pretrained_models/Fun-CosyVoice3-0.5B')
text = "好少咯,一般系放嗰啲国庆啊,中秋嗰啲可能会咯。"
instruct_text = 'You are a helpful assistant. 请用广东话表达。<|endofprompt|>'
prompt_wav = './asset/zero_shot_prompt.wav'

for i, j in enumerate(cosyvoice.inference_instruct2(text, instruct_text, prompt_wav, stream=False)):
    torchaudio.save(f'cantonese_{i}.wav', j['tts_speech'], cosyvoice.sample_rate)

from IPython.display import Audio
display(Audio('cantonese_0.wav'))

相关资源

相关笔记