A generated hero card titled 'Ming-3.0-tts-0.5B vs VoxCPM2', with a left card for Ming-3.0-tts-0.5B showing German error 0.365 and similarity 0.753, a right card for VoxCPM2 showing error 0.963 and similarity 0.790, the labels '0.5B parameters - MIT' and '2B parameters - Apache 2.0', and a footer reading 'Ant Group's own table: error won 4 of 5 languages, similarity won 0 of 5'.
Guides & Insights

Ming-3.0-tts-0.5B vs VoxCPM2: One Wins the Words, the Other Wins the Voice

Author

Rowan Sterling

Date Published

Latest models · 20View all models →
Benchmarks: Artificial Analysis · updated daily
Back to all posts

There is exactly one published comparison of Ming-3.0-tts-0.5B and VoxCPM2, and Ant Group wrote it. In its own model card, Ant benchmarks the two multilingual speech models on the Mi​niMax test set across German, Spanish, French, Korean and Japanese. Ming-3.0-tts-0.5B produces the more accurate words in four of the five languages. VoxCPM2 produces the more faithful voice in all five. That single pattern — content accuracy to the 0.5B checkpoint, speaker similarity to the 2B one — is the most useful thing anyone has published about this matchup, and it is a vendor's own table, so it is also the thing most in need of a caveat. Ant wins the error rate it chose to publish and loses the similarity score on the same page. The documented AI failures and agent incidents behind releases like this one are collected in the OrcaRouter AI Incident Archive where each entry carries its own sources, severity, confidence grade and disputed flag.

Both models are open-weight, both permit commercial use, and both are operated by you rather than called as a service. Ming-3.0-tts-0.5B is Ant Group's MIT-licensed dense model on a Qwen2.5-0.5B backbone with a diffusion-transformer head, published to Hugging Face on September 24, 2026, with the inference code following on GitHub on October 19, 2026 and no vendor announcement for either. VoxCPM2 is OpenBMB's Apache-2.0 checkpoint from April 2026, a 2B tokenizer-free diffusion-autoregressive model on a MiniCPM-4 backbone. Everything below is downstream of that size and licence difference, and of the fact that one of them has an independent arena score and the other does not.

What Ant's own table actually says

The Mi​niMax multilingual test set reports content error — word error rate for German, Spanish and French, character error rate for Korean and Japanese — alongside a speaker-similarity cosine. Lower error is better; higher similarity is better. Ant ran both models itself. Nothing here was reproduced by a third party, and VoxCPM2's maintainers have not published a rebuttal table that we could find.

• German — Ming-3.0-tts-0.5B error 0.365, similarity 0.753; VoxCPM2 error 0.963, similarity 0.790.

• Spanish — Ming 1.099, similarity 0.763; VoxCPM2 1.324, similarity 0.836.

• French — Ming 4.264, similarity 0.675; VoxCPM2 3.380, similarity 0.761. This is the one language where the error ranking flips.

• Korean — Ming 1.728, similarity 0.793; VoxCPM2 3.547, similarity 0.839.

• Japanese — Ming 3.765, similarity 0.765; VoxCPM2 4.358, similarity 0.825.

Two things are worth noticing before either model gets credit. First, the German gap is large — 0.365 against 0.963 — while the Korean and Japanese gaps are smaller and the French result goes the other way, so "more accurate" is a per-language claim, not a general one. Second, French error rates are high for every model in that table; a competitor listed alongside them scores 19.878 there. A language where the whole field clusters at bad numbers is a language where the test set, not the models, is doing some of the work. Treat French as inconclusive rather than as a VoxCPM2 win.

A generated two-card scoreboard titled 'Ant Group's MiniMax multilingual test set', contrasting Ming-3.0-tts-0.5B against VoxCPM2 across German (0.365 / 0.753 against 0.963 / 0.790), Spanish (1.099 / 0.763 against 1.324 / 0.836), French (4.264 / 0.675 against 3.380 / 0.761), Korean (1.728 / 0.793 against 3.547 / 0.839) and Japanese (3.765 / 0.765 against 4.358 / 0.825), with the French row banded as 'the one flip' and a footer reading 'Ant ran both models itself. Lower error wins 4 of 5 languages; higher similarity wins 5 of 5.'

Why the similarity column is the one to read twice

Speaker similarity measures whether the output sounds like the reference voice. It is the metric that separates a demo from a product: a cloned voice that drifts takes the listener out of the scene even when every word is right, and no downstream ASR score will ever tell you that happened.

Ming loses it in all five languages, by margins between 0.037 (Spanish) and 0.086 (French). Those are cosine distances on a bounded scale, so the gaps are modest but consistent, and consistency across five languages is harder to explain away than a single bad row. The candid explanation is in Ant's own card, which says plainly that speaker similarity trails content accuracy. The model was tuned toward getting the words right.

