ONNX 模型库
返回模型

说明文档

CosyVoice3 ONNX 模型

Fun-CosyVoice3-0.5B 导出的 ONNX 模型,支持无 PyTorch 推理。

模型描述

CosyVoice3 是一个具有零样本语音克隆能力的多语言文本转语音(TTS)系统。本仓库包含经过 ONNX 转换的模型,可使用纯 ONNX Runtime 进行推理,无需 PyTorch 依赖。

支持的语言

CosyVoice3 会自动从文本内容检测语言。支持的语言包括:

  • 英语、中文、日语、韩语
  • 德语、西班牙语、法语、意大利语、俄语
  • 粤语和其他中文方言

重要提示:不要使用 <|en|><|ja|> 等语言标签 - 它们会被作为字面文本朗读出来。

仓库内容

本仓库包含推理所需的所有内容(无需额外下载):

.
├── *.onnx                              # ONNX 模型文件(14个文件,总计约3.8GB)
├── vocab.json                          # Qwen2 分词器词表
├── merges.txt                          # Qwen2 分词器合并文件
├── tokenizer_config.json               # Qwen2 分词器配置
├── scripts/
│   └── onnx_inference_pure.py          # 推理脚本
└── prompts/
    ├── en_female_nova_greeting.wav     # 示例女声
    └── en_male_onyx_greeting.wav       # 示例男声

模型文件

ONNX 模型(本仓库)

文件 大小 精度 描述
campplus.onnx 28MB FP32 说话人嵌入提取
speech_tokenizer_v3.onnx 969MB FP32 语音分词
text_embedding_fp32.onnx 544MB FP32 文本 token 嵌入
llm_backbone_initial_fp16.onnx 717MB FP16 LLM 初始传递(KV 缓存生成)
llm_backbone_decode_fp16.onnx 717MB FP16 LLM 解码步骤
llm_decoder_fp16.onnx 12MB FP16 Logits 输出
llm_speech_embedding_fp16.onnx 12MB FP16 语音 token 嵌入
flow_token_embedding_fp16.onnx 1MB FP16 Flow token 嵌入
flow_pre_lookahead_fp16.onnx 1MB FP16 Flow 预前瞻
flow_speaker_projection_fp16.onnx 31KB FP16 说话人投影
flow.decoder.estimator.fp16.onnx 664MB FP16 Flow DiT(扩散 Transformer)
hift_f0_predictor_fp32.onnx 13MB FP32 F0 预测
hift_source_generator_fp32.onnx 259MB FP32 源信号生成
hift_decoder_fp32.onnx 70MB FP32 HiFT 解码器(波形生成)

分词器文件(已包含)

Qwen2 分词器文件已包含在本仓库中

  • vocab.json - 词表(3.54MB)
  • merges.txt - BPE 合并文件(1.54MB)
  • tokenizer_config.json - 配置

无需额外下载。

架构

1. 提示音频处理
   ├── campplus.onnx → 说话人嵌入(192维)
   ├── speech_tokenizer_v3.onnx → 语音 token(用于 LLM 上下文)
   └── librosa → Mel 频谱图(用于 Flow 条件)

2. LLM 推理(零样本模式)
   ├── text_embedding → [提示文本 + TTS 文本] 嵌入
   ├── llm_speech_embedding → 提示语音 token 嵌入
   ├── llm_backbone_initial → 初始传递(KV 缓存)
   ├── llm_backbone_decode → 解码步骤(循环)
   └── llm_decoder → Logits → Token 采样

3. Flow 推理(Mel 生成)
   ├── flow_token_embedding → Token 嵌入
   ├── flow_pre_lookahead → 特征提取
   ├── flow_speaker_projection → 说话人投影
   └── flow.decoder.estimator → DiT(10步 Euler)

4. HiFT 推理(波形)
   ├── hift_f0_predictor → F0 预测
   ├── hift_source_generator → 源信号
   ├── STFT → 频谱分解
   ├── hift_decoder → 幅度/相位预测
   └── ISTFT → 波形重建

快速开始

1. 创建环境

uv init cosyvoice-onnx --python 3.10
cd cosyvoice-onnx
uv add \"onnxruntime==1.18.0\" \"numpy==1.26.4\" \"soundfile==0.12.1\" \"librosa==0.10.2\" \"transformers==4.51.3\" \"scipy==1.13.1\" \"huggingface_hub>=0.30.0\"

注意:需要使用 --python 3.10 标志,因为 onnxruntime 1.18.0 仅支持 Python 3.8-3.12。

2. 下载模型

# 下载所有内容(ONNX 模型 + 分词器 + 推理脚本 + 示例提示)
uv run python -c \"from huggingface_hub import snapshot_download; snapshot_download('ayousanz/cosy-voice3-onnx', local_dir='pretrained_models/Fun-CosyVoice3-0.5B/onnx')\"

注意:所有必需的文件(包括 Qwen2 分词器)都已包含在本仓库中。无需额外下载。

3. 运行推理

# 英语
uv run python pretrained_models/Fun-CosyVoice3-0.5B/onnx/scripts/onnx_inference_pure.py \
    --text \"Hello, this is a test.\" \
    --prompt_wav pretrained_models/Fun-CosyVoice3-0.5B/onnx/prompts/en_female_nova_greeting.wav \
    --prompt_text \"Hello, my name is Sarah. I'm excited to help you with your project today. Let me know if you have any questions.\" \
    --output output.wav

