Instructions to use Sariel00/cosyvoice2_rknn with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- CosyVoice
How to use Sariel00/cosyvoice2_rknn with CosyVoice:
# No code snippets available yet for this library. # To use this model, check the repository files and the library's documentation. # Want to help? PRs adding snippets are welcome at: # https://github.com/huggingface/huggingface.js
- RKLLM
How to use Sariel00/cosyvoice2_rknn with RKLLM:
# No code snippets available yet for this library. # To use this model, check the repository files and the library's documentation. # Want to help? PRs adding snippets are welcome at: # https://github.com/huggingface/huggingface.js
- Notebooks
- Google Colab
- Kaggle
CosyVoice2_distill_rknn RK3588
本项目旨在填补端侧嵌入式设备缺乏高质量现代音色克隆 TTS 方案的空白。
本方案基于 CosyVoice2-0.5B 模型,针对 RK3588 平台进行了“一步 Flow 流式蒸馏”深度优化。项目提供了完整的端到端部署资产,涵盖原始模型、蒸馏模型、ONNX 导出、RKLLM/RKNN 转换脚本、全 C++ 推理引擎及实机测试报告。
经实测,该方案在 RK3588 上已具备流式输出能力,在短、中等长度文本下基本达到或接近实时标准(若部署于 QCS6490、AX650N 等更高算力平台,实时表现将更优)。
受限于一步蒸馏的压缩比,当前方案在超长文本下的持续实时性尚无法绝对保证,且音质存在轻微可听失真,整体听感略低于官方 10 步模型。
客观声学评估表明,该蒸馏模型与官方 Teacher 模型的 Mel L1 相对误差为 0.17048。Mel 余弦相似度高达 0.998754
模型卡
| 项目 | 内容 |
|---|---|
| 基础模型 | CosyVoice2-0.5B |
| 任务 | 中文零样本音色克隆 TTS |
| 输入 | 已规范化 UTF-8 文本 |
| 输出 | 24 kHz、16-bit、单声道 PCM/WAV |
| 默认音色 | runtime/clone/test.wav |
| LLM Prompt | 1 秒 |
| Flow Prompt | 3 秒 |
| RKLLM | Qwen2,两核 W8A8,context 2048 |
| RKNN | Speech Head W8A8;Flow、HiFT 和音色注册模型 FP16 |
| 运行时 | RKLLM 1.3.0、RKNN 2.3.2、RKNPU driver 0.9.8 |
| 硬件 | RK3588,4 个大核、3 个 NPU 核 |
部署结构
规范化文本
-> C++ GPT-2/BPE 文本前端
-> Qwen2 W8A8 RKLLM,NPU0+1
-> Speech Head W8A8 RKNN,NPU0
-> 一步缓存 Flow FP16 RKNN,NPU2
-> HiFT FP16 RKNN,NPU2
-> 24 kHz PCM 流
默认使用 CPU5 至 CPU7(mask 0xE0)。RKNN 缓存使用 native I/O memory,文本和语音 embedding 使用 mmap 查表。
音色由 LLM Prompt、Flow Prompt、说话人 embedding 和 HiFT 共同控制。本项目只蒸馏 Flow,没有修改 LLM、Speech Head、CampPlus 和 HiFT 权重。
默认音色档案位于:
rknn/models/cosyvoice2/voices/testwav_llm_prompt1s
RK3588 性能
测试条件:默认音色、两核 W8A8 RKLLM、一步 FP16 Flow、FP16 HiFT,不计模型加载时间。
| 档位 | 音频时长 | TTFT | 持续 RTF | 总 RTF | 峰值 RSS |
|---|---|---|---|---|---|
| 短音频 | 5.92 s | 2.255 s | 0.7459 | 1.0210 | 1523.6 MiB |
| 中等音频 | 9.64 s | 2.090 s | 0.8456 | 0.9888 | 1563.8 MiB |
| 长音频 | 24.28 s | 2.334 s | 0.9128 | 0.9773 | 1604.6 MiB |
| 超长音频,分 3 段 | 75.11 s | 2.165 s | 0.9182 | 1.0100 | 1633.9 MiB |
- 相同主验证文本三轮历史持续 RTF 中位数为
0.7880。 - 建议使用
400 ms启播缓冲。 - 约 25 秒以上文本应按完整语义句切分,避免长上下文重复、漏句或乱序。
TTFT 是请求开始到第一块 PCM 就绪的时间;持续 RTF 不含第一块;总 RTF 是完整请求耗时除以音频时长。
Flow 蒸馏与质量
一步学生由官方 10 步 Flow Teacher 蒸馏得到。以下为同一固定测试集上的标准化 Mel 对比:
| Flow | 相对 10 步 Mel L1 | Mel 余弦 |
|---|---|---|
| 官方 10 步 | 0 | 1.000000 |
| 5 步 | 0.07810 | 0.999500 |
| 2 步 | 0.15184 | 0.999086 |
| 最终 1 步 | 0.17048 | 0.998754 |
一步模型适合验证端侧吞吐上限,但听感仍低于 5 步。Mel 余弦不能替代人工试听,也不能解释为主观音质只损失某个百分比。
RK3588 FP16 相对主机一步结果的 Mel MAE 为 0.016937、余弦为 0.999989,说明主要误差来自蒸馏,不是 ONNX/RKNN 转换。
短、中、长和超长样本均通过内容识别检查;对 test.wav 的 CampPlus 音色余弦为 0.661545 至 0.752080。
模型精度
| 组件 | 精度 | 说明 |
|---|---|---|
| Qwen2 RKLLM | W8A8 | 两核生产版本 |
| Speech Head | W8A8 | logits 余弦 0.999950 |
| Flow Encoder/Estimator | FP16 | W8A8 音质损失不可接受 |
| HiFT F0/Decoder | FP16 | W8A8 波形和 F0 偏差较大 |
生产模型位于 rknn/models/,ONNX 位于 onnx/models/,转换清单位于各自的 conversion/manifests/。
快速使用
RK3588 短音频:
cd /home/cat/nextTTS/cosyvoice2_rknn
./rknn/examples/infer_short.sh
指定文本和输出目录:
./rknn/examples/infer_short.sh \
'今天的天气很好,我们一起去公园散步吧。' \
/home/cat/nextTTS/cosyvoice2_rknn/tests/results/rknn/my_short
长度基准:
./rknn/examples/benchmark_lengths.py
WSL 原始模型与 ONNX 回归:
cd /home/serial/project/nextTTS/cosyvoice2_rknn
./tests/run_wsl_tests.sh
板端组件回归:
cd /home/cat/nextTTS/cosyvoice2_rknn
./rknn/scripts/run_board_tests.sh
试听结果
- 短音频
- 中等音频
- 长音频
- 75 秒分句音频
- 性能汇总:
tests/results/rknn/length_demo/benchmark_summary.json - 质量汇总:
tests/results/rknn/length_demo/quality_summary.json
目录
original/ 原始模型、一步学生和官方推理源码
onnx/ ONNX 模型、导出代码和数值回归
rknn/ RKLLM/RKNN、C++ 推理和板端测试
tests/ 测试入口、指标和试听音频
runtime/ 默认音色、文本规范化资源和运行目录
已知限制
- 一步 Flow 仍有可听失真,不能视为官方 10 步模型的无损替代。
- 超长文本需要语义切分,75.11 秒分句结果的总 RTF 为
1.0100。 - HiFT Decoder 存在 CPU fallback,不同文本可能出现 NPU/CPU 调度波动。
- C++ 入口要求文本已经规范化,日期、货币等需由应用层处理。
- 固定音色已验证,任意新参考 WAV 的纯板端注册尚未完成严格验收。
- W8A8 Speech Head 会轻微改变采样概率,相同 seed 不保证生成相同 token。
完整性与许可
归档约 12 GB,文件清单见 manifest.json 和 MANIFEST.sha256。校验命令:
sha256sum -c MANIFEST.sha256
本归档新增的源码、脚本、配置和文档使用顶层 LICENSE(Apache-2.0)。再分发时保留版权和许可证声明,并标注修改内容即可;上游 CosyVoice 源码、模型权重和第三方资产仍遵循各自的授权条款。
- Downloads last month
- 203