Views
No views yet
Part of the soniqo.audio speech toolkit — an open, runtime-portable stack for speech AI. This bundle is the ONNX Runtime export, designed to plug into the abstract interfaces inspeech-core(OnnxVoxCPM2Tts). Browse all ONNX bundles in the soniqo ONNX collection.
text + optional instruction ──► text-prefill
│
▼
repeated token-step (KV cache rolls per step)
│
▼
audio-decoder ──► 48 kHz PCM| File | Size | Description |
|---|---|---|
voxcpm2-text-prefill.onnx + .onnx.data | 4.2 GB | FP16-weight / FP32-compute text + instruction prefill (MiniCPM-4 KV-cache producer). max_text_tokens = 512. |
voxcpm2-token-step.onnx + .onnx.data | 4.5 GB | FP16-weight / FP32-compute autoregressive step (MiniCPM-4 + residual LM, KV-cache in/out, CFM Euler decoder). |
voxcpm2-text-prefill.int8.onnx + .int8.onnx.data | 2.6 GB | INT8 weight-only (MatMulNBits, block 32, FP32 accumulation) compact prefill. |
voxcpm2-token-step.int8.onnx + .int8.onnx.data | 3.1 GB | INT8 weight-only (MatMulNBits, block 32, FP32 accumulation) compact step. |
voxcpm2-audio-encoder.onnx | 183 MB | FP32 reference-audio encoder (16 kHz @ 6.4 s → 40 latent frames, voice-cloning only). |
voxcpm2-audio-decoder.onnx | 175 MB | FP32 AudioVAE decoder (acoustic tokens → 48 kHz PCM, 10.24 s window). |
tokenizer.json / tokenizer_config.json / special_tokens_map.json | — | HF tokenizer bundle. |
generation_config.json / tokenization_voxcpm2.py | — | Generation defaults + tokenizer module. |
config.json | — | Model config (architecture, dims, IO shapes per graph). |
.int8. variants quantize the same weights to INT8 via MatMulNBits
(block 32, symmetric, FP32 accumulation) for a further ~40 % size cut with
a small measured drift (prefill hidden-state cosine 0.991–0.995 vs FP32;
synthesized speech transcribes identically in ASR round-trip checks).
Activations are never quantized in either format. AudioVAE graphs stay
FP32 (Conv-heavy; INT8 rejects Conv axis remapping — same lesson as
Parakeet's decoder-joint)..onnx.data files are external-data sidecars (the production
weights exceed the 2 GB protobuf serialization cap). ORT's
InferenceSession auto-resolves them from the protobuf's external_data
references with no special SessionOptions.1import onnxruntime as ort
2from transformers import AutoTokenizer
3
4bundle = "soniqo/VoxCPM2-ONNX"
5tokenizer = AutoTokenizer.from_pretrained(bundle, trust_remote_code=True)
6prefill = ort.InferenceSession(f"{bundle}/voxcpm2-text-prefill.onnx",
7 providers=["CPUExecutionProvider"])
8step = ort.InferenceSession(f"{bundle}/voxcpm2-token-step.onnx",
9 providers=["CPUExecutionProvider"])
10encoder = ort.InferenceSession(f"{bundle}/voxcpm2-audio-encoder.onnx",
11 providers=["CPUExecutionProvider"])
12decoder = ort.InferenceSession(f"{bundle}/voxcpm2-audio-decoder.onnx",
13 providers=["CPUExecutionProvider"])
14
15# ... see the speech-core OnnxVoxCPM2Tts wrapper for the full AR loop.OnnxVoxCPM2Tts
in speech-core.1@misc{openbmb-voxcpm2,
2 author = {OpenBMB},
3 title = {{VoxCPM2}: a 2B-parameter diffusion-autoregressive multilingual TTS},
4 year = {2025},
5 howpublished = {\url{https://huggingface.co/openbmb/VoxCPM2}}
6}