mrkeyoor.com_
Sun 06 Sept 16:35 UTC
AI Toolsevaluationupdated 06 Sept 2026

VoxCPM review

VoxCPM is a local text-to-speech system that generates speech without first converting audio into discrete speech tokens. VoxCPM2 can read 30 languages, design a voice from a written description, clone a voice from reference audio, stream output, and support full or LoRA fine-tuning.

Verdict

Our VoxCPM environment took 158 seconds and 6,394 MB to install, while pytest collected 0 tests and exited 3 despite a standalone check printing 22/22 passed. VoxCPM2 deserves a controlled trial when 30-language local speech, voice design, and cloning justify a large ML stack. Do not ship its output unattended: current reports cover long-text distortion, short-word additions, cloning artifacts, and a WebUI reproducibility bug.

We ran it

Lab card: what happened when we ran VoxCPMScreenshot of VoxCPM (voxcpm.com)
Install✓ · 158s195 packages · 6394 MB
Build✓ · 6s
Tests✗ · 19s0 passed · 0 failed of 0 (pytest)
Known vulns1(pip-audit)
Repo80 files~12,479 lines of source · 6 MB · 1 CI workflows · tests dir

Answers from our run

Does VoxCPM build from source?

Dependencies installed in 158 seconds (195 packages), and the build succeeded in 6 seconds. We cloned commit f772e49 into a clean Debian container with 3 CPUs and no project-specific setup.

Do VoxCPM's tests pass?

Yes: 0 of 0 passed when we ran the project's own test command (pytest). Some failures need services or credentials a bare container does not have.

Does VoxCPM have known vulnerabilities in its dependencies?

pip-audit flagged 1 known advisory in the dependency tree at the time of our run.

Who should not use VoxCPM?

Python 3.13 users who cannot change runtimes: the README requires Python 3.10 through 3.12.

What are the alternatives to VoxCPM?

CosyVoice, F5-TTS, Kokoro. Our VoxCPM environment took 158 seconds and 6,394 MB to install, while pytest collected 0 tests and exited 3 despite a standalone check printing 22/22 passed.

Setup2/5195 packages used 6,394 MB before model-serving work
Docs5/5API, CLI, models, fine-tuning, devices, and serving are covered
Community5/536,769 stars with September 2026 code and issue activity
Maturity3/5v2.0.3 is active, but pytest integration and audio reports remain

Who it’s for

Speech teams willing to devote 6,394 MB to the Python environment before loading model weights.
Developers who need local multilingual TTS, voice design, streaming, or voice cloning under Apache-2.0.
Researchers adapting a 2B-parameter speech model with SFT or LoRA.
Operators who can validate every generated file and maintain consent records for cloned voices.

Who it’s NOT for

Python 3.13 users who cannot change runtimes: the README requires Python 3.10 through 3.12.
Teams expecting a small dependency footprint: our install added 195 packages and occupied 6,394 MB before application-specific model work.
Long-form or single-word pipelines that cannot listen or transcribe outputs: issue 372 reports distortion around a 300-character sample, while issue 357 reports extra words on short Polish utterances.
LoRA teams relying on the WebUI seed for controlled comparisons: issue 390 says the value is not passed into generate().
Anyone cloning voices without explicit permission and misuse controls: the README forbids impersonation, fraud, and disinformation and recommends marking generated audio.

Setup reality

Our sandbox installed 195 Python packages in 158 seconds and used 6,394 MB. The build succeeded in 6 seconds. Pytest exited 3 after 19 seconds with 0 collected tests: importing scripts/test_pick_runtime_dtype.py ran 22 checks, printed 22/22 passed, then called sys.exit(0), which pytest reported as an internal error. Pip-audit found 1 known vulnerability.

Basic use installs voxcpm, then obtains public model assets from Hugging Face or ModelScope. The README documents Python, CLI, Web demo, batch, streaming, timestamps, fine-tuning, and separate vLLM or C++ serving paths. It does not require a hosted TTS credential for the local public-weight route.

The README requires Python 3.10 to 3.12, PyTorch 2.5+, and CUDA 12+ for its main quick start, while the demo exposes CPU and Apple MPS device choices too. Our 6 MB checkout had 1 CI workflow, no Dockerfile, and a tests directory. Model weights and production serving add their own storage and hardware decisions.

VoxCPM2 uses 2B parameters for speech in 30 languages

VoxCPM2 generates continuous speech representations without a discrete speech tokenizer. The current model supports 30 listed languages, accepts natural-language descriptions for voice design, and can clone from reference audio with optional style guidance. A continuation mode also accepts the reference transcript. Output is 48 kHz, and the Python interface can return a complete waveform or streaming chunks. Those features put VoxCPM2 closer to a speech toolkit than a single command that reads text aloud.

The repository is small beside its runtime: 80 files, about 12,479 source lines, and 6 MB checked out in our lab. Its README still covers several operating modes. Developers can call Python, use the CLI, run a Gradio demo, process batches, request timestamps through an extra, or fine-tune with SFT and LoRA. Apache-2.0 applies to the code and weights according to the project, which is unusually permissive for a voice-cloning system and makes internal policy more important, not less.

A 300-character report makes output review mandatory

Issue 372 reports severe distortion on a roughly 300-character Chinese sample, beginning about 20 seconds into the generated audio. The reporter reproduced it with the project's reference voice and across the standard implementation, Nano-vLLM, and vLLM-Omni. That is one submitted case rather than our benchmark, but it directly concerns long-form narration. Split long text, keep source-aligned transcripts, and listen to stitched output before using VoxCPM2 for audiobooks, lessons, or automated dubbing.

