OpenBMB/VoxCPMPublic

VoxCPM2: Tokenizer-Free TTS for Multilingual Speech Generation, Creative Voice Design, and True-to-Life Cloning

AI summary: A highly efficient, tokenizer-free Text-to-Speech (TTS) generation model.

Stars
35K
+101 today
Forks
4K
Watchers
154
Open issues
85
Open PRs
15
Contributors
~31
Commits
161
Branches
3

PythonApache-2.0Created Sep 16, 2025Last push 1mo agoLatest release 2.0.3+360 stars this week+598 this month

Star history

since Sep 14, 2025
010K20K30KSep 2025Dec 2025Apr 2026Aug 2026
35K stars as of Aug 7, 2026, tracked back to Sep 14, 2025. Historical curve reconstructed from public GitHub event archives, calibrated to the current total.

Contribution activity

commits per day, last 52 weeks
AugSepOctNovDecJanFebMarAprMayJunJulAugMonWedFri2025-08-10: 0 commits2025-08-11: 0 commits2025-08-12: 0 commits2025-08-13: 0 commits2025-08-14: 0 commits2025-08-15: 0 commits2025-08-16: 0 commits2025-08-17: 0 commits2025-08-18: 0 commits2025-08-19: 0 commits2025-08-20: 0 commits2025-08-21: 0 commits2025-08-22: 0 commits2025-08-23: 0 commits2025-08-24: 0 commits2025-08-25: 0 commits2025-08-26: 0 commits2025-08-27: 0 commits2025-08-28: 0 commits2025-08-29: 0 commits2025-08-30: 0 commits2025-08-31: 0 commits2025-09-01: 0 commits2025-09-02: 0 commits2025-09-03: 0 commits2025-09-04: 0 commits2025-09-05: 0 commits2025-09-06: 0 commits2025-09-07: 0 commits2025-09-08: 0 commits2025-09-09: 0 commits2025-09-10: 0 commits2025-09-11: 0 commits2025-09-12: 0 commits2025-09-13: 0 commits2025-09-14: 0 commits2025-09-15: 0 commits2025-09-16: 20 commits2025-09-17: 4 commits2025-09-18: 9 commits2025-09-19: 4 commits2025-09-20: 0 commits2025-09-21: 0 commits2025-09-22: 1 commit2025-09-23: 0 commits2025-09-24: 0 commits2025-09-25: 0 commits2025-09-26: 0 commits2025-09-27: 0 commits2025-09-28: 1 commit2025-09-29: 0 commits2025-09-30: 1 commit2025-10-01: 0 commits2025-10-02: 0 commits2025-10-03: 0 commits2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-08: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 8 commits2025-12-06: 2 commits2025-12-07: 1 commit2025-12-08: 0 commits2025-12-09: 1 commit2025-12-10: 1 commit2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 2 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 1 commit2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 1 commit2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 1 commit2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 1 commit2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 1 commit2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 1 commit2026-01-17: 0 commits2026-01-18: 1 commit2026-01-19: 0 commits2026-01-20: 1 commit2026-01-21: 0 commits2026-01-22: 0 commits2026-01-23: 0 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 0 commits2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 0 commits2026-02-04: 0 commits2026-02-05: 0 commits2026-02-06: 0 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 0 commits2026-02-11: 1 commit2026-02-12: 0 commits2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 0 commits2026-02-18: 0 commits2026-02-19: 0 commits2026-02-20: 0 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 1 commit2026-02-25: 0 commits2026-02-26: 0 commits2026-02-27: 0 commits2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 0 commits2026-03-03: 0 commits2026-03-04: 0 commits2026-03-05: 0 commits2026-03-06: 0 commits2026-03-07: 0 commits2026-03-08: 0 commits2026-03-09: 0 commits2026-03-10: 0 commits2026-03-11: 0 commits2026-03-12: 0 commits2026-03-13: 1 commit2026-03-14: 0 commits2026-03-15: 0 commits2026-03-16: 0 commits2026-03-17: 0 commits2026-03-18: 0 commits2026-03-19: 0 commits2026-03-20: 0 commits2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 0 commits2026-03-24: 0 commits2026-03-25: 0 commits2026-03-26: 0 commits2026-03-27: 0 commits2026-03-28: 0 commits2026-03-29: 0 commits2026-03-30: 0 commits2026-03-31: 2 commits2026-04-01: 1 commit2026-04-02: 2 commits2026-04-03: 3 commits2026-04-04: 0 commits2026-04-05: 0 commits2026-04-06: 8 commits2026-04-07: 3 commits2026-04-08: 9 commits2026-04-09: 4 commits2026-04-10: 0 commits2026-04-11: 2 commits2026-04-12: 0 commits2026-04-13: 4 commits2026-04-14: 0 commits2026-04-15: 2 commits2026-04-16: 2 commits2026-04-17: 0 commits2026-04-18: 1 commit2026-04-19: 0 commits2026-04-20: 0 commits2026-04-21: 2 commits2026-04-22: 1 commit2026-04-23: 0 commits2026-04-24: 1 commit2026-04-25: 1 commit2026-04-26: 0 commits2026-04-27: 0 commits2026-04-28: 1 commit2026-04-29: 0 commits2026-04-30: 0 commits2026-05-01: 0 commits2026-05-02: 0 commits2026-05-03: 0 commits2026-05-04: 0 commits2026-05-05: 0 commits2026-05-06: 0 commits2026-05-07: 0 commits2026-05-08: 1 commit2026-05-09: 0 commits2026-05-10: 0 commits2026-05-11: 0 commits2026-05-12: 0 commits2026-05-13: 0 commits2026-05-14: 0 commits2026-05-15: 0 commits2026-05-16: 0 commits2026-05-17: 0 commits2026-05-18: 3 commits2026-05-19: 0 commits2026-05-20: 0 commits2026-05-21: 0 commits2026-05-22: 0 commits2026-05-23: 0 commits2026-05-24: 0 commits2026-05-25: 0 commits2026-05-26: 0 commits2026-05-27: 0 commits2026-05-28: 0 commits2026-05-29: 0 commits2026-05-30: 0 commits2026-05-31: 0 commits2026-06-01: 1 commit2026-06-02: 0 commits2026-06-03: 0 commits2026-06-04: 0 commits2026-06-05: 1 commit2026-06-06: 1 commit2026-06-07: 0 commits2026-06-08: 2 commits2026-06-09: 0 commits2026-06-10: 1 commit2026-06-11: 0 commits2026-06-12: 0 commits2026-06-13: 0 commits2026-06-14: 0 commits2026-06-15: 0 commits2026-06-16: 0 commits2026-06-17: 0 commits2026-06-18: 0 commits2026-06-19: 0 commits2026-06-20: 0 commits2026-06-21: 0 commits2026-06-22: 0 commits2026-06-23: 0 commits2026-06-24: 2 commits2026-06-25: 0 commits2026-06-26: 0 commits2026-06-27: 0 commits2026-06-28: 1 commit2026-06-29: 0 commits2026-06-30: 1 commit2026-07-01: 0 commits2026-07-02: 0 commits2026-07-03: 0 commits2026-07-04: 0 commits2026-07-05: 0 commits2026-07-06: 0 commits2026-07-07: 0 commits2026-07-08: 1 commit2026-07-09: 0 commits2026-07-10: 0 commits2026-07-11: 0 commits2026-07-12: 0 commits2026-07-13: 0 commits2026-07-14: 0 commits2026-07-15: 0 commits2026-07-16: 0 commits2026-07-17: 0 commits2026-07-18: 0 commits2026-07-19: 0 commits2026-07-20: 0 commits2026-07-21: 0 commits2026-07-22: 0 commits2026-07-23: 0 commits2026-07-24: 0 commits2026-07-25: 0 commits2026-07-26: 0 commits2026-07-27: 0 commits2026-07-28: 0 commits2026-07-29: 0 commits2026-07-30: 0 commits2026-07-31: 0 commits2026-08-01: 0 commits2026-08-02: 0 commits2026-08-03: 0 commits2026-08-04: 0 commits2026-08-05: 0 commits2026-08-06: 0 commits2026-08-07: 0 commits2026-08-08: 0 commits
130 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Widely adopted

    35,013 stars

  • Permissive license

    Apache-2.0

  • Continuous integration

    Automated checks passing

  • Repeat trending

    15 trending appearances

