关键要点
CosyVoice 是阿里通义实验室(FunAudioLLM)开源的多语言语音生成模型,支持 9 种语言和 18+ 种中文方言(含粤语),具备零样本声音克隆能力。
- 最新版本:Fun-CosyVoice3-0.5B(2025/12 发布)
- 核心能力:多语言/方言 TTS + 零样本声音克隆 + instruct 指令控制
- 粤语支持:原生支持广东话(zh-HK),可通过 instruct 模式指定方言
- 开源协议:Apache 2.0,可商用
- GitHub:FunAudioLLM/CosyVoice
| 版本 | 发布时间 | 模型大小 | 关键特性 |
|---|---|---|---|
| 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 | 通过文本指令控制语气、方言、情感 | 是 |
可以通过自然语言指令控制合成效果,例如:
- 'You are a helpful assistant. 请用广东话表达。<|endofprompt|>' → 用粤语朗读
- 'You are a helpful assistant. 请用尽可能快地语速说一句话。<|endofprompt|>' → 加速朗读
- 支持 [breath]、[laughter]、<strong> 等细粒度控制标签
| 模型 | 参数量 | 出品方 |
|---|---|---|
| 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 | 未公开 | 字节(闭源) |
| 模型 | 参数量 |
|---|---|
| Whisper | 39M ~ 1.5B |
| SenseVoice | ~0.3B |
| Qwen3-ASR | 多种规格 |
| 模型 | 参数量 |
|---|---|
| Qwen2.5-Omni | 7B |
| GPT-4o | 巨大(未公开) |
语音模型在变大:第一代 CosyVoice 300M → 第二代 500M → 全模态方向(Qwen-Omni)已到 7B。专用 TTS 模型当前主流规模 0.3B~1.5B,足够好用;真正让语音"有灵魂"(情感、风格控制)的是全模态大模型路线。
| 模型 | 中文 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 | CosyVoice3 |
|---|---|---|
| 粤语支持 | 2 个固定音色 | 18 种方言 + instruct 控制 |
| 声音克隆 | 不支持 | 零样本克隆 |
| 自然度 | 中等(有机械感) | 高(接近真人) |
| 开源 | 否(微软 API) | 是(Apache 2.0) |
| 部署 | 无需 GPU(云端) | 需 GPU(0.5B 模型 T4 即可) |
| 成本 | 免费 | 免费(自建) |
| 适用场景 | 快速原型、轻量级 | 高质量内容生产、研究 |
!git clone --recursive https://github.com/FunAudioLLM/CosyVoice.git
%cd /content/CosyVoice
!git submodule update --init --recursive
!pip install -r requirements.txt -q
!apt-get install -y sox libsox-dev -qq
# 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')
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'))
虽然模型标注"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 倍。
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,可继续运行。
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 会自动选择可用版本,不影响核心功能。
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'))