VoxCPM2
Multilingual text-to-speech from OpenBMB: 2B parameters, 30 languages, 48 kHz output. Clone a voice from a short clip or describe a new one in words, with audio streamed back as it is generated.
Overview
VoxCPM2 is the 2B-parameter successor to OpenBMB's VoxCPM text-to-speech model. It is tokenizer-free: a diffusion autoregressive model on a MiniCPM-4 backbone generates continuous speech representations from the text. OpenBMB trained it on more than 2 million hours of multilingual speech.
It reads 30 languages without a language tag: Arabic, Burmese, Chinese, Danish, Dutch, English, Finnish, French, German, Greek, Hebrew, Hindi, Indonesian, Italian, Japanese, Khmer, Korean, Lao, Malay, Norwegian, Polish, Portuguese, Russian, Spanish, Swahili, Swedish, Tagalog, Thai, Turkish and Vietnamese. Nine Chinese dialects are covered too, Cantonese and Sichuanese among them.
On Wiro it runs as a streaming session, returning audio in chunks as it is synthesized.
Choosing a variant: VoxCPM is the earlier English and Chinese release (version 1.5 on Wiro), and it clones only from a clip together with its transcript. Pick VoxCPM2 for other languages, for a voice described in words, or for cloning without a transcript.
What you can build
- Voice assistant replies, played back chunk by chunk as they are produced.
- Narration for product videos, courses and audiobooks, assembled from short runs.
- Localized voiceover, one run per language, with no language code to set.
- Game and story characters designed from a description such as "(an old man, gravelly voice, slow and tired)".
Inputs
- Prompt: the text to speak. Keep each run under about 500 characters, since longer passages can lose consistent prosody. To design a voice, start the prompt with a description in parentheses, for example "(A young woman, gentle and sweet voice)Hello, welcome." With a reference clip uploaded, the same parentheses carry a style cue such as "(warm, cheerful tone)".
- Reference Audio (optional): a clip of the voice to clone. Only the timbre is copied and no transcript is needed. 5 to 15 seconds of clean speech works best; clips over 30 seconds are cut down automatically. WAV, MP3, FLAC, OGG, M4A, WMA and Opus are accepted.
- Prompt Audio and Prompt Audio Text (advanced, used together): a 3 to 10 second clip plus its exact transcript. The model continues from this clip, so it copies pace, tone and emotion along with the timbre.
- Cfg Value (guidance scale, 1 to 5, default 2.0) and Inference Steps (diffusion steps per chunk, 4 to 30, default 10). More steps give higher fidelity.
Uploaded clips go through a speech enhancement step before cloning.
Outputs
Audio streams back in chunks at 24 kHz while it is generated. When the stream ends, the run saves one mono MP3 at 48 kHz.
Recommended settings
- Voice design and style cues change from run to run. OpenBMB suggests one to three takes, keeping the best.
- For the closest match to a real speaker, upload the same clip as Reference Audio and as Prompt Audio, with its exact transcript.
- Keep 10 steps while trying out voices and raise Inference Steps for the final take.
Limitations
- Quality differs between languages, depending on how much training data each one had.
- Very long or highly expressive passages can become unstable.
- A transcript that does not match the Prompt Audio lowers output quality without raising an error.
Safety & compliance
VoxCPM2 is released under Apache-2.0, with commercial use allowed. OpenBMB forbids impersonation, fraud and disinformation and asks for AI-generated audio to be labeled. Clone only voices you have permission to use, and test the model on your own use case before production.
Example prompts
Great starting points for VoxCPM2.
API quick start
Run VoxCPM2 with a single API call.
{
"prompt": "A small robot learned to paint by watchin…",
"promptAudioText": "...",
"cfgValue": 2.0,
"inputAudio": "https://your-cdn.com/input.mp3"
}curl -X POST "https://api.wiro.ai/v1/Run/openbmb/voxcpm2" \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_WIRO_API_KEY" \
--data-binary @- <<'JSON'
{
"prompt": "A small robot learned to paint by watchin…",
"promptAudioText": "...",
"cfgValue": 2.0,
"inputAudio": "https://your-cdn.com/input.mp3"
}
JSONOther models you might like
Explore similar audio & speech models.