There is a second, more specific reason to expect this, and it is architectural. VoxCPM2 decodes at 48 kHz through a built-in super-resolution stage in its AudioVAE V2 tokenizer, and accepts a 16 kHz reference clip while still producing a 48 kHz output. Ming-3.0-tts-0.5B operates at 44.1 kHz. Sample rate is not similarity — a higher rate does not make a voice more faithful — but the VoxCPM2 pipeline is explicitly built around preserving a reference voice's character through the resampling step, and that is a design choice a 0.5B model with a bundled speaker encoder does not make.

So the honest reading is not "VoxCPM2 clones better because it is bigger." It is that the two models optimise different halves of the same objective, and the vendor table shows each winning its own half.

Clipping a voice: two APIs, two philosophies

Both clone zero-shot from a short clip. The mechanics differ enough to matter if you are writing the integration.

• Ming-3.0-tts-0.5B — one entry point, a task argument. MingTTS("inclusionAI/Ming-3.0-tts-0.5B"), then synthesize(task=...) with prompt_wav_path, prompt_text and use_spk_emb. Tasks include TT​S, VOICE_DESIGN, MULTILINGUAL, DIALECT, EMOTION, FREEFORM and IP. The checkpoint bundles the backbone, the DiT head, the audio tokenizer and a Campplus speaker encoder, so cloning is a first-class task rather than a separate pipeline.

• VoxCPM2 — pip install voxcpm, then VoxCPM.from_pretrained("openbmb/VoxCPM2", load_denoiser=False). Voice design is a parenthetical prefix on the text itself, "(description)text", with cfg_value=2.0 and inference_timesteps=10 as the documented starting points.

The consequence is that Ming's control surface is structured and VoxCPM2's is textual. Ming gives you named tasks with documented mutual exclusions — FREEFORM cannot be combined with voice design, a built-in voice, emotion, dialect or attribute controls, and the multilingual task requires an explicit language_id for the five non-Chinese languages. That is more to learn and less to guess. VoxCPM2's single string is faster to try and harder to make deterministic; OpenBMB's own card advises generating one to three candidates because voice design and style vary between runs.

If you are building a UI where a producer picks a voice from a list, Ming's 100-plus built-in Chinese voices and five built-in English voices are a menu you can render. VoxCPM2 has no equivalent roster — its voices are designed or cloned, not enumerated.

Languages, dialects and the paralinguistic layer

• Language count — Ming-3.0-tts-0.5B covers Chinese, English, German, Spanish, French, Korean and Japanese, plus Sichuanese and Cantonese as separate dialect tasks. VoxCPM2 claims 30 languages. Ant tested five non-Chinese languages; OpenBMB publishes no per-language error table that we could verify, so the 30 is a coverage claim without a quality claim attached.

• Dialects — Ming exposes Sichuanese and Cantonese as a task with no language argument. VoxCPM2's 30-language list is not broken out by dialect in the material we read, and treating regional varieties as covered because the language is covered is the mistake this bullet exists to prevent.

• Inline control — Ming ships 14 tags for breath, cough, sigh, laughter, hesitation, surprise and questions, in Chinese or English, plus explicit emotion, speed, pitch and volume. VoxCPM2 has no tag vocabulary; its control is the natural-language description prefix.

• Weak spot, by Ant's own admission — multi-event paralinguistic sentences are unstable, emotion control degrades when the text carries no emotional signal, and open-ended voice design does not match the strongest system Ant evaluated against. That last one is a fair description of the gap to a hosted frontier voice, and it applies to VoxCPM2 too.

The practical split: pick Ming if your script needs laughter, a sigh or a hesitation pause in the middle of a sentence. Pick VoxCPM2 if your script needs a language Ming does not cover, or a voice designed from a written description rather than a named preset.

Running them: 8 GB against a CUDA pin

• Ming-3.0-tts-0.5B — tested on an NVIDIA H800-80GB and an H20-96G with CUDA 12.4. Flash-attention is optional with an SDPA fallback. Text normalisation needs pynini==2.1.6, or you pass --no_text_normalization and accept raw numbers and abbreviations going to the model. PyTorch 2.6 is the reference environment. Output is 44.1 kHz.

• VoxCPM2 — about 8 GB of VRAM in bf16 for development and roughly 22 GB peak on a 24 GB card, Python 3.10 or newer, PyTorch 2.5.0 or newer, CUDA 12.0 or newer. The documented real-time factor is about 0.30 on an RTX 4090 in plain PyTorch and about 0.13 with Nano-VLLM — roughly two to three times faster than real time, or eight with the serving layer.

