跳到主要内容

语音合成模型

把 CosyVoice 搬进你自己的那张卡

3 秒参考音频就能克隆音色,9 种语言加 18 种以上中文方言,双向流式最低 150ms 首包。它小到一张 3090 就能养活,问题从来不是显存,是环境。

CosyVoice 是阿里通义语音团队开源的 LLM 系语音合成模型,仓库现在挂在 GitHub 的 QwenAudio/CosyVoice 下——原来的 FunAudioLLM 组织名已经改成了 QwenAudio,老链接会自动跳转,但你写在 Dockerfile 里的 git clone 地址最好一并更新。模型权重那边反而没动:HuggingFace 仍是 FunAudioLLM,ModelScope 上 1.0 与 2.0 系列仍挂在 iic 下。整个项目 Apache-2.0,推理、训练、部署全栈开放,2.2 万 star。

当前主线是 2025 年 12 月放出的 Fun-CosyVoice3-0.5B-2512。它的 llm.pt 是 2.02GB,flow.pt 1.33GB,hift.pt 83.2MB,全 fp32 加起来 3.44GB;此外还要装下 969MB 的 speech_tokenizer_v3.onnx 和 28.3MB 的 campplus.onnx。也就是说,这是一个总共不到 5GB 的模型——比它能干的事小得多。论文里把参数量从 0.5B 推到了 1.5B、训练数据从一万小时扩到一百万小时,但开源出来的权重只有 0.5B 这一档,1.5B 至今没有公开,别再去搜下载链接了。

真正劝退人的不是显存,是依赖。Matcha-TTS 是 git 子模块,忘了 --recursive 就等着 ModuleNotFoundError: No module named 'matcha';ttsfrd 只提供 cp310 的 linux_x86_64 轮子;vLLM 的版本必须和 transformers 钉死配对;CosyVoice3 上开 TensorRT fp16 官方自己在代码里警告有性能问题。这些坑在一台干净的 GPU 机器上十几分钟就能趟完,在你本地那台装了三年的机器上可能耗掉一整天。NexGPU 有 2000 多个预置镜像,PyTorch 和 vLLM 都是现成的,按秒计费,跑通了再谈下一步。

01 —

现在到底该下哪个权重

三条线并存,文件大小与采样率都不一样,别混着用

版本参数量显存上下文说明
Fun-CosyVoice3-0.5B-25120.5B(Qwen2.5-0.5B 骨干,hidden 896)fp32 权重 3.44GB(llm 2.02 + flow 1.33 + hift 0.08)|建议 ≥12GB24kHz 输出|9 语种 + 18 种中文方言当前主线。零样本跨语种克隆、拼音与 CMU 音素级发音纠正、指令控制情绪语速音量。注意零样本调用要在 prompt 文本前加 You are a helpful assistant.<|endofprompt|> 前缀。
Fun-CosyVoice3-0.5B-2512 RL(llm.rl.pt)0.5B,同架构不同 LLM 检查点额外 2.02GB 权重文件|运行时占用与 base 相同24kHz 输出|同基座强化学习后训练版,装在同一目录里作为独立的 llm.rl.pt。test-zh 字错率 0.81% 对比 base 的 1.21%,test-en 词错率 1.68%。要发音准确度就用这个。
CosyVoice2-0.5B0.5Bfp32 权重 2.55GB(llm 2.02 + flow 0.45 + hift 0.08)|建议 ≥8GB24kHz 输出|25Hz token 速率2024 年 12 月的 25Hz 版本,生态最成熟,vLLM 支持从 2025 年 5 月就有了。中文 CER 1.45%、英文 WER 2.57%、说话人相似度 75.7%。求稳定、求老教程能对上,选它。
CosyVoice-300M / -SFT / -Instruct300M权重体积远小于 0.5B 线|8GB 卡绰绰有余22.05kHz 输出|50Hz token 速率1.0 老线。注意采样率是 22050 而非 24000,和 2.0 之后的产物不能直接混剪。SFT 版内置预设音色可 list_available_spks(),Instruct 版走自然语言指令。新项目不建议从这里起步。
CosyVoice 3(1.5B,论文规模)1.5B—(权重未开源)论文 arXiv 2505.17589论文把模型从 0.5B 扩到 1.5B、数据扩到一百万小时,但开源的只有 0.5B。想要 1.5B 的效果,现实路径是拿 0.5B 在自己的数据上做后训练,而不是等权重。

02 —

按用途挑卡,别为一个 0.5B 模型付 H100 的钱

