VoxCPM-ONNX

VoxCPM-ONNX 为 VoxCPM 提供 ONNX 导出与 ONNX Runtime 推理,并可选配 FastAPI REST 服务。

警告

作者已将本项目 归档。若需要活跃维护的实现,可考虑改用 VoxCPM.cpp。代码与文档多为 AI 生成,仅作参考。

提供 ONNX 导出脚本、ONNX Runtime 推理流水线,以及带 OpenAI 风格 TTS API 的 FastAPI 服务。

支持的 VoxCPM 版本

VoxCPM 1.0(0.5B)

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

VoxCPM 1.5

❌ 不在本仓库(见 DakeQQ 的导出脚本

VoxCPM 2

❌ 不支持

主要特性

  • 从 PyTorch VoxCPM-0.5B 权重导出 ONNX

  • 通过 ONNX Runtime 在 CPU 与 GPU 上推理

  • FastAPI 服务,提供 /tts/ref_feat/health 端点

  • 基于 SQLite 的 reference 特征缓存(通过 /ref_feat

  • 支持 Docker Compose(CPU 与 GPU 服务)

准备工作

  • Python >= 3.10

  • openbmb/VoxCPM-0.5B checkpoint

  • (可选)GPU 推理需 CUDA 11.8+

  • (可选)Docker + NVIDIA Container Toolkit

安装

git clone https://github.com/bluryar/VoxCPM-ONNX.git
cd VoxCPM-ONNX

# Install dependencies
uv sync          # or: pip install -e .

# Export ONNX models (set env vars first)
export MODEL_PATH=/path/to/VoxCPM-0.5B
export OUTPUT_DIR=./onnx_models
export TIMESTEPS=5
export CFG_VALUE=2.0
bash export.sh
bash opt.sh      # optimize exported models

基本用法(服务端)

启动 FastAPI 服务:

# Via Docker Compose (GPU) — exposed on port 8101
docker-compose up voxcpm-gpu

# Or manually on port 8000
VOX_MODELS_DIR=/path/to/onnx_models VOX_DEVICE=cuda \
    uvicorn src.server.app:app --host 0.0.0.0 --port 8000

主要环境变量:

变量

说明

VOX_MODELS_DIR

已导出 ONNX 模型目录的路径

VOX_DEVICE

cpucuda

VOX_SQLITE_PATH

用于 reference 特征缓存的 SQLite 数据库路径

API 示例:

# Health check
curl http://localhost:8000/health

# Text-to-speech (Form-encoded)
curl -X POST http://localhost:8000/tts \
    -F "input=Hello from ONNX inference" \
    --output output.wav

# With Docker Compose GPU service (port 8101)
curl -X POST http://localhost:8101/tts \
    -F "input=Hello from ONNX inference" \
    --output output.wav

限制说明

  • 仅面向 VoxCPM-0.5B;VoxCPM 1.5 的 ONNX 导出见上文 DakeQQ 脚本链接

  • 导出 ONNX 中的推理步数固定(在导出时设定)

  • 重复的 prefill/decode 权重会增大模型体积