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.6615450.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

试听结果

目录

original/   原始模型、一步学生和官方推理源码
onnx/       ONNX 模型、导出代码和数值回归
rknn/       RKLLM/RKNN、C++ 推理和板端测试
tests/      测试入口、指标和试听音频
runtime/    默认音色、文本规范化资源和运行目录

已知限制

  1. 一步 Flow 仍有可听失真,不能视为官方 10 步模型的无损替代。
  2. 超长文本需要语义切分,75.11 秒分句结果的总 RTF 为 1.0100
  3. HiFT Decoder 存在 CPU fallback,不同文本可能出现 NPU/CPU 调度波动。
  4. C++ 入口要求文本已经规范化,日期、货币等需由应用层处理。
  5. 固定音色已验证,任意新参考 WAV 的纯板端注册尚未完成严格验收。
  6. W8A8 Speech Head 会轻微改变采样概率,相同 seed 不保证生成相同 token。

完整性与许可

归档约 12 GB,文件清单见 manifest.jsonMANIFEST.sha256。校验命令:

sha256sum -c MANIFEST.sha256

本归档新增的源码、脚本、配置和文档使用顶层 LICENSE(Apache-2.0)。再分发时保留版权和许可证声明,并标注修改内容即可;上游 CosyVoice 源码、模型权重和第三方资产仍遵循各自的授权条款。

Downloads last month
203
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support