What VoxCPM does

VoxCPM is an advanced Text-to-Speech (TTS) model developed by OpenBMB that operates without a traditional text tokenizer. It leverages continuous representations and a novel modeling architecture to generate highly natural and expressive speech directly from raw text inputs. By removing the discrete tokenization step, VoxCPM mitigates common alignment issues and vocabulary limitations found in conventional TTS systems. The model is designed for high efficiency and scalability, supporting zero-shot voice cloning and robust prosody control while maintaining a lightweight computational footprint.

VoxCPM is intended for AI researchers, audio engineers, and developers building speech generation applications. It is ideal for teams requiring fast, expressive, and high-fidelity text-to-speech capabilities.

  • Tokenizer-Free Architecture: Eliminates traditional text tokenization for continuous, raw text-to-speech mapping.
  • Zero-Shot Voice Cloning: Accurately replicates a target voice using only a few seconds of reference audio.
  • Expressive Prosody Control: Captures and generates natural intonation, rhythm, and emotional nuances in speech.
  • High Efficiency: Optimized for fast inference and reduced computational overhead compared to discrete models.
  • End-to-End Generation: Streamlined pipeline from text directly to high-fidelity audio waveforms.

Where teams use it

Audiobook Production

Generating highly natural and expressive narration for long-form text content like audiobooks.

Virtual Assistants

Providing lifelike, dynamic voices for conversational AI agents and virtual avatars.

Accessibility Tools

Creating realistic screen readers and text-to-speech accessibility features for visually impaired users.

Content Localization

Rapidly dubbing videos and multimedia content into different languages with cloned voices.

Getting started: pip install voxcpm

README

main branch

VoxCPM2: Tokenizer-Free TTS for Multilingual Speech Generation, Creative Voice Design, and True-to-Life Cloning

English | 中文

Project Page Live Playground Documentation Hugging Face ModelScope DemoPage VoxCPM2 Technical Report

VoxCPM Logo

OpenBMB%2FVoxCPM | Trendshift

👋 Join our community for discussion and support!
Feishu  |  Discord

VoxCPM is a tokenizer-free Text-to-Speech system that directly generates continuous speech representations via an end-to-end diffusion autoregressive architecture, bypassing discrete tokenization to achieve highly natural and expressive synthesis.

VoxCPM2 is the latest major release — a 2B parameter model trained on over 2 million hours of multilingual speech data, now supporting 30 languages, Voice Design, Controllable Voice Cloning, and 48kHz studio-quality audio output. Built on a MiniCPM-4 backbone.

✨ Highlights

  • 🌍 30-Language Multilingual — Input text in any of the 30 supported languages and synthesize directly, no language tag needed
  • 🎨 Voice Design — Create a brand-new voice from a natural-language description alone (gender, age, tone, emotion, pace …), no reference audio required
  • 🎛️ Controllable Cloning — Clone any voice from a short reference clip, with optional style guidance to steer emotion, pace, and expression while preserving the original timbre
  • 🎙️ Ultimate Cloning — Reproduce every vocal nuance: provide both reference audio and its transcript, and the model continues seamlessly from the reference, faithfully preserving every vocal detail — timbre, rhythm, emotion, and style (same as VoxCPM1.5)
  • 🔊 48kHz High-Quality Audio — Accepts 16kHz reference audio and directly outputs 48kHz studio-quality audio via AudioVAE V2's asymmetric encode/decode design, with built-in super-resolution — no external upsampler needed
  • 🧠 Context-Aware Synthesis — Automatically infers appropriate prosody and expressiveness from text content
  • Real-Time Streaming — RTF as low as ~0.3 on NVIDIA RTX 4090, and ~0.13 accelerated by Nano-vLLM or vLLM-Omni — official vLLM omni-modal serving for VoxCPM2 with PagedAttention and an OpenAI-compatible API
  • 📜 Fully Open-Source & Commercial-Ready — Weights and code released under the Apache-2.0 license, free for commercial use

🌍 Supported Languages (30)
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, Vietnamese

Chinese Dialect: 四川话, 粤语, 吴语, 东北话, 河南话, 陕西话, 山东话, 天津话, 闽南话