CosyVoice 的瓶颈是延迟和并发,不是显存容量

  • 跑通环境、试听零样本音色克隆、做效果评估

    RTX 3090 24GB$0.193/卡·时

    全站最便宜的 24GB,比 16GB 的 Tesla T4($0.298)还便宜且快得多,装下 3.44GB 权重加 ONNX 分词器毫无压力,趟依赖坑的性价比之选。

  • 线上流式 TTS 服务,vLLM + TensorRT 常驻

    RTX 4090 24GB$0.540/卡·时

    Ada 架构的 fp16 与 TensorRT 表现是这个价位最好的,24GB 足够给 vLLM 留出像样的 KV 缓存池,首包延迟稳定在几百毫秒量级。

  • 高并发批量配音、Triton + TRT-LLM 多路推理

    A100 PCIE 80GB$0.824/卡·时

    官方 Triton 基准在单张 L20 上做到 LLM batch 16、RTF 0.0501;80GB 让你把 trt_concurrent 和 vLLM 显存池同时开大,单卡吃下几十路并发。

  • 微调自有音色、训练 flow 与 HiFiGAN 声码器

    RTX A6000 48GB$0.817/卡·时

    仓库 issue 里已经有人在 16GB 上训 HiFiGAN 撞显存墙。训练比推理吃得多得多,48GB 是舒适起点,价格和 A100 80GB 几乎持平可按需换。

03 —

从空机器到出第一段音频

四步,命令都是仓库里的原话

  1. 01

    开一台 GPU,拉仓库(记得 --recursive)

    在 NexGPU 控制台选 PyTorch 预置镜像开一台 RTX 3090 或 4090,SSH 进去。Matcha-TTS 是子模块,漏了递归克隆后面必炸;顺手把 sox 装上,torchaudio 读写要用。

    git clone --recursive https://github.com/QwenAudio/CosyVoice.git && cd CosyVoice && git submodule update --init --recursive && sudo apt-get install -y sox libsox-dev
  2. 02

    建 Python 3.10 环境,装依赖

    必须是 3.10——ttsfrd 官方只提供 cp310 的 linux_x86_64 轮子。ttsfrd 装不上不是致命的,项目会退回 WeTextProcessing 做文本正则化,中文数字和符号读法会略差一点。

    conda create -n cosyvoice -y python=3.10 && conda activate cosyvoice && pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com
  3. 03

    下权重,跑第一次零样本克隆

    权重走 ModelScope 或 HuggingFace 都行。注意 CosyVoice3 的 prompt 文本要带 <|endofprompt|> 前缀,这是 3.0 相对 2.0 的调用差异,照着 2.0 的老教程写会得到很奇怪的结果。跨语种合成则在目标文本里打 <|en|>、<|zh|>、<|ja|> 这类语言标签。

    python -c "from modelscope import snapshot_download; snapshot_download('FunAudioLLM/Fun-CosyVoice3-0.5B-2512', local_dir='pretrained_models/Fun-CosyVoice3-0.5B')" && export PYTHONPATH=third_party/Matcha-TTS && python example.py
  4. 04

    上生产:vLLM 加速或 Triton 多路服务

    vLLM 的版本必须和 transformers 成对钉死,装错版本会在注册 CosyVoice2ForCausalLM 时报错。一个关键差异:官方示例里 CosyVoice2 用 fp16=True,CosyVoice3 用 fp16=False——代码里明写着 DiT 的 TensorRT fp16 引擎有性能问题,别自作主张打开。要更高吞吐就上 runtime/triton_trtllm 的 docker compose。

    pip install vllm==v0.11.0 transformers==4.57.1 numpy==1.26.4 && python vllm_example.py

一小时成品音频到底多少钱

拿官方在单张 L20 上的离线基准换算:LLM batch 8 时 RTF 0.0562,也就是合成 1 秒音频只花 0.0562 秒算力。一个 GPU 小时 = 3600 ÷ 0.0562 ≈ 64,060 秒 ≈ 17.8 小时成品音频。跑在 NexGPU 的 RTX 4090 24GB($0.540/卡·时)上,折合 $0.540 ÷ 17.8 ≈ $0.030 每小时音频。换成不做批处理的 batch 1(RTF 0.1091),一个 GPU 小时约 9.2 小时音频,$0.059 每小时音频。落到真实活儿上:一本 10 万字的有声书按每分钟 250 字算约 6.7 小时音频,batch 8 下大约 $0.20 的 GPU 成本,加上下载权重的一次性时间,一杯咖啡钱有找。想再压就换 RTX 3090($0.193/卡·时),同一算法下单价还能降到三分之一——注意上面的 RTF 是 L20 实测值,换卡后实际吞吐会有出入,但量级是对的。计费按秒结算,合成完把实例停掉计算费立刻停止,只有存储会继续计到你销毁它为止(中位价 $0.414/GB·月,而这套权重不到 5GB)。没有最低消费,没有开通费,不用提配额工单。