# 日语
uv run python pretrained_models/Fun-CosyVoice3-0.5B/onnx/scripts/onnx_inference_pure.py \
    --text \"こんにちは、今日はいい天気ですね。\" \
    --prompt_wav pretrained_models/Fun-CosyVoice3-0.5B/onnx/prompts/en_female_nova_greeting.wav \
    --prompt_text \"Hello, my name is Sarah. I'm excited to help you with your project today. Let me know if you have any questions.\" \
    --output output_ja.wav

详细设置

版本要求

重要:原始 CosyVoice(PyTorch 版本)也有相同的版本约束。这不是 ONNX 推理特有的。

版本 用途
onnxruntime 1.18.0 ONNX 推理引擎(较新版本有 FP16 问题)
numpy 1.26.4 数值计算(需要 1.x 版本)
soundfile 0.12.1 WAV 文件输出
librosa 0.10.2 音频加载、mel 频谱图提取
transformers 4.51.3 Qwen2 分词器
scipy 1.13.1 信号处理
huggingface_hub >=0.30.0 从 Hugging Face 下载

GPU 支持(可选)

uv remove onnxruntime && uv add \"onnxruntime-gpu==1.18.0\"

注意:需要 CUDA 11.8 或 12.x 以及 cuDNN 8.x。

命令行参数

参数 必需 描述
--text 要合成的文本(不要包含语言标签)
--prompt_wav 提示音频文件路径
--prompt_text 提示音频的转录文本
--output 输出文件路径(默认:output_onnx_pure.wav)
--model_dir 模型目录(默认:pretrained_models/Fun-CosyVoice3-0.5B)
--fp32 使用 FP32 精度(默认:FP16)

重要:零样本语音克隆

CosyVoice3 使用零样本语音克隆。提示音频和提示文本都是必需的:

  • 提示音频:参考语音样本(建议 3-10 秒)
  • 提示文本:提示音频中说话内容的转录文本

这比跨语言模式提供更好的语音克隆质量。

性能

阶段 CPU 时间
提示处理 2-3秒
LLM 推理 40-160秒
Flow 推理 30-60秒
HiFT 推理 1-3秒

注意:CPU-only 推理。GPU(CUDA)可显著提升性能。

技术说明

纯 ONNX 推理(无 PyTorch)

此推理脚本完全不依赖 PyTorch 运行。所有处理都使用 ONNX Runtime 和 NumPy/SciPy 实现:

  • 神经网络推理:ONNX Runtime
  • STFT/ISTFT:NumPy + SciPy(非 PyTorch)
  • 音频处理:librosa

HiFT 参数(CosyVoice3 特定)

参数 描述
upsample_rates [8, 5, 3] HiFT 上采样率(总计 120 倍)
n_fft 16 FFT 窗口大小
hop_length 4 跳跃长度
center True 信号填充(兼容 PyTorch)

注意:CosyVoice2 使用 upsample_rates=[8, 8](64 倍),但 CosyVoice3 使用 [8, 5, 3](120 倍)。

预期 STFT 帧数 = mel 帧数 × 120 + 1

精度选择

  • FP16:LLM 和 Flow 组件(节省内存)
  • FP32:HiFT 组件(需要数值稳定性)、文本嵌入、说话人模型

KV 缓存

LLM 使用分离的 KV 缓存架构:

  • llm_backbone_initial:从完整上下文生成初始 KV 缓存
  • llm_backbone_decode:每步用单个 token 更新 KV 缓存

故障排除

ONNX Runtime 版本错误与 FP16 模型

RuntimeException: Attempting to get index by a name which does not exist

解决方案:使用 onnxruntime==1.18.0。较新版本(1.19+)与 FP16 模型存在兼容性问题。

NumPy 2.x 不兼容

A module that was compiled using NumPy 1.x cannot be run in NumPy 2.x

解决方案:使用 numpy==1.26.4。这是与原始 CosyVoice 共有的约束。

分词器加载问题

如果遇到分词器加载错误,请确保下载了完整的仓库,包括:

  • vocab.json
  • merges.txt
  • tokenizer_config.json

使用以下命令重新下载:

huggingface-cli download ayousanz/cosy-voice3-onnx --local-dir pretrained_models/Fun-CosyVoice3-0.5B/onnx

语言标签被朗读

如果您听到 <|en|> 或类似内容被读出来,请从文本中移除语言标签。CosyVoice3 会自动检测语言。

许可证

Apache 2.0(与原始 CosyVoice 相同)

致谢

相关链接

ayousanz/cosy-voice3-onnx

作者 ayousanz

text-to-speech onnxruntime
↓ 0 ♥ 9

创建时间: 2026-01-13 08:25:44+00:00

更新时间: 2026-01-15 07:08:52+00:00

在 Hugging Face 上查看

文件 (22)

.gitattributes
README.md
campplus.onnx ONNX
flow.decoder.estimator.fp16.onnx ONNX
flow_pre_lookahead_fp16.onnx ONNX
flow_speaker_projection_fp16.onnx ONNX
flow_token_embedding_fp16.onnx ONNX
hift_decoder_fp32.onnx ONNX
hift_f0_predictor_fp32.onnx ONNX
hift_source_generator_fp32.onnx ONNX
llm_backbone_decode_fp16.onnx ONNX
llm_backbone_initial_fp16.onnx ONNX
llm_decoder_fp16.onnx ONNX
llm_speech_embedding_fp16.onnx ONNX
merges.txt
prompts/en_female_nova_greeting.wav
prompts/en_male_onyx_greeting.wav
scripts/onnx_inference_pure.py
speech_tokenizer_v3.onnx ONNX
text_embedding_fp32.onnx ONNX
tokenizer_config.json
vocab.json