News

  • [2026.04] 🔥 We release VoxCPM2 — 2B, 30 languages, Voice Design & Controllable Voice Cloning, 48kHz audio output! Weights | Docs | Playground | Technical Report
  • [2025.12] 🎉 Open-source VoxCPM1.5 weights with SFT & LoRA fine-tuning. (🏆 #1 GitHub Trending)
  • [2025.09] 🔥 Release VoxCPM Technical Report.
  • [2025.09] 🎉 Open-source VoxCPM-0.5B weights (🏆 #1 HuggingFace Trending)

Contents


🚀 Quick Start

Installation

pip install voxcpm

Requirements: Python ≥ 3.10 (<3.13), PyTorch ≥ 2.5.0, CUDA ≥ 12.0. See Quick Start Docs for details.

Python API

🗣️ Text-to-Speech

from voxcpm import VoxCPM
import soundfile as sf

model = VoxCPM.from_pretrained(
  "openbmb/VoxCPM2",
  load_denoiser=False,
)

wav = model.generate(
    text="VoxCPM2 is the current recommended release for realistic multilingual speech synthesis.",
    cfg_value=2.0,
    inference_timesteps=10,
    seed=42,
)
sf.write("demo.wav", wav, model.tts_model.sample_rate)
print("saved: demo.wav")

If you prefer downloading from ModelScope first, you can use:

pip install modelscope
from modelscope import snapshot_download
snapshot_download("OpenBMB/VoxCPM2", local_dir='./pretrained_models/VoxCPM2') # specify the local directory to save the model

from voxcpm import VoxCPM
import soundfile as sf
model = VoxCPM.from_pretrained("./pretrained_models/VoxCPM2", load_denoiser=False)

wav = model.generate(
    text="VoxCPM2 is the current recommended release for realistic multilingual speech synthesis.",
    cfg_value=2.0,
    inference_timesteps=10,
    seed=42,
)
sf.write("demo.wav", wav, model.tts_model.sample_rate)

🎨 Voice Design

Create a voice from a natural-language description — no reference audio needed. Format: put the description in parentheses at the start of text(e.g. "(your voice description)The text to synthesize."):

wav = model.generate(
    text="(A young woman, gentle and sweet voice)Hello, welcome to VoxCPM2!",
    cfg_value=2.0,
    inference_timesteps=10,
    seed=42,
)
sf.write("voice_design.wav", wav, model.tts_model.sample_rate)

🎛️ Controllable Voice Cloning

Upload a reference audio. The model clones the timbre, and you can still use control instructions to adjust speed, emotion, or style.

wav = model.generate(
    text="This is a cloned voice generated by VoxCPM2.",
    reference_wav_path="path/to/voice.wav",
)
sf.write("clone.wav", wav, model.tts_model.sample_rate)

wav = model.generate(
    text="(slightly faster, cheerful tone)This is a cloned voice with style control.",
    reference_wav_path="path/to/voice.wav",
    cfg_value=2.0,
    inference_timesteps=10,
    seed=42,
)
sf.write("controllable_clone.wav", wav, model.tts_model.sample_rate)

🎙️ Ultimate Cloning

Provide both the reference audio and its exact transcript for audio-continuation-based cloning with every vocal nuance reproduced. For maximum cloning similarity, pass the same reference clip to both reference_wav_path and prompt_wav_path as shown below:

wav = model.generate(
    text="This is an ultimate cloning demonstration using VoxCPM2.",
    prompt_wav_path="path/to/voice.wav",
    prompt_text="The transcript of the reference audio.",
    reference_wav_path="path/to/voice.wav", # optional, for better simliarity 
)
sf.write("hifi_clone.wav", wav, model.tts_model.sample_rate)

🔄 Streaming API

import numpy as np

chunks = []
for chunk in model.generate_streaming(
    text="Streaming text to speech is easy with VoxCPM!",
):
    chunks.append(chunk)
wav = np.concatenate(chunks)
sf.write("streaming.wav", wav, model.tts_model.sample_rate)

CLI Usage

# Voice design (no reference audio needed)
voxcpm design \
  --text "VoxCPM2 brings studio-quality multilingual speech synthesis." \
  --output out.wav

# Controllable voice cloning with style control
voxcpm design \
  --text "VoxCPM2 brings studio-quality multilingual speech synthesis." \
  --control "Young female voice, warm and gentle, slightly smiling" \
  --seed 42 \
  --output out.wav

# Voice cloning (reference audio)
voxcpm clone \
  --text "This is a voice cloning demo." \
  --reference-audio path/to/voice.wav \
  --output out.wav

# Ultimate cloning (prompt audio + transcript)
voxcpm clone \
  --text "This is a voice cloning demo." \
  --prompt-audio path/to/voice.wav \
  --prompt-text "reference transcript" \
  --reference-audio path/to/voice.wav \ # optional, for better simliarity
  --output out.wav

# Batch processing
voxcpm batch --input examples/input.txt --output-dir outs

# Optional post-generation timestamps with stable-ts
pip install "voxcpm[timestamps]"
voxcpm design \
  --text "VoxCPM2 brings studio-quality multilingual speech synthesis." \
  --output out.wav \
  --timestamps \
  --timestamp-level word \
  --timestamp-language en

# Character timestamps are best-effort and are derived from word alignment
voxcpm design \
  --text "欢迎使用 VoxCPM2。" \
  --output out.wav \
  --timestamps \
  --timestamp-level char \
  --timestamp-language zh

# Help
voxcpm --help

Web Demo

python app.py --port 8808  # then open in browser: http://localhost:8808

Use --device to choose the runtime device:

python app.py --device auto

Supported values are auto, cpu, mps, cuda, and cuda:N. On Apple Silicon Macs, auto uses MPS when available.

🚢 Production Deployment (Nano-vLLM)

For high-throughput serving, use Nano-vLLM-VoxCPM — a dedicated inference engine built on Nano-vLLM with concurrent request support and an async API.

pip install nano-vllm-voxcpm
from nanovllm_voxcpm import VoxCPM
import numpy as np, soundfile as sf

server = VoxCPM.from_pretrained(model="/path/to/VoxCPM", devices=[0])
chunks = list(server.generate(target_text="Hello from VoxCPM!"))
sf.write("out.wav", np.concatenate(chunks), 48000)
server.stop()

RTF as low as ~0.13 on NVIDIA RTX 4090 (vs ~0.3 with the standard PyTorch implementation), with support for batched concurrent requests and a FastAPI HTTP server. See the Nano-vLLM-VoxCPM repo for deployment details.

🏭 Production Serving (vLLM-Omni)

For production multi-tenant deployments, use vLLM-Omni — the official vLLM project's omni-modal extension with native VoxCPM2 support. PagedAttention KV cache, continuous batching, and a drop-in OpenAI-compatible /v1/audio/speech endpoint.

# Install from source (latest main — vllm-omni is rapidly evolving)
uv pip install vllm==0.19.0 --torch-backend=auto
git clone https://github.com/vllm-project/vllm-omni.git && cd vllm-omni
uv pip install -e .

See the vLLM-Omni installation guide for other platforms (ROCm, XPU, MUSA, NPU) and Docker images.

# Launch an OpenAI-compatible TTS server (--omni enables omni-modal serving)
vllm serve openbmb/VoxCPM2 --omni --port 8000

# Call it from any OpenAI client
curl http://localhost:8000/v1/audio/speech \
  -H "Content-Type: application/json" \
  -d '{"model":"openbmb/VoxCPM2","input":"Hello from VoxCPM2 on vLLM-Omni!","voice":"default"}' \
  --output out.wav

Built on the upstream vLLM scheduler, with batched concurrent requests, streaming chunk delivery, and multi-GPU deployment out of the box. See the VoxCPM2 example for full deployment recipes.

📱 On-Device Inference (llama.cpp-omni)

For on-device / edge deployment without Python, use llama.cpp-omni — a high-performance C++ inference engine built on llama.cpp, with native VoxCPM2 GGUF support on CPU / Metal / CUDA / Vulkan.

1. Download GGUF weights from HuggingFace | ModelScope — you need one BaseLM (F16 or Q8_0) + the Acoustic file. Q8_0 halves the download with negligible quality loss.

2. Build

git clone https://github.com/tc-mb/llama.cpp-omni.git && cd llama.cpp-omni
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --target voxcpm2-cli -j

CMake auto-detects Metal (macOS) or CUDA (Linux with NVIDIA GPU).

3. Run

# Basic TTS
./build/bin/voxcpm2-cli \
    -t "Hello, this is VoxCPM2 running through llama.cpp-omni." \
    -o output.wav VoxCPM2-BaseLM-Q8_0.gguf VoxCPM2-Acoustic-F16.gguf

# Voice cloning (reference audio)
./build/bin/voxcpm2-cli \
    -t "Cloned voice." -r speaker.wav -o clone.wav \
    VoxCPM2-BaseLM-Q8_0.gguf VoxCPM2-Acoustic-F16.gguf

# Ultimate cloning (reference audio + transcript)
./build/bin/voxcpm2-cli \
    -t "Target text." --prompt-wav speaker.wav --prompt-text "transcript of speaker.wav" \
    -o clone.wav VoxCPM2-BaseLM-Q8_0.gguf VoxCPM2-Acoustic-F16.gguf

RTF ~1.76 (Q8_0) on Apple M4 Pro / Metal. Key flags: --cfg (guidance scale), --timesteps (CFM steps), --seed, --temperature, --stream. See the llama.cpp-omni repo and GGUF weights page for full details.

Full parameter reference, multi-scenario examples, and voice cloning tips → Quick Start Guide | Usage Guide | Cookbook


📦 Models & Versions

VoxCPM2 VoxCPM1.5 VoxCPM-0.5B
Status 🟢 Latest Stable Legacy
Backbone Parameters 2B 0.6B 0.5B
Audio Sample Rate 48kHz 44.1kHz 16kHz
LM Token Rate 6.25Hz 6.25Hz 12.5Hz
Languages 30 2 (zh, en) 2 (zh, en)
Cloning Mode Isolated Reference & Continuation Continuation only Continuation only
Voice Design
Controllable Voice Cloning
SFT / LoRA
RTF (RTX 4090) ~0.30 ~0.15 ~0.17
RTF in Nano-VLLM (RTX 4090) ~0.13 ~0.08 ~0.10
VRAM ~8 GB ~6 GB ~5 GB
Weights 🤗 HF / MS 🤗 HF / MS 🤗 HF / MS
Technical Report arXiv arXiv ICLR 2026
Demo Page Audio Samples Audio Samples

VoxCPM2 is built on a tokenizer-free, diffusion autoregressive paradigm. The model operates entirely in the latent space of AudioVAE V2, following a four-stage pipeline: LocEnc → TSLM → RALM → LocDiT, enabling rich expressiveness and 48kHz native audio output.

VoxCPM2 Model Architecture

For full architectural details, VoxCPM2-specific upgrades, and a model comparison table, see the Architecture Design.


📊 Performance

VoxCPM2 achieves state-of-the-art or comparable results on public zero-shot and controllable TTS benchmarks.

Seed-TTS-eval

Seed-TTS-eval WER(⬇)&SIM(⬆) Results (click to expand)

Model Parameters Open-Source test-EN test-ZH test-Hard
WER/%⬇ SIM/%⬆ CER/%⬇ SIM/%⬆ CER/%⬇ SIM/%⬆
MegaTTS3 0.5B 2.79 77.1 1.52 79.0 - -
DiTAR 0.6B 1.69 73.5 1.02 75.3 - -
CosyVoice3 0.5B 2.02 71.8 1.16 78.0 6.08 75.8
CosyVoice3 1.5B 2.22 72.0 1.12 78.1 5.83 75.8
Seed-TTS - 2.25 76.2 1.12 79.6 7.59 77.6
MiniMax-Speech - 1.65 69.2 0.83 78.3 - -
F5-TTS 0.3B 2.00 67.0 1.53 76.0 8.67 71.3
MaskGCT 1B 2.62 71.7 2.27 77.4 - -
CosyVoice 0.3B 4.29 60.9 3.63 72.3 11.75 70.9
CosyVoice2 0.5B 3.09 65.9 1.38 75.7 6.83 72.4
SparkTTS 0.5B 3.14 57.3 1.54 66.0 - -
FireRedTTS 0.5B 3.82 46.0 1.51 63.5 17.45 62.1
FireRedTTS-2 1.5B 1.95 66.5 1.14 73.6 - -
Qwen2.5-Omni 7B 2.72 63.2 1.70 75.2 7.97 74.7
Qwen3-Omni 30B-A3B 1.39 - 1.07 - - -
OpenAudio-s1-mini 0.5B 1.94 55.0 1.18 68.5 23.37 64.3
IndexTTS2 1.5B 2.23 70.6 1.03 76.5 7.12 75.5
VibeVoice 1.5B 3.04 68.9 1.16 74.4 - -
HiggsAudio-v2 3B 2.44 67.7 1.50 74.0 55.07 65.6
VoxCPM-0.5B 0.6B 1.85 72.9 0.93 77.2 8.87 73.0
VoxCPM1.5 0.8B 2.12 71.4 1.18 77.0 7.74 73.1
MOSS-TTS 1.85 73.4 1.20 78.8 - -
Qwen3-TTS 1.7B 1.23 71.7 1.22 77.0 6.76 74.8
FishAudio S2 4B 0.99 - 0.54 - 5.99 -
LongCat-Audio-DiT 3.5B 1.50 78.6 1.09 81.8 6.04 79.7
VoxCPM2 2B 1.84 75.3 0.97 79.5 8.13 75.3

CV3-eval

CV3-eval Multilingual WER/CER(⬇) Results (click to expand)

Model zh en hard-zh hard-en ja ko de es fr it ru
CosyVoice2 4.08 6.32 12.58 11.96 9.13 19.7 - - - - -
CosyVoice3-1.5B 3.91 4.99 9.77 10.55 7.57 5.69 6.43 4.47 11.8 10.5 6.64
Fish Audio S2 2.65 2.43 9.10 4.40 3.96 2.76 2.22 2.00 6.26 2.04 2.78
VoxCPM2 3.65 5.00 8.55 8.48 5.96 5.69 4.77 3.80 9.85 4.25 5.21

MiniMax-Multilingual-Test

Minimax-MLS-test WER(⬇) Results (click to expand)

Language Minimax ElevenLabs Qwen3-TTS FishAudio S2 VoxCPM2
Arabic 1.665 1.666 3.500 13.046
Cantonese 34.111 51.513 30.670 38.584
Chinese 2.252 16.026 0.928 0.730 1.136
Czech 3.875 2.108 2.840 24.132
Dutch 1.143 0.803 0.990 0.913
English 2.164 2.339 0.934 1.620 2.289
Finnish 4.666 2.964 3.330 2.632
French 4.099 5.216 2.858 3.050 4.534
German 1.906 0.572 1.235 0.550 0.679
Greek 2.016 0.991 5.740 2.844
Hindi 6.962 5.827 14.640 19.699
Indonesian 1.237 1.059 1.460 1.084
Italian 1.543 1.743 0.948 1.270 1.563
Japanese 3.519 10.646 3.823 2.760 4.628
Korean 1.747 1.865 1.755 1.180 1.962
Polish 1.415 0.766 1.260 1.141
Portuguese 1.877 1.331 1.526 1.140 1.938
Romanian 2.878 1.347 10.740 21.577
Russian 4.281 3.878 3.212 2.400 3.634
Spanish 1.029 1.084 1.126 0.910 1.438
Thai 2.701 73.936 4.230 2.961
Turkish 1.52 0.699 0.870 0.817
Ukrainian 1.082 0.997 2.300 6.316
Vietnamese 0.88 73.415 7.410 3.307

Minimax-MLS-test SIM(⬆) Results (click to expand)

Language Minimax ElevenLabs Qwen3-TTS FishAudio S2 VoxCPM2
Arabic 73.6 70.6 75.0 79.1
Cantonese 77.8 67.0 80.5 83.5
Chinese 78.0 67.7 79.9 81.6 82.5
Czech 79.6 68.5 79.8 78.3
Dutch 73.8 68.0 73.0 80.8
English 75.6 61.3 77.5 79.7 85.4
Finnish 83.5 75.9 81.9 89.0
French 62.8 53.5 62.8 69.8 73.5
German 73.3 61.4 77.5 76.7 80.3
Greek 82.6 73.3 79.5 86.0
Hindi 81.8 73.0 82.1 85.6
Indonesian 72.9 66.0 76.3 80.0
Italian 69.9 57.9 81.7 74.7 78.0
Japanese 77.6 73.8 78.8 79.6 82.8
Korean 77.6 70.0 79.9 81.7 83.3
Polish 80.2 72.9 81.9 88.4
Portuguese 80.5 71.1 81.7 78.1 83.7
Romanian 80.9 69.9 73.3 79.7
Russian 76.1 67.6 79.2 79.0 81.1
Spanish 76.2 61.5 81.4 77.6 83.1
Thai 80.0 58.8 78.6 84.0
Turkish 77.9 59.6 83.5 87.1
Ukrainian 73.0 64.7 74.7 79.8
Vietnamese 74.3 36.9 74.0 80.6

Internal 30-Language ASR Benchmark

We additionally run an internal multilingual intelligibility benchmark with 30 languages × 500 samples. ASR transcription is evaluated via Gemini 3.1 Flash Lite API.

Internal 30-Language ASR Benchmark (click to expand)

Language Metric VoxCPM2 Fish S2-Pro
ar (Arabic) CER 1.23% 0.30%
da (Danish) WER 2.70% 3.52%
de (German) WER 0.96% 0.64%
el (Greek) WER 3.17% 4.61%
en (English) WER 0.42% 1.03%
es (Spanish) WER 1.33% 0.64%
fi (Finnish) WER 2.24% 2.80%
fr (French) WER 2.16% 2.34%
he (Hebrew) CER 2.98% 15.27%
hi (Hindi) CER 0.79% 0.91%
id (Indonesian) WER 1.36% 1.68%
it (Italian) WER 1.65% 1.08%
ja (Japanese) CER 2.40% 1.82%
km (Khmer) CER 2.05% 75.15%
ko (Korean) CER 0.95% 0.29%
lo (Lao) CER 1.90% 87.40%
ms (Malay) WER 1.75% 1.41%
my (Burmese) CER 1.42% 85.27%
nl (Dutch) WER 1.25% 1.68%
no (Norwegian) WER 2.49% 3.76%
pl (Polish) WER 1.90% 1.65%
pt (Portuguese) WER 1.48% 1.49%
ru (Russian) WER 0.90% 0.86%
sv (Swedish) WER 2.22% 2.63%
sw (Swahili) CER 1.07% 2.02%
th (Thai) CER 0.94% 1.92%
tl (Tagalog) WER 2.63% 4.00%
tr (Turkish) WER 1.65% 1.65%
vi (Vietnamese) WER 1.56% 5.56%
zh (Chinese) CER 0.92% 1.02%
Average (30 languages) 1.68% -

InstructTTSEval

Instruction-Guided Voice Design Results (click to expand)

Model InstructTTSEval-ZH InstructTTSEval-EN
APS⬆ DSD⬆ RP⬆ APS⬆ DSD⬆ RP⬆
Hume 83.0 75.3 54.3
VoxInstruct 47.5 52.3 42.6 54.9 57.0 39.3
Parler-tts-mini 63.4 48.7 28.6
Parler-tts-large 60.0 45.9 31.2
PromptTTS 64.3 47.2 31.4
PromptStyle 57.4 46.4 30.9
VoiceSculptor 75.7 64.7 61.5
Mimo-Audio-7B-Instruct 75.7 74.3 61.5 80.6 77.6 59.5
Qwen3TTS-12Hz-1.7B-VD 85.2 81.1 65.1 82.9 82.4 68.4
VoxCPM2 85.2 71.5 60.8 84.2 83.2 71.4

⚙️ Fine-tuning

VoxCPM supports both full fine-tuning (SFT) and LoRA fine-tuning. With as little as 5–10 minutes of audio, you can adapt to a specific speaker, language, or domain.

# LoRA fine-tuning (parameter-efficient, recommended)
python scripts/train_voxcpm_finetune.py \
    --config_path conf/voxcpm_v2/voxcpm_finetune_lora.yaml

# Full fine-tuning
python scripts/train_voxcpm_finetune.py \
    --config_path conf/voxcpm_v2/voxcpm_finetune_all.yaml

# WebUI for training & inference
python lora_ft_webui.py   # then open http://localhost:7860

Full guide → Fine-tuning Guide (data preparation, configuration, training, LoRA hot-swapping, FAQ)


📚 Documentation

Full documentation: voxcpm.readthedocs.io

Topic Link
Quick Start & Installation Quick Start
Usage Guide & Cookbook User Guide
VoxCPM Series Models
Fine-tuning (SFT & LoRA) Fine-tuning Guide
FAQ & Troubleshooting FAQ

🌟 Ecosystem & Community

Project Description
Nano-vLLM High-throughput and Fast GPU serving
vLLM-Omni Official vLLM omni-modal serving for VoxCPM2 — PagedAttention, OpenAI-compatible API
llama.cpp-omni Full-duplex omni inference engine — VoxCPM2 GGUF on CPU / Metal / CUDA / Vulkan
VoxCPM.cpp GGML/GGUF: CPU, CUDA, Vulkan inference
audio.cpp ggml-based unified C++ inference framework — CPU/CUDA/Vulkan/Metal, CLI & server, no Python
VoxCPM-ONNX ONNX export for CPU inference
VoxCPMANE Apple Neural Engine backend
voxcpm_rs Rust re-implementation
ComfyUI-VoxCPM ComfyUI node-based workflows
ComfyUI_RH_VoxCPM Feature-complete ComfyUI workflow for VoxCPM 2 with multi-speaker generation, LoRA, and auto-ASR
ComfyUI-VoxCPMTTS ComfyUI TTS extension
TTS WebUI Browser-based TTS extension

See the full Ecosystem in the docs. Community projects are not officially maintained by OpenBMB. Built something cool? Open an issue or PR to add it!


⚠️ Risks and Limitations

  • Potential for Misuse: VoxCPM's voice cloning can generate highly realistic synthetic speech. It is strictly forbidden to use VoxCPM for impersonation, fraud, or disinformation. We strongly recommend clearly marking any AI-generated content.
  • Controllable Generation Stability: Voice Design and Controllable Voice Cloning results can vary between runs — you may try to generate 1~3 times to obtain the desired voice or style. We are actively working on improving controllability consistency.
  • Language Coverage: VoxCPM2 officially supports 30 languages. For languages not on the list, you are welcome to test directly or try fine-tuning on your own data. We plan to expand language coverage in future releases.
  • Usage: This model is released under the Apache-2.0 license. For production deployments, we recommend conducting thorough testing and safety evaluation tailored to your use case.

📖 Citation

If you find VoxCPM helpful, please consider citing our work and starring ⭐ the repository!

@article{zhou2026voxcpm2,
  title   = {VoxCPM2 Technical Report},
  author  = {Zhou, Yixuan  and Zeng, Guoyang and Liu, Xin and Li, Xiang and Yu, Renjie and Gui, Jiancheng and Wu, Jiaheng and Wang, Ziyang and Shen, Xudong and Ye, Runchuan  and Zhang, Zhisheng and Zhou, Jiuyang and Bai, Bingsong and Sun, Weiyue and Deng, Mengyuan and Shi, Qundong and Wu, Zhiyong and Liu, Zhiyuan},
  journal = {arXiv preprint arXiv:2606.06928},
  year    = {2026},
}

@article{zhou2025voxcpm,
  title = {Voxcpm: Tokenizer-free TTS for context-aware speech generation and true-to-life voice cloning},
  author = {Zhou, Yixuan and Zeng, Guoyang and Liu, Xin and Li, Xiang and Yu, Renjie and Wang, Ziyang and Ye, Runchuan and Sun, Weiyue and Gui, Jiancheng and Li, Kehan and Wu, Zhiyong and Liu, Zhiyuan},
  journal = {arXiv preprint arXiv:2509.24650},
  year = {2025}
}

📄 License

VoxCPM model weights and code are open-sourced under the Apache-2.0 license.

🙏 Acknowledgments

  • DiTAR for the diffusion autoregressive backbone
  • MiniCPM-4 for the language model foundation
  • CosyVoice for the Flow Matching-based LocDiT implementation
  • DAC for the Audio VAE backbone
  • Our community users for trying VoxCPM, reporting issues, sharing ideas, and contributing—your support helps the project keep getting better

Institutions

ModelBest     THUHCSI

⭐ Star History

Star History Chart

View on GitHub

Recent activity

commits and pull requests

Recent open issues

view all

Releases and announcements

14 total
  1. ## VoxCPM v2.0.3 This release focuses on fine-tuning usability, runtime stability, safer LoRA loading, and faster streaming inference. ### Highlights - Added `voxcpm validate` for pre-flight JSONL training manifest validation. - Added optional `ref_audio` support in the fine-tuning data pipeline. - Improved runtime device handling with explicit `--device` support and safer MPS dtype behavior. - Improved VoxCPM2 streaming VAE decoding by avoiding redundant overlap decoding. - Hardened legacy LoRA checkpoint loading with `weights_only=True`. - Fixed LoRA rank mismatch handling in `lora_ft_webui.py`. ### New Features - Add `voxcpm validate --manifest train.jsonl` to catch training data issues before fine-tuning. - Validates JSONL format, required `text`/`audio` fields, audio existence/readability, sample rate, duration stats, text length stats, and optional `ref_audio`. - Add optional `ref_audio` support for fine-tuning manifests. - Training packing now supports `[103, ref_audio, 104, text, 101, target_audio, 102]`. - Loss is applied only to the target audio segment. - Add `--device` CLI argument for model inference commands. - Supports `auto`, `cpu`, `mps`, `cuda`, and i

  2. v2.0.2: fixed some bugs2.0.2Apr 8, 2026

    **Full Changelog**: https://github.com/OpenBMB/VoxCPM/compare/2.0.1...2.0.2

  3. **Full Changelog**: https://github.com/OpenBMB/VoxCPM/compare/2.0.0...2.0.1

  4. VoxCPM 2 Released2.0.0Apr 6, 2026

    ## What's Changed * 修复lora/ft测试代码处传参错误的内容 by @Ayin1412 in https://github.com/OpenBMB/VoxCPM/pull/98 * perf: optimize dataset length calculation via batch column access by @jayll1303 in https://github.com/OpenBMB/VoxCPM/pull/128 * Add torchcodec to dependencies by @lrjerryli in https://github.com/OpenBMB/VoxCPM/pull/139 * Print debug messages to stderr instead of stdout by @vytskalt in https://github.com/OpenBMB/VoxCPM/pull/141 * Fix README's feature checkboxes by @zanellig in https://github.com/OpenBMB/VoxCPM/pull/147 * Improve CLI argument validation and help text by @s3ldc in https://github.com/OpenBMB/VoxCPM/pull/161 * Update train_voxcpm_finetune.py by @symhsym in https://github.com/OpenBMB/VoxCPM/pull/186 * fix: use specific exceptions instead of bare except by @haosenwang1018 in https://github.com/OpenBMB/VoxCPM/pull/188 * Add VoxCPM 2. ## New Contributors * @Ayin1412 made their first contribution in https://github.com/OpenBMB/VoxCPM/pull/98 * @jayll1303 made their first contribution in https://github.com/OpenBMB/VoxCPM/pull/128 * @lrjerryli made their first contribution in https://github.com/OpenBMB/VoxCPM/pull/139 * @vytskalt made their first contribution in

  5. VoxCPM 1.5 Released1.5.0Dec 5, 2025

    **Full Changelog**: https://github.com/OpenBMB/VoxCPM/compare/1.0.5...1.5.0 What's New and What's Next? See our [Release Note](https://github.com/OpenBMB/VoxCPM/blob/main/docs/release_note.md)

Code frequency

additions and deletions
+10.4K-10.4KWeek of 2025-09-14: +3,999 linesWeek of 2025-09-14: -388 linesWeek of 2025-09-21: +2 linesWeek of 2025-09-21: -4 linesWeek of 2025-09-28: +42 linesWeek of 2025-09-28: -17 linesWeek of 2025-10-05: +0 linesWeek of 2025-10-05: -0 linesWeek of 2025-10-12: +0 linesWeek of 2025-10-12: -0 linesWeek of 2025-10-19: +0 linesWeek of 2025-10-19: -0 linesWeek of 2025-10-26: +0 linesWeek of 2025-10-26: -0 linesWeek of 2025-11-02: +0 linesWeek of 2025-11-02: -0 linesWeek of 2025-11-09: +0 linesWeek of 2025-11-09: -0 linesWeek of 2025-11-16: +0 linesWeek of 2025-11-16: -0 linesWeek of 2025-11-23: +0 linesWeek of 2025-11-23: -0 linesWeek of 2025-11-30: +6,159 linesWeek of 2025-11-30: -629 linesWeek of 2025-12-07: +1,591 linesWeek of 2025-12-07: -53 linesWeek of 2025-12-14: +40 linesWeek of 2025-12-14: -20 linesWeek of 2025-12-21: +197 linesWeek of 2025-12-21: -16 linesWeek of 2025-12-28: +1 linesWeek of 2025-12-28: -0 linesWeek of 2026-01-04: +14 linesWeek of 2026-01-04: -12 linesWeek of 2026-01-11: +107 linesWeek of 2026-01-11: -117 linesWeek of 2026-01-18: +142 linesWeek of 2026-01-18: -162 linesWeek of 2026-01-25: +0 linesWeek of 2026-01-25: -0 linesWeek of 2026-02-01: +0 linesWeek of 2026-02-01: -0 linesWeek of 2026-02-08: +26 linesWeek of 2026-02-08: -6 linesWeek of 2026-02-15: +0 linesWeek of 2026-02-15: -0 linesWeek of 2026-02-22: +2 linesWeek of 2026-02-22: -2 linesWeek of 2026-03-01: +0 linesWeek of 2026-03-01: -0 linesWeek of 2026-03-08: +42 linesWeek of 2026-03-08: -29 linesWeek of 2026-03-15: +0 linesWeek of 2026-03-15: -0 linesWeek of 2026-03-22: +0 linesWeek of 2026-03-22: -0 linesWeek of 2026-03-29: +10,445 linesWeek of 2026-03-29: -2,456 linesWeek of 2026-04-05: +2,394 linesWeek of 2026-04-05: -981 linesWeek of 2026-04-12: +872 linesWeek of 2026-04-12: -52 linesWeek of 2026-04-19: +203 linesWeek of 2026-04-19: -13 linesWeek of 2026-04-26: +31 linesWeek of 2026-04-26: -10 linesWeek of 2026-05-03: +47 linesWeek of 2026-05-03: -21 linesWeek of 2026-05-10: +0 linesWeek of 2026-05-10: -0 linesWeek of 2026-05-17: +36 linesWeek of 2026-05-17: -13 linesWeek of 2026-05-24: +0 linesWeek of 2026-05-24: -0 linesWeek of 2026-05-31: +690 linesWeek of 2026-05-31: -127 linesWeek of 2026-06-07: +287 linesWeek of 2026-06-07: -293 linesWeek of 2026-06-14: +0 linesWeek of 2026-06-14: -0 linesWeek of 2026-06-21: +306 linesWeek of 2026-06-21: -259 linesWeek of 2026-06-28: +180 linesWeek of 2026-06-28: -5 linesWeek of 2026-07-05: +2 linesWeek of 2026-07-05: -0 linesWeek of 2026-07-12: +0 linesWeek of 2026-07-12: -0 linesWeek of 2026-07-19: +0 linesWeek of 2026-07-19: -0 linesWeek of 2026-07-26: +0 linesWeek of 2026-07-26: -0 linesWeek of 2026-08-02: +0 linesWeek of 2026-08-02: -0 linesSep 14, 2025Aug 2, 2026
+27.9K lines added, -5.7K removed over the last year.

Commits per week

last 52 weeks
370Week of 2025-08-10: 0 commitsWeek of 2025-08-17: 0 commitsWeek of 2025-08-24: 0 commitsWeek of 2025-08-31: 0 commitsWeek of 2025-09-07: 0 commitsWeek of 2025-09-14: 37 commitsWeek of 2025-09-21: 1 commitsWeek of 2025-09-28: 2 commitsWeek of 2025-10-05: 0 commitsWeek of 2025-10-12: 0 commitsWeek of 2025-10-19: 0 commitsWeek of 2025-10-26: 0 commitsWeek of 2025-11-02: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 10 commitsWeek of 2025-12-07: 3 commitsWeek of 2025-12-14: 3 commitsWeek of 2025-12-21: 1 commitsWeek of 2025-12-28: 1 commitsWeek of 2026-01-04: 1 commitsWeek of 2026-01-11: 2 commitsWeek of 2026-01-18: 2 commitsWeek of 2026-01-25: 0 commitsWeek of 2026-02-01: 0 commitsWeek of 2026-02-08: 1 commitsWeek of 2026-02-15: 0 commitsWeek of 2026-02-22: 1 commitsWeek of 2026-03-01: 0 commitsWeek of 2026-03-08: 1 commitsWeek of 2026-03-15: 0 commitsWeek of 2026-03-22: 0 commitsWeek of 2026-03-29: 8 commitsWeek of 2026-04-05: 26 commitsWeek of 2026-04-12: 9 commitsWeek of 2026-04-19: 5 commitsWeek of 2026-04-26: 1 commitsWeek of 2026-05-03: 1 commitsWeek of 2026-05-10: 0 commitsWeek of 2026-05-17: 3 commitsWeek of 2026-05-24: 0 commitsWeek of 2026-05-31: 3 commitsWeek of 2026-06-07: 3 commitsWeek of 2026-06-14: 0 commitsWeek of 2026-06-21: 2 commitsWeek of 2026-06-28: 2 commitsWeek of 2026-07-05: 1 commitsWeek of 2026-07-12: 0 commitsWeek of 2026-07-19: 0 commitsWeek of 2026-07-26: 0 commitsWeek of 2026-08-02: 0 commitsAug 10, 2025Aug 2, 2026
130 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 0 commitsSun 1:00 — 1 commitsSun 2:00 — 0 commitsSun 3:00 — 0 commitsSun 4:00 — 0 commitsSun 5:00 — 0 commitsSun 6:00 — 0 commitsSun 7:00 — 0 commitsSun 8:00 — 0 commitsSun 9:00 — 0 commitsSun 10:00 — 0 commitsSun 11:00 — 0 commitsSun 12:00 — 0 commitsSun 13:00 — 0 commitsSun 14:00 — 0 commitsSun 15:00 — 0 commitsSun 16:00 — 0 commitsSun 17:00 — 0 commitsSun 18:00 — 1 commitsSun 19:00 — 1 commitsSun 20:00 — 0 commitsSun 21:00 — 1 commitsSun 22:00 — 0 commitsSun 23:00 — 0 commitsMon 0:00 — 0 commitsMon 1:00 — 0 commitsMon 2:00 — 0 commitsMon 3:00 — 1 commitsMon 4:00 — 0 commitsMon 5:00 — 0 commitsMon 6:00 — 0 commitsMon 7:00 — 0 commitsMon 8:00 — 0 commitsMon 9:00 — 0 commitsMon 10:00 — 0 commitsMon 11:00 — 2 commitsMon 12:00 — 0 commitsMon 13:00 — 0 commitsMon 14:00 — 0 commitsMon 15:00 — 4 commitsMon 16:00 — 5 commitsMon 17:00 — 3 commitsMon 18:00 — 0 commitsMon 19:00 — 1 commitsMon 20:00 — 2 commitsMon 21:00 — 1 commitsMon 22:00 — 2 commitsMon 23:00 — 1 commitsTue 0:00 — 0 commitsTue 1:00 — 0 commitsTue 2:00 — 0 commitsTue 3:00 — 0 commitsTue 4:00 — 0 commitsTue 5:00 — 0 commitsTue 6:00 — 0 commitsTue 7:00 — 1 commitsTue 8:00 — 0 commitsTue 9:00 — 0 commitsTue 10:00 — 2 commitsTue 11:00 — 2 commitsTue 12:00 — 2 commitsTue 13:00 — 3 commitsTue 14:00 — 1 commitsTue 15:00 — 1 commitsTue 16:00 — 6 commitsTue 17:00 — 2 commitsTue 18:00 — 2 commitsTue 19:00 — 4 commitsTue 20:00 — 2 commitsTue 21:00 — 2 commitsTue 22:00 — 3 commitsTue 23:00 — 0 commitsWed 0:00 — 1 commitsWed 1:00 — 0 commitsWed 2:00 — 0 commitsWed 3:00 — 0 commitsWed 4:00 — 0 commitsWed 5:00 — 1 commitsWed 6:00 — 0 commitsWed 7:00 — 0 commitsWed 8:00 — 0 commitsWed 9:00 — 1 commitsWed 10:00 — 0 commitsWed 11:00 — 2 commitsWed 12:00 — 1 commitsWed 13:00 — 0 commitsWed 14:00 — 0 commitsWed 15:00 — 2 commitsWed 16:00 — 2 commitsWed 17:00 — 2 commitsWed 18:00 — 3 commitsWed 19:00 — 3 commitsWed 20:00 — 1 commitsWed 21:00 — 1 commitsWed 22:00 — 2 commitsWed 23:00 — 1 commitsThu 0:00 — 1 commitsThu 1:00 — 1 commitsThu 2:00 — 0 commitsThu 3:00 — 0 commitsThu 4:00 — 0 commitsThu 5:00 — 0 commitsThu 6:00 — 0 commitsThu 7:00 — 0 commitsThu 8:00 — 0 commitsThu 9:00 — 0 commitsThu 10:00 — 0 commitsThu 11:00 — 1 commitsThu 12:00 — 3 commitsThu 13:00 — 1 commitsThu 14:00 — 3 commitsThu 15:00 — 0 commitsThu 16:00 — 3 commitsThu 17:00 — 0 commitsThu 18:00 — 1 commitsThu 19:00 — 1 commitsThu 20:00 — 0 commitsThu 21:00 — 2 commitsThu 22:00 — 0 commitsThu 23:00 — 0 commitsFri 0:00 — 0 commitsFri 1:00 — 0 commitsFri 2:00 — 0 commitsFri 3:00 — 0 commitsFri 4:00 — 0 commitsFri 5:00 — 0 commitsFri 6:00 — 0 commitsFri 7:00 — 0 commitsFri 8:00 — 0 commitsFri 9:00 — 0 commitsFri 10:00 — 1 commitsFri 11:00 — 1 commitsFri 12:00 — 1 commitsFri 13:00 — 1 commitsFri 14:00 — 1 commitsFri 15:00 — 1 commitsFri 16:00 — 2 commitsFri 17:00 — 1 commitsFri 18:00 — 3 commitsFri 19:00 — 0 commitsFri 20:00 — 1 commitsFri 21:00 — 3 commitsFri 22:00 — 3 commitsFri 23:00 — 3 commitsSat 0:00 — 2 commitsSat 1:00 — 1 commitsSat 2:00 — 0 commitsSat 3:00 — 0 commitsSat 4:00 — 0 commitsSat 5:00 — 1 commitsSat 6:00 — 1 commitsSat 7:00 — 0 commitsSat 8:00 — 0 commitsSat 9:00 — 0 commitsSat 10:00 — 0 commitsSat 11:00 — 2 commitsSat 12:00 — 0 commitsSat 13:00 — 0 commitsSat 14:00 — 1 commitsSat 15:00 — 0 commitsSat 16:00 — 1 commitsSat 17:00 — 0 commitsSat 18:00 — 0 commitsSat 19:00 — 0 commitsSat 20:00 — 0 commitsSat 21:00 — 0 commitsSat 22:00 — 0 commitsSat 23:00 — 0 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
DateListRankStars gained
Jun 15, 2026daily#20+19
Jun 6, 2026daily#8+76
Jun 5, 2026daily#22+20
Jun 2, 2026daily#15+29
Jun 1, 2026daily#16+40
May 31, 2026daily#18+66
May 30, 2026daily#13+82
May 29, 2026daily#3+102
May 2, 2026daily#23+116
Apr 13, 2026daily#17+140
Apr 12, 2026daily#14+380
Apr 11, 2026daily#17+281
Apr 10, 2026daily#24+208
Jan 20, 2026daily#20+172
Jan 19, 2026daily#18+208