04 —

常见问题

CosyVoice 本地部署到底需要多大显存?

比大多数人以为的小。CosyVoice3-0.5B 的三个权重文件 fp32 加起来 3.44GB(llm.pt 2.02GB、flow.pt 1.33GB、hift.pt 83.2MB),CosyVoice2-0.5B 是 2.55GB。加上要跑在 GPU 上的 speech_tokenizer ONNX(v3 是 969MB)、激活值和 CUDA 上下文,单路推理 8GB 卡能跑,想开 vLLM 留 KV 缓存池建议 12GB 以上。这就是为什么 NexGPU 上 $0.193/卡·时 的 RTX 3090 24GB 是这个模型最划算的落脚点——24GB 一次性把所有顾虑消掉。

CosyVoice3 和 CosyVoice2 有什么区别,我该用哪个?

CosyVoice3 换了新的语音 tokenizer(多任务监督训练,融合了 ASR、情感识别、语种识别、声音事件检测),训练数据从一万小时扩到一百万小时,还多了一个 RL 后训练检查点:test-zh 字错率 0.81% 对 base 的 1.21%。CosyVoice2 胜在生态成熟、老教程能对得上、vLLM 支持从 2025 年 5 月就稳定了。调用上也不一样——CosyVoice3 去掉了 load_jit 参数,零样本 prompt 要加 <|endofprompt|> 前缀。两个都是 0.5B,在 NexGPU 上开一台 3090 各跑一遍对比自己的音色素材,成本不到一美元。

CosyVoice 可以商用吗?

仓库是 Apache-2.0,这是最宽松的那一档开源许可之一,允许商用、修改和闭源分发,只要保留许可与版权声明。真正需要你自己把关的是音色来源:零样本克隆意味着你能拿任何一段音频做参考,但被克隆者的声音权、以及各地对合成语音标识的要求,许可证管不了。这也是很多团队坚持私有化部署而不用第三方 API 的原因——参考音频不出自己的机器。在 NexGPU 上,实例是你独占的,权重和音频数据都留在你自己的卷里。

报错 No module named 'matcha',ttsfrd 也装不上,怎么办?

两个都是老问题。matcha 是因为 Matcha-TTS 作为 git 子模块没拉下来,执行 git submodule update --init --recursive,再 export PYTHONPATH=third_party/Matcha-TTS。ttsfrd 官方只发 cp310 的 linux_x86_64 轮子(ttsfrd-0.4.2-cp310-cp310-linux_x86_64.whl),Python 版本不对、系统不对就装不上;它还依赖 git-lfs 拉 resource.zip,忘装 lfs 会得到一个解压不了的空文件。装不上不影响出声,项目会退回 WeTextProcessing。在 NexGPU 的 Ubuntu + PyTorch 预置镜像里这些前置条件都是齐的,省掉大半排查时间。

CosyVoice3 开了 TensorRT fp16,为什么反而不对劲?

这不是你的错,是已知问题。代码里在同时开启 load_trt 和 fp16 时会直接打印警告:DiT 的 TensorRT fp16 引擎存在性能问题,谨慎使用。官方自己的 vllm_example.py 就是这么写的——CosyVoice2 用 fp16=True,CosyVoice3 用 fp16=False。所以 CosyVoice3 想提速,正确姿势是走 load_vllm=True 加 load_trt=True 但保持 fp32,或者直接上 runtime/triton_trtllm。这类组合验证在按秒计费的机器上做最合适:开一台 RTX 4090($0.540/卡·时)把几种组合各压一轮,测完就停。

官方说 150ms 首包延迟,我为什么达不到?

150ms 是双向流式架构在理想条件下的模型侧延迟。看官方在单张 L20 上的 Triton 实测:4 路并发的流式首包平均 750.42ms,P50 740.31ms,P90 941.05ms,P99 1002.37ms。差距来自并发排队、文本正则化、参考音频编码和网络往返,这些都不在那 150ms 里。想逼近下限,就得减少并发、预热引擎、把参考音频的 speaker embedding 缓存起来复用。NexGPU 在 51 个国家和地区有 1,175 个可租节点,把推理节点放到离用户最近的地方,省下的往返时间往往比调参来得多。

开始使用 NexGPU

无论你是企业研发团队还是独立开发者,都可以在几分钟内跑起第一个任务。

注册即可浏览全网实时价格,无需绑定支付方式。