Files
vllm-omni/examples/offline_inference/voxcpm2

VoxCPM2 Offline Inference (Native AR)

VoxCPM2 is a 2B-parameter tokenizer-free diffusion AR TTS model. It produces 48kHz audio and supports 30+ languages with a single-stage native AR pipeline backed by MiniCPM4.

Prerequisites

Install the voxcpm package, or set the environment variable pointing to the source tree:

# Option A: install package
pip install voxcpm

# Option B: use source checkout
export VLLM_OMNI_VOXCPM_CODE_PATH=/path/to/voxcpm

Quick Start

Zero-shot synthesis:

python examples/offline_inference/voxcpm2/end2end.py \
    --model openbmb/VoxCPM2 \
    --text "Hello, this is a VoxCPM2 demo." \
    --output-dir output_audio

Voice cloning with a reference audio:

python examples/offline_inference/voxcpm2/end2end.py \
    --text "Hello, this is a voice clone demo." \
    --reference-audio /path/to/reference.wav \
    --output-dir output_clone

Prompt continuation (matched audio + text prefix):

python examples/offline_inference/voxcpm2/end2end.py \
    --text "Continuation target sentence." \
    --prompt-audio /path/to/prompt.wav \
    --prompt-text "Transcript of the prompt audio." \
    --output-dir output_cont

The script accepts the following arguments:

Argument Default Description
--model openbmb/VoxCPM2 HuggingFace repo ID or local path
--text (example sentence) Text to synthesize
--output-dir output_audio Directory for output WAV files
--stage-configs-path voxcpm2.yaml Stage config YAML path
--reference-audio None Reference audio for voice cloning (isolated)
--prompt-audio None Prompt audio for continuation mode
--prompt-text None Transcript matching --prompt-audio

Performance

Measured on a single H20 GPU (80 GB):

Input length RTF Sample rate
Short (~10 tokens) ~0.28 48 kHz
Long (~100 tokens) ~0.34 48 kHz

RTF < 1.0 means faster than real time.

Architecture

VoxCPM2 uses a single-stage native AR pipeline:

feat_encoder
└─► MiniCPM4 (base LM)
     └─► FSQ (finite scalar quantization)
          └─► residual_lm (residual AR)
               └─► LocDiT (local diffusion transformer)
                    └─► AudioVAE → 48 kHz waveform

All stages are fused into one vllm-native execution graph via voxcpm2.yaml, eliminating inter-stage coordination overhead and enabling true end-to-end batching.