A generated deployment card titled 'What it takes to run each one', with a Ming-3.0-tts-0.5B column listing PyTorch 2.6 and CUDA 12.4, H800-80GB and H20-96G testing, optional flash-attention with SDPA fallback, pynini 2.1.6 for text normalisation and 44.1 kHz output, against a VoxCPM2 column listing about 8 GB VRAM in bf16, roughly 22 GB peak on a 24 GB card, Python 3.10 and PyTorch 2.5 minimums, and real-time factors of 0.30 on an RTX 4090 and 0.13 with Nano-VLLM.

Those two paragraphs describe very different engineering afternoons. Ming's stack is the newer one and the more brittle one: a pinned FST library, an optional kernel, a reference environment pinned to a specific CUDA build. VoxCPM2 has been out since April and has absorbed six months of community installation reports. That maturity advantage is real and it is temporary — Ming's inference code went up on the day this was written, and the repository gained its vLLM-Omni support note in a documentation commit on the same afternoon.

A screenshot of the Artificial Analysis Provider Voice leaderboard captured October 19 2026, with Ming-3.0-tts at 1,188 Elo on the nineteenth row, a rank range of 17 to 23 and a release month of October 2026, against a field led by Eleven v4 Turbo at 1,333; no VoxCPM2 entry appears anywhere in the visible list.

Neither model is offered by a hosted inference provider we could identify, and that is not a gap in this comparison so much as the premise of it: both are checkpoints you download. It does mean the independent evidence is lopsided. Ming-3.0-tts-0.5B has an Artificial Analysis row on both speech boards — 1,188 Elo on Provider Voice (interval 1,173–1,203, rank range 17–23, the nineteenth row of the list we captured on October 19, 2026) and 1,069 on Controlled Voice (1,053–1,085, rank range 10–18, thirteenth row on the same day). VoxCPM2 has no row on either board as of our latest captures, and the absence has been stable since April rather than a recent omission. So the only independent number in this article belongs to Ming, and it is a respectable one; VoxCPM2 has nothing to set against it, and no honest article can invent a head-to-head Elo that nobody measured.

Licence, fine-tuning, and the question nobody asks

Both licences permit commercial use. Ming is MIT, which is about as permissive as a licence gets and requires only attribution. VoxCPM2 is Apache 2.0, which adds an explicit patent grant and a trademark carve-out. For most teams the difference is administrative rather than legal, and either is a clean answer to a procurement questionnaire whereas a non-commercial licence is not.

The real asymmetry is fine-tuning. VoxCPM2 documents full supervised fine-tuning and LoRA on five to ten minutes of audio, which means you can move the model toward a specific speaker or style with a small dataset and a single GPU. Ming-3.0-tts-0.5B ships no fine-tuning recipe, no training script and no LoRA path in the release we read. If your product needs a model that is yours rather than a model you prompt, that is not a benchmark gap — it is a capability gap, and it decides the choice before any Elo number is consulted.

Ming's answer to the same need is voice design plus cloning: describe the voice, or supply a clip. That covers most production needs and none of the ones that involve training on proprietary audio at scale.

Where a routing layer earns its place here

OrcaRouter does not host Ming-3.0-tts-0.5B or VoxCPM2. Neither is a model we can hand you an endpoint for, and this piece will not pretend otherwise. What a router does reach in a speech pipeline is everything upstream of the waveform: the model that drafts the script, expands the abbreviations, decides where the laughter tag goes, and rewrites the sentence that came out at 3.8 seconds when the slot was 3.2. Those are text calls, and we route more than 200 text models behind one key at provider list price with 0% markup added — so when a vendor cuts a price, the cut is live on our side the same day rather than at the next repricing. Automatic failover keeps that half of the pipeline answering while the voice half is a download you operate yourself.

That is the honest boundary. A router is the wrong tool for a checkpoint you run on your own GPU, and the right tool for the models that decide what the checkpoint is asked to say.

Choosing, without a leaderboard to hide behind

Choose Ming-3.0-tts-0.5B if your content is multilingual and accuracy-of-words is the metric your stakeholders argue about, if you need Chinese-first voice coverage with named presets, if inline emotional tags are part of the script format, if you want a 2.96 GB MIT checkpoint that fits comfortably on modest hardware, or if a 0.5B parameter count is the difference between a viable unit cost and an unviable one. Go in knowing that the voice will be slightly less faithful to the reference than VoxCPM2's, that the inference code is hours old, and that there is no fine-tuning path.

Choose VoxCPM2 if voice identity is the product — dubbing, character work, anything where a listener would notice the clone drifting — if you need one of the languages Ming does not cover, if you intend to fine-tune on your own audio, or if you want a stack that has been installable without surprises since April.

The tie-breaker is cheap and none of the numbers above replace it. Take a hundred sentences of your own text, one reference clip, and run both. Score the words with an ASR model and score the voice with the same cosine metric Ant used. You will get a per-language answer in an afternoon, on your content, with your accents — which is more than a vendor table built on a public test set can give you, and considerably more than a leaderboard that lists only one of the two models.