Short inputs need a different check. Issue 357 reports extra syllables or words after single-word Polish prompts, while issue 272 describes a chirp or fragment from the reference clip at the start of cloned segments. The 6,394 MB environment cannot protect an application from speech that is technically valid audio yet says the wrong thing. An unattended pipeline should run speech-to-text comparison, duration checks, clipping detection, and human review for samples where identity or meaning matters.

The LoRA WebUI seed does not guarantee the same output

Issue 390 says the LoRA WebUI reads a seed and sets Python and NumPy random state, but does not pass that seed to generate(). The report explains that the model then handles seed=None by choosing another value, so checkpoint A/B comparisons may not be reproducible. That is a concrete problem for fine-tuning work: if reference audio, prompt, guidance, and steps stay fixed while the effective generation seed changes, a listener cannot attribute the result to the checkpoint alone.

Release 2.0.3 added training-manifest validation and safer legacy LoRA loading, while our checkout still produced the WebUI seed report 4 months later. The fine-tuning route accepts JSONL manifests and supports both full updates and LoRA adapters. Validate audio paths and sample rates before training, then record the effective generation seed outside the UI until issue 390 is resolved. Our 195-package install shows this is already a substantial experiment environment, so reproducibility metadata should be part of the first run.

What happened when we ran it

Our sandbox installed 195 packages in 158 seconds and occupied 6,394 MB. The source build then succeeded in 6 seconds. Pip-audit reported 1 known vulnerability, with no severity supplied in the measurement block. The checkout at commit f772e49 had 80 files and roughly 12,479 source lines. Our measurement setup used Python 3.12 on Debian, 3 CPUs, 8 GB of RAM, no secrets, and an unprivileged container.

Pytest failed with exit code 3 after 19 seconds and reported 0 passed, 0 failed, and 0 collected tests. During collection it imported scripts/test_pick_runtime_dtype.py. That file executed 22 internal checks, printed 22/22 passed, and called sys.exit(0). Pytest caught the otherwise successful exit as an internal error and stopped. The standalone checks look healthy, but they are not a passing pytest suite in the command we ran.

The repository had 1 CI workflow file, no Dockerfile, and a tests directory. Our run did not load VoxCPM2 weights, synthesize speech, clone a voice, measure latency, or compare language quality. The 6,394 MB figure covers the installed Python environment from the supplied lab run, not a complete production server. Model caches, reference audio, fine-tuning data, generated files, and serving engines need separate storage budgets.

Version 2.0.3 separates local use from production serving

The basic package supports Python generation, a CLI, and a Web demo on port 8808. For concurrent production work, the README points to Nano-vLLM-VoxCPM or vLLM-Omni, the latter exposing an OpenAI-compatible speech endpoint. On-device deployment follows a separate C++ project and GGUF weights. These are real options, but they distribute responsibility across repositories, packages, model formats, and device backends rather than giving operators one supported container in this checkout.

Python support also has an edge. The README says 3.10 or newer but below 3.13, PyTorch 2.5 or newer, and CUDA 12 or newer for the main installation path. The demo accepts CPU, MPS, or CUDA device selection, and v2.0.3 changed MPS dtype handling. Test the exact backend because CUDA, Apple Silicon, CPU, vLLM, and C++ paths do not share one runtime. The absence of a repository Dockerfile leaves image pinning and GPU-library compatibility to the operator.

September 2026 activity accompanies 111 open items

GitHub showed 36,769 stars, a last push on September 2, 2026, and issue activity through September 6. Its combined open count was 111; separate searches found 93 issues and 18 pull requests. Release 2.0.3 arrived on May 11 with runtime, streaming, fine-tuning, security, and documentation changes. Recent pushes and current issue replies show maintenance beyond the release tag, so the 4-month tag gap is not evidence of abandonment.

VoxCPM2 is moving fast enough for research and guarded product trials. Its 30-language scope, voice design, cloning controls, fine-tuning, and several serving routes are the draw. The 6-second build is encouraging, but the 6,394 MB dependency environment and broken pytest collection raise the cost of owning it. Add consent checks, mark synthetic speech, preserve the input text, and reject output that fails transcription or listening review before any generated voice reaches users.

Alternatives

ProjectWhat it isPick it when
CosyVoiceA multilingual voice-generation project covering inference, training, and deployment.pick this instead when you want to compare another full speech stack with its own serving and training routes.
F5-TTSA flow-matching speech project with training and inference code.pick this instead when its model design and research tooling fit your speech experiments better than VoxCPM2.
KokoroA compact open-weight text-to-speech model with a narrow inference focus.pick this instead when a smaller speech model matters more than VoxCPM2's voice design and fine-tuning surface.
OpenVoiceAn open voice-cloning model from MIT and MyShell.pick this instead when voice cloning is the main requirement and you do not need VoxCPM2's broader generation workflow.

What people are saying

  1. [velocity-scout] OpenBMB/VoxCPM

Sources

  1. VoxCPM repository and README
  2. VoxCPM v2.0.3 release notes
  3. VoxCPM Python package manifest
  4. VoxCPM issue 372: long-text distortion
  5. VoxCPM issue 357: short Polish utterance additions
  6. VoxCPM issue 272: cloning chirp and voice consistency
  7. VoxCPM issue 390: LoRA WebUI seed handling
  8. VoxCPM runtime dtype check script

More ai tools reviews

whisper · METATRON · openmed · open-science · mlx · onnx · the whole board →