VoxCPM-RKNN2

VoxCPM-RKNN2 使用 RKNN2/RKLLM NPU 加速栈,在 瑞芯微 RK3588 边缘设备上部署 VoxCPM-0.5B。

备注

本项目面向 瑞芯微 RK3588 (及兼容 RKNPU2 的设备),并非通用桌面/服务器部署方案。

支持的 VoxCPM 版本

VoxCPM 1.0(0.5B)

✅ 支持(openbmb/VoxCPM-0.5B,16 kHz)

VoxCPM 1.5

❌ 不支持

VoxCPM 2

❌ 不支持

主要特性

  • 在瑞芯微 RK3588 SoC 上使用 NPU 加速推理

  • 结合 RKNN(音频 VAE / LocDiT 算子)与 RKLLM(LLM 主干)

  • 基于参考音频的声音克隆

  • 从 PyTorch 到 RKNN/RKLLM 格式的模型转换流水线

性能表现

在 RK3588 上的基准:

  • RTF:约 4.5(生成约 10 秒音频约需 45 秒)

  • 内存占用:约 3.3 GB

准备工作

  • 瑞芯微 RK3588 开发板(如 Orange Pi 5、Rock 5B)

  • 已安装 RKNN2 运行库的 Python 环境

  • openbmb/VoxCPM-0.5B 权重(用于转换)

安装与推理

pip install numpy scipy soundfile tqdm transformers sentencepiece \
    ztu-somemodelruntime-ez-rknn-async

基本用法

python onnx_infer-rknn2.py \
    --onnx-dir /path/to/rknn_models \
    --tokenizer-dir /path/to/tokenizer \
    --base-hf-dir /path/to/base_model \
    --residual-hf-dir /path/to/residual_model \
    --text "你好,这是 VoxCPM 在 RK3588 上的推理。" \
    --seed 42 \
    --output output.wav

# Voice cloning
python onnx_infer-rknn2.py \
    --onnx-dir /path/to/rknn_models \
    --tokenizer-dir /path/to/tokenizer \
    --base-hf-dir /path/to/base_model \
    --residual-hf-dir /path/to/residual_model \
    --prompt-audio ref_voice.wav \
    --prompt-text "参考音频文本" \
    --text "克隆语音说新的文字。" \
    --cfg-value 2.0 \
    --inference-timesteps 10 \
    --seed 42 \
    --output output.wav

模型转换

将 VoxCPM-0.5B 权重转换为 RKNN/RKLLM 格式:

  1. 安装转换工具链:

pip install torch==2.10.0 transformers==4.57.6 onnx==1.18.0 \
    onnxruntime==1.22.0 einops==0.8.2 \
    rknn-toolkit2==2.3.2 rkllm-toolkit==1.2.3
  1. 下载基础模型:

# Download openbmb/VoxCPM-0.5B to ./VoxCPM-0.5B
  1. 运行转换流水线:

cd convert
python scripts/build_rk3588_pipeline.py
# Artifacts output to build/rk3588/final_models/

详细步骤见 转换指南

已知问题

  • 可能出现 无限生成循环 — 上游 bad-case 保护尚未移植

  • 受 RKNN 工具链 shape 限制,需拆成两个 LocEnc 模型

  • RKLLM 输出需手动 ×4 缩放的变通处理