Neywa-Labs/mlx-audioPublic

A text-to-speech (TTS), speech-to-text (STT) and speech-to-speech (STS) library built on Apple's MLX framework, providing efficient speech analysis on Apple Silicon.

AI summary: A comprehensive audio generation framework optimized natively for Apple Silicon using MLX.

Stars
8.2K
+25 today
Forks
787
Watchers
52
Open issues
67
Open PRs
26
Contributors
~156
Commits
1.5K
Branches
70

PythonMITCreated Nov 27, 2024Last push todayLatest release v0.6.4+51 stars this week+208 this month

Quick answers

What is mlx-audio?
A comprehensive audio generation framework optimized natively for Apple Silicon using MLX.
What does mlx-audio do?
MLX Audio is a machine learning library specifically engineered for processing and generating audio using Apple's MLX framework on Apple Silicon. It provides an optimized, native interface for implementing complex audio models, such as speech recognition or synthesis, directly on Mac hardware. By leveraging the unified memory architecture of Apple Silicon, MLX Audio significantly accelerates both training and inference tasks. It acts as a crucial building block for developers looking to integrate high-performance audio AI natively.
Who is mlx-audio for?
Mac developers, AI researchers, and audio engineers looking to run high-performance, open-source audio models locally on Apple Silicon hardware. Users should be familiar with Python development environments.
How do I get started with mlx-audio?
pip install mlx-audio
How popular is mlx-audio on GitHub?
Neywa-Labs/mlx-audio has 8,208 stars and 787 forks on GitHub, and gained 51 stars in the last 7 days.
What license does mlx-audio use?
Neywa-Labs/mlx-audio is released under the MIT license.

Star history

since Jul 28, 2026
02.5K5K7.5KJul 2026Aug 2026Oct 2026Nov 2026
8.2K stars as of Nov 6, 2026. Measured daily since Jul 28, 2026; GitHub no longer exposes earlier star timestamps.

Update history

3 recorded
  • Nov 6, 2026New release v0.6.4 (previously v0.6.2).
  • Oct 27, 2026New release v0.6.2 (previously v0.5.9).
  • Oct 16, 2026New release v0.5.9 (previously v0.5.7).

Contribution activity

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

Signals and awards

derived from tracked data
  • Very active

    869 commits in 52 weeks

  • Community-driven

    ~156 contributors

  • Permissive license

    MIT

  • Continuous integration

    Automated checks passing

What mlx-audio does

MLX Audio is a machine learning library specifically engineered for processing and generating audio using Apple's MLX framework on Apple Silicon. It provides an optimized, native interface for implementing complex audio models, such as speech recognition or synthesis, directly on Mac hardware. By leveraging the unified memory architecture of Apple Silicon, MLX Audio significantly accelerates both training and inference tasks. It acts as a crucial building block for developers looking to integrate high-performance audio AI natively.

Mac developers, AI researchers, and audio engineers looking to run high-performance, open-source audio models locally on Apple Silicon hardware. Users should be familiar with Python development environments.

  • Apple Silicon Native Execution: Engineered specifically on the MLX framework to fully utilize the GPU acceleration and unified memory bandwidth of modern Macs.
  • Broad Model Support: Implements inference pipelines for a wide array of SOTA audio models, including major STT and TTS architectures.
  • Advanced Quantization: Supports running massive parameter models efficiently by applying 4-bit and 8-bit quantization techniques.
  • Real-Time Voice Synthesis: Enables low-latency text-to-speech generation suitable for responsive conversational agents and local applications.
  • Multimodal Audio Processing: Consolidates both speech recognition (STT) and speech generation (TTS) into a unified, high-performance toolkit.

Where teams use it

Local Podcast Transcription

Content creators run highly quantized STT models on their MacBooks to transcribe massive audio archives quickly and securely without paying cloud API fees.

On-Device Voice Assistants

Mac developers use the framework to build responsive, privacy-preserving local voice assistants that process and generate speech entirely offline.

Voice Prototyping

Audio engineers and researchers prototype new TTS voices locally by leveraging the rapid inference speeds on Apple Silicon.

Accessibility Tools

Developers build highly responsive, offline screen readers or transcription tools for macOS that do not rely on an active internet connection.

Getting started: pip install mlx-audio

README

main branch

MLX-Audio

Every voice task, one engine. Runs locally on your Mac. Install with pip install -U mlx-audio or try it in Nativ.

Run audio models on Apple Silicon. Text-to-speech, speech-to-text, speech-to-speech, and music generation. Built on MLX.

Installation · Documentation · Releases

macOS · Apple silicon

Built by Neywa Labs, the local AI company behind Nativ.

Upload Python Package PyPI version Python 3.10+ MIT license

Blaizzy/mlx-audio | Trendshift

Table of Contents

Features

  • Fast inference optimized for Apple Silicon (M series chips)
  • Multiple model architectures for TTS, STT, STS, and music generation
  • Multilingual support across models
  • Voice customization and cloning capabilities
  • Adjustable speech speed control
  • Interactive web interface with 3D audio visualization
  • OpenAI-compatible REST API
  • Quantization support (3-bit, 4-bit, 6-bit, 8-bit, and more) for optimized performance
  • Swift package for iOS/macOS integration

Installation

Using pip

pip install -U mlx-audio

Using uv to install only the command line tools

Latest release from pypi:

uv tool install --force mlx-audio --prerelease=allow

Latest code from github:

uv tool install --force git+https://github.com/Blaizzy/mlx-audio.git --prerelease=allow

For development or web interface:

git clone https://github.com/Blaizzy/mlx-audio.git
cd mlx-audio
pip install -e ".[dev, server]"

Quick Start

Command Line

# Basic TTS generation
mlx_audio.tts.generate --model mlx-community/Qwen3-TTS-12Hz-0.6B-CustomVoice-8bit --text 'Hello, world!' --voice Vivian

# With a different voice and language hint
mlx_audio.tts.generate --model mlx-community/Qwen3-TTS-12Hz-0.6B-CustomVoice-8bit --text 'Welcome to MLX-Audio!' --voice Ryan --lang_code English

# Play audio immediately
mlx_audio.tts.generate --model mlx-community/Qwen3-TTS-12Hz-0.6B-CustomVoice-8bit --text 'Hello!' --voice Vivian --play

# Save to a specific directory
mlx_audio.tts.generate --model mlx-community/Qwen3-TTS-12Hz-0.6B-CustomVoice-8bit --text 'Hello!' --voice Vivian --output_path ./my_audio

# Stream audio during generation
mlx_audio.tts.generate --model mlx-community/Qwen3-TTS-12Hz-0.6B-CustomVoice-8bit --text 'Hello!' --voice Vivian --stream

# Stream audio during generation and save it to disk
mlx_audio.tts.generate --model mlx-community/Qwen3-TTS-12Hz-0.6B-CustomVoice-8bit --text 'Hello!' --voice Vivian --stream --save

# Join multiple generated segments into one file
mlx_audio.tts.generate --model mlx-community/Qwen3-TTS-12Hz-0.6B-CustomVoice-8bit --text $'Hello!\nHow are you?' --voice Vivian --join_audio

By default, when generation yields multiple segments, mlx-audio saves numbered files such as audio_000.wav and audio_001.wav. Use --join_audio to save one combined file instead. When using --stream, add --save to write the streamed audio to disk.

Python API

from mlx_audio.tts.utils import load_model

# Load model
model = load_model("mlx-community/Qwen3-TTS-12Hz-0.6B-CustomVoice-8bit")

# Generate speech
for result in model.generate(
    "Hello from MLX-Audio!",
    voice="Vivian",
    lang_code="English",
):
    print(f"Generated {result.audio.shape[0]} samples")
    # result.audio contains the waveform as mx.array

Supported Models

Text-to-Speech (TTS)

Model Description Languages Repo
Kokoro Fast, high-quality multilingual TTS EN, JA, ZH, FR, ES, IT, PT, HI bf16, 8bit, 6bit, 4bit
KittenTTS Compact KittenTTS 0.8 models for edge-friendly TTS EN nano, micro, mini, collection
Qwen3-TTS Alibaba's multilingual TTS with voice design ZH, EN, JA, KO, + more mlx-community/Qwen3-TTS-12Hz-1.7B-VoiceDesign-bf16
Audio8 TTS Realistic 0.6B multilingual TTS with voice cloning and 44.1 kHz output 23 languages BF16, 4-bit, 8-bit
Maya2 Native Streaming TTS with 20 voices and voice cloning 11 Indic languages + EN maya-research/maya2-native
Higgs Audio v3 4B conversational TTS with voice cloning and inline control tokens 100 languages bosonai/higgs-audio-v3-tts-4b
Fish Audio Drama 3 35B MoE multi-speaker TTS with voice cloning, inline cues and streaming (convert) 83 languages mlx-community/fish-audio-drama-3-4bit
OmniVoice Zero-shot multilingual TTS with voice cloning, batch generation, and nonverbal tags 646+ languages mlx-community/OmniVoice-bf16
CSM / MisoTTS Sesame-style conversational speech models with voice cloning EN mlx-community/csm-1b, MisoTTS bf16, MisoTTS 8bit
Dia Dialogue-focused TTS EN mlx-community/Dia-1.6B-fp16
OuteTTS Efficient TTS model EN mlx-community/OuteTTS-1.0-0.6B-fp16
Spark SparkTTS model EN, ZH mlx-community/Spark-TTS-0.5B-bf16
Chatterbox Expressive multilingual TTS (v2/v3) 23 languages v3, v2
Soprano High-quality TTS EN mlx-community/Soprano-1.1-80M-bf16
Phonon Gradium 24 kHz TTS with streaming generation EN 31M, 40M
Ming Omni TTS (BailingMM) Multimodal generation with voice cloning, style control, and speech/music/event generation EN, ZH mlx-community/Ming-omni-tts-16.8B-A3B-bf16
Ming-3.0 TTS Tiny MoE speech synthesis with cloning, built-in voices and style control (README) ZH, EN, DE, ES, FR, KO, JA BF16, 8-bit, 4-bit
Ming-3.0 TTS (Dense) 0.5B multilingual TTS with voice cloning, built-in voices, freeform/emotion/dialect control and paralinguistic tags (README) ZH, EN, DE, ES, FR, KO, JA mlx-community/Ming-3.0-tts-0.5B-bf16
Ming Omni TTS (Dense) Lightweight dense Ming Omni variant for voice cloning and style control EN, ZH mlx-community/Ming-omni-tts-0.5B-bf16
KugelAudio SOTA 7B AR+Diffusion TTS for European languages EN, DE, FR, ES, IT, PT, NL, PL, RU, UK, + 14 more kugelaudio/kugelaudio-0-open
Voxtral TTS Mistral's 4B multilingual TTS (20 voices, 9 languages) EN, FR, ES, DE, IT, PT, NL, AR, HI mlx-community/Voxtral-4B-TTS-2603-mlx-bf16
rumik-oss 1 3B expressive multilingual Indic TTS with 22-language support, description-conditioned delivery and inline vocalizations 22 Indic languages + EN rumik-ai/rumik-oss-1, 8bit, 4bit
VoxCPM2 2B tokenizer-free TTS with 48kHz output, voice design, voice cloning, and continuation 30 languages bf16, 8bit, 4bit
LongCat-AudioDiT SOTA diffusion TTS in waveform latent space with voice cloning ZH, EN mlx-community/LongCat-AudioDiT-1B-bf16
MeloTTS Lightweight VITS2-based TTS with streaming EN (more coming) mlx-community/MeloTTS-English-MLX
MOSS-TTS 8B delay-pattern and local-transformer multilingual TTS with voice cloning 31 languages OpenMOSS-Team/MOSS-TTS-v1.5, OpenMOSS-Team/MOSS-TTS, OpenMOSS-Team/MOSS-TTS-Local-Transformer-v1.5, OpenMOSS-Team/MOSS-TTS-Local-Transformer
MOSS-TTS-Nano Tiny multilingual voice-cloning TTS 20 languages mlx-community/MOSS-TTS-Nano-100M
Higgs Audio v2 3B Llama-backed TTS with real-time voice cloning EN, ZH, KO, DE, ES bf16 (upstream), q8, q6

Speech-to-Text (STT)

Model Description Languages Repo
Whisper OpenAI's robust STT model 99+ languages mlx-community/whisper-large-v3-turbo-asr-fp16
Distil-Whisper Distilled fast Whisper variants EN distil-whisper/distil-large-v3
Qwen3-ASR Alibaba's multilingual ASR ZH, EN, JA, KO, + more mlx-community/Qwen3-ASR-1.7B-8bit
Ming-3.0 ASR Tiny Hybrid MoE speech recognition with language hints and hotwords (README) EN, ZH BF16, 8-bit, 4-bit
MiMo-V2.5-ASR Xiaomi's speech recognition model ZH, EN MiMo-V2.5-ASR
Mega-ASR Routed Qwen3-ASR with automatic clean/base vs degraded/LoRA switching EN (fixtures), multilingual Qwen3-ASR backbone README
Qwen3-ForcedAligner Word-level audio alignment ZH, EN, JA, KO, + more mlx-community/Qwen3-ForcedAligner-0.6B-8bit
MOSS-Transcribe-Diarize Timestamped transcription with speaker labels Multiple major languages https://huggingface.co/OpenMOSS-Team/MOSS-Transcribe-Diarize
Parakeet NVIDIA's accurate STT EN (v2), 25 EU languages (v3) mlx-community/parakeet-tdt-0.6b-v3
Phonon-2 / 2.5 Five-value Parakeet TDT EN / 25 European languages 2.5 · 2.5 English · 2 · README
Nemotron 3.5 Transcribe Hybrid speech language model with word timestamps, MTP speculative decoding, translation, speaker attribution, and audio prompts Multilingual NVIDIA checkpoints · MLX checkpoints · Support and usage
Nemotron 3.5 ASR (streaming) NVIDIA's cache-aware streaming FastConformer-RNNT with language-ID prompting 40 language-locales mlx-community/nemotron-3.5-asr-streaming-0.6b · README
Nemotron Unified ASR NVIDIA's FastConformer-RNNT for offline and buffered streaming in one checkpoint, 160 ms-2.08 s latency 25 European languages 8-bit · README
Nemotron Speech Streaming 0.6B NVIDIA's English FastConformer-RNNT with 80/160/560/1120 ms streaming modes EN nvidia/nemotron-speech-streaming-en-0.6b · README
Voxtral Mistral's speech model Multiple mlx-community/Voxtral-Mini-3B-2507-bf16
Voxtral Realtime Mistral's 4B streaming STT Multiple 4bit, fp16
VibeVoice-ASR Microsoft's 3B/9B ASR with diarization, timestamps, hotwords, and native chunk streaming 10 streaming / 50+ long-form Streaming 1.5B · Streaming 7B · Long-form · README
Canary NVIDIA's multilingual ASR with translation 25 EU + RU, UK README
Moonshine Useful Sensors' lightweight ASR EN README
MMS Meta's massively multilingual ASR with adapters 1000+ README
Granite Speech IBM's ASR + speech translation; 5.0 adds language hints, punctuation & keyword biasing; plus adds speaker attribution & word timestamps EN, FR, DE, ES, PT, JA README · 5.0 2B · plus
Granite Speech 5.0 TurboCTC IBM's fast encoder-only CTC ASR EN README
Qwen2-Audio Alibaba's multimodal audio understanding (ASR, captioning, emotion, translation) Multiple mlx-community/Qwen2-Audio-7B-Instruct-4bit
MOSS-Music OpenMOSS music understanding and lyrics ASR EN, ZH README

Voice Activity Detection / Speaker Diarization (VAD)

Model Description Languages Repo
Silero VAD Lightweight speech/non-speech detection with streaming state Language-agnostic mlx-community/silero-vad
Sortformer v1 NVIDIA's end-to-end speaker diarization (up to 4 speakers) Language-agnostic mlx-community/diar_sortformer_4spk-v1-fp32
Sortformer v2.1 NVIDIA's streaming speaker diarization with AOSC compression Language-agnostic mlx-community/diar_streaming_sortformer_4spk-v2.1-fp32
Nemotron 3 Diarization NVIDIA's streaming diarization for up to 8 speakers at 10 ms resolution Language-agnostic mlx-community/Nemotron-3-Diarization

See the model READMEs for API details, streaming examples, and conversion steps.

Speech-to-Speech (STS)

Model Description Use Case Repo
SAM-Audio Text-guided source separation Extract specific sounds mlx-community/sam-audio-large
DialogueSidon Two-speaker separation and restoration Separate dialogue into speaker tracks mlx-community/DialogueSidon (FP32), mlx-community/DialogueSidon-bf16 (BF16)
Liquid2.5-Audio* Speech-to-Speech, Text-to-Speech and Speech-to-Text Speech interactions mlx-community/LFM2.5-Audio-1.5B-8bit
LFM3-Audio Speech-to-Speech, Text-to-Speech and Speech-to-Text Multilingual speech and audio questions LiquidAI/LFM3-Audio-2B-MLX-8bit
Ming-3.0 Audio Tiny Audio understanding, transcription, reasoning and spoken dialogue English/Chinese audio and text conversations BF16, 8-bit, 4-bit, guide
MiMo-Audio English/Chinese TTS, ASR, audio understanding and dialogue; Base few-shot speech tasks Speech interactions and audio completion Instruct, Base, audio tokenizer, guide
MossFormer2 SE Speech enhancement Noise removal starkdmi/MossFormer2_SE_48K_MLX
DeepFilterNet (1/2/3) Speech enhancement Noise suppression mlx-community/DeepFilterNet-mlx
NemotronLabs RE-USE Speech enhancement Restoration and bandwidth extension, 8–48 kHz nvidia/NVIDIA-NemotronLabs-RE-USE
NemotronLabs VoiceChat Full-duplex speech-to-speech with streaming transcription and function calling Real-time voice conversation mlx-community/NemotronLabs-VoiceChat-11B-4bit

Music Generation

Model Description Languages Repo
MiniMax Music 3 Hierarchical AR + flow-matching song generation with lyrics and 44.1 kHz stereo output Multilingual lyrics BF16, 8-bit, 6-bit, 4-bit, MXFP8, MXFP4, NVFP4, guide

Model Examples

Qwen3-TTS

Alibaba's state-of-the-art multilingual TTS with voice cloning, emotion control, and voice design capabilities.

from mlx_audio.tts.utils import load_model

model = load_model("mlx-community/Qwen3-TTS-12Hz-0.6B-CustomVoice-bf16")
results = list(model.generate_custom_voice(
    text="Hello, welcome to MLX-Audio!",
    speaker="Vivian",
    language="English",
))

audio = results[0].audio  # mx.array

See the Qwen3-TTS README for voice cloning, CustomVoice, VoiceDesign, and all available models.

OmniVoice

OmniVoice is a zero-shot multilingual TTS model for 646+ languages with voice cloning, batch generation, pronunciation controls, and nonverbal tags such as [laughter] and [sigh]. It uses a bidirectional Qwen3 backbone with iterative masked generation and a HiggsAudioV2 acoustic tokenizer.

from mlx_audio.tts.utils import load_model

model = load_model("mlx-community/OmniVoice-bf16")

# Basic multilingual TTS
for result in model.generate(
    text="Hello from OmniVoice running on Apple Silicon.",
    language="english",
    duration_s=5.0,
    num_steps=32,
):
    audio = result.audio

# Zero-shot voice cloning
for result in model.generate(
    text="This sentence uses the reference speaker.",
    language="english",
    ref_audio="reference.wav",
    ref_text="Transcript of the reference audio.",
    duration_s=5.0,
):
    audio = result.audio

For stable voice cloning, provide ref_text that matches the reference clip. OmniVoice also supports generate_batch() for batched TTS and inline pronunciation controls.

Ming Omni TTS (BailingMM)

mlx_audio.tts.generate \
    --model mlx-community/Ming-omni-tts-16.8B-A3B-bf16 \
    --prompt "Please generate speech based on the following description.\n" \
    --text "This is a quick Ming Omni test." \
    --lang_code en \
    --output_path audio_io \
    --file_prefix ming_basic \
    --verbose

See the Ming Omni TTS README for CLI and Python cookbook examples, and the Ming Dense README for Ming-3.0-tts-0.5B and Ming-omni-tts-0.5B.

Kokoro TTS

Kokoro is a fast, multilingual TTS model with 54 voice presets.

from mlx_audio.tts.utils import load_model

model = load_model("mlx-community/Kokoro-82M-bf16")
# Or use a quantized variant for lower memory usage:
# model = load_model("mlx-community/Kokoro-82M-8bit")
# model = load_model("mlx-community/Kokoro-82M-4bit")

# Generate with different voices
for result in model.generate(
    text="Welcome to MLX-Audio!",
    voice="af_heart",  # American female
    speed=1.0,
    lang_code="a"  # American English
):
    audio = result.audio

Available Voices:

  • American English: af_heart, af_bella, af_nova, af_sky, am_adam, am_echo, etc.
  • British English: bf_alice, bf_emma, bm_daniel, bm_george, etc.
  • Japanese: jf_alpha, jm_kumo, etc.
  • Chinese: zf_xiaobei, zm_yunxi, etc.

Kokoro requires pip install misaki for text processing. Japanese and Mandarin may additionally require pip install misaki[ja] or pip install misaki[zh].

Language Codes:

Code Language Note
a American English Default; requires pip install misaki
b British English Requires pip install misaki
j Japanese Requires pip install misaki[ja]
z Mandarin Chinese Requires pip install misaki[zh]
e Spanish Requires pip install misaki
f French Requires pip install misaki

CSM (Voice Cloning)

Clone any voice using a reference audio sample:

mlx_audio.tts.generate \
    --model mlx-community/csm-1b \
    --text "Hello from Sesame." \
    --ref_audio ./reference_voice.wav \
    --play

Whisper STT

from mlx_audio.stt.generate import generate_transcription

result = generate_transcription(
    model="mlx-community/whisper-large-v3-turbo-asr-fp16",
    audio="audio.wav",
)
print(result.text)

Qwen3-ASR & ForcedAligner

Alibaba's multilingual speech models for transcription and word-level alignment.

from mlx_audio.stt import load

# Speech recognition
model = load("mlx-community/Qwen3-ASR-0.6B-8bit")
result = model.generate("audio.wav", language="English")
print(result.text)

# Word-level forced alignment
aligner = load("mlx-community/Qwen3-ForcedAligner-0.6B-8bit")
result = aligner.generate("audio.wav", text="I have a dream", language="English")
for item in result:
    print(f"[{item.start_time:.2f}s - {item.end_time:.2f}s] {item.text}")

See the Qwen3-ASR README for CLI usage, all models, and more examples.

MiMo-V2.5-ASR

from mlx_audio.stt import load

model = load("mlx-community/MiMo-V2.5-ASR-MLX")
result = model.generate("audio.wav", language="en")
print(result.text)

See the MiMo-V2.5-ASR README for local-path loading.

Phonon-1

Fermion Research's compact English Qwen3-ASR derivatives load directly from their public transport repositories:

from mlx_audio.stt import load

model = load("FermionResearch/Phonon-1")
result = model.generate("audio.wav", language="English")
print(result.text)

Available builds are Phonon-1-Micro (285 MB), Phonon-1 (415 MB), and Phonon-1-Big (581 MB). See the Phonon-1 README.

VibeVoice-ASR

Microsoft's 9B parameter speech-to-text model with speaker diarization and timestamps. Supports long-form audio (up to 60 minutes) and outputs structured JSON.

from mlx_audio.stt.utils import load

model = load("mlx-community/VibeVoice-ASR-bf16")

# Basic transcription
result = model.generate(audio="meeting.wav", max_tokens=8192, temperature=0.0)
print(result.text)
# [{"Start":0,"End":5.2,"Speaker":0,"Content":"Hello everyone, let's begin."},
#  {"Start":5.5,"End":9.8,"Speaker":1,"Content":"Thanks for joining today."}]

# Access parsed segments
for seg in result.segments:
    print(f"[{seg['start_time']:.1f}-{seg['end_time']:.1f}] Speaker {seg['speaker_id']}: {seg['text']}")

Streaming transcription:

# Stream tokens as they are generated
for text in model.stream_transcribe(audio="speech.wav", max_tokens=4096):
    print(text, end="", flush=True)

With context (hotwords/metadata):

result = model.generate(
    audio="technical_talk.wav",
    context="MLX, Apple Silicon, PyTorch, Transformer",
    max_tokens=8192,
    temperature=0.0,
)

CLI usage:

# Basic transcription
python -m mlx_audio.stt.generate \
    --model mlx-community/VibeVoice-ASR-bf16 \
    --audio meeting.wav \
    --output-path output \
    --format json \
    --max-tokens 8192 \
    --verbose

# With context/hotwords
python -m mlx_audio.stt.generate \
    --model mlx-community/VibeVoice-ASR-bf16 \
    --audio technical_talk.wav \
    --output-path output \
    --format json \
    --max-tokens 8192 \
    --context "MLX, Apple Silicon, PyTorch, Transformer" \
    --verbose

Phonon-2 and Phonon-2.5

Speech recognition with Fermion Research's five-value Parakeet TDT models. Phonon-2.5 supports 25 European languages; Phonon-2.5 English and Phonon-2 support English. Load the published checkpoints directly; no Fermion runtime is needed.

from mlx_audio.stt import load

model = load("FermionResearch/Phonon-2.5")
result = model.generate("audio.wav", chunk_duration=30, overlap_duration=2)
print(result.text)

Use FermionResearch/Phonon-2.5-English for English-only recognition. See the Phonon README for all model IDs, timestamps, and chunk streaming.

Parakeet (Multilingual STT)

NVIDIA's high-accuracy speech-to-text model. Parakeet v3 supports 25 European languages.

from mlx_audio.stt.utils import load

# Load the multilingual v3 model
model = load("mlx-community/parakeet-tdt-0.6b-v3")

# Transcribe audio
result = model.generate("audio.wav")
print(f"Text: {result.text}")

# Access word-level timestamps
for sentence in result.sentences:
    print(f"[{sentence.start:.2f}s - {sentence.end:.2f}s] {sentence.text}")

Streaming transcription:

for chunk in model.generate("long_audio.wav", stream=True):
    print(chunk.text, end="", flush=True)

Supported languages (v3): Bulgarian, Croatian, Czech, Danish, Dutch, English, Estonian, Finnish, French, German, Greek, Hungarian, Italian, Latvian, Lithuanian, Maltese, Polish, Portuguese, Romanian, Slovak, Slovenian, Spanish, Swedish, Russian, Ukrainian

CLI usage:

python -m mlx_audio.stt.generate \
    --model mlx-community/parakeet-tdt-0.6b-v3 \
    --audio speech.wav \
    --output-path output \
    --format json \
    --verbose

KugelAudio

SOTA open-source 7B TTS model for 24 European languages, based on Microsoft VibeVoice. Uses a hybrid AR + Diffusion architecture (Qwen2.5 LM + SDE-DPM-Solver++ diffusion head + VAE decoder).

from mlx_audio.tts.utils import load_model

model = load_model("kugelaudio/kugelaudio-0-open")

for result in model.generate(
    text="Hello, welcome to MLX-Audio!",
    cfg_scale=3.0,       # Classifier-free guidance (1.0=fast, 3.0=quality)
    ddpm_steps=10,       # Diffusion steps (5=fast, 10=balanced, 20=max quality)
):
    audio = result.audio  # mx.array, 24kHz

The model loads directly from HuggingFace (weights are remapped automatically via sanitize()). To quantize or save in a pre-converted format:

python -m mlx_audio.convert \
    --hf-path kugelaudio/kugelaudio-0-open \
    --mlx-path ./kugelaudio-0-open-bf16 \
    --dtype bfloat16

Supported languages (24): English, German, French, Spanish, Italian, Portuguese, Dutch, Polish, Russian, Ukrainian, Czech, Romanian, Hungarian, Swedish, Danish, Finnish, Norwegian, Greek, Bulgarian, Slovak, Croatian, Serbian, Turkish

Note: Requires ~17GB memory (7B params in bfloat16). Pre-encoded voice presets (voice cloning) are not yet available in the upstream model — the model generates speech with a default voice.

LongCat-AudioDiT

SOTA diffusion-based TTS operating in the waveform latent space. Uses Conditional Flow Matching with a DiT backbone and WAV-VAE codec at 24kHz. Supports zero-shot voice cloning.

from mlx_audio.tts.utils import load

model = load("mlx-community/LongCat-AudioDiT-1B-bf16")

# Zero-shot TTS
result = next(model.generate("Hello, this is a test of AudioDiT."))
audio = result.audio  # mx.array, 24kHz

# Voice cloning (use "apg" guidance for best similarity)
result = next(model.generate(
    text="Today is warm turning to rain.",
    ref_audio="reference.wav",
    ref_text="Transcript of the reference audio.",
    guidance_method="apg",
    cfg_strength=4.0,
    steps=16,
))

See the LongCat-AudioDiT README for all parameters and CLI usage.

Voxtral TTS

Mistral's 4B multilingual text-to-speech with 20 voice presets across 9 languages.

from mlx_audio.tts.utils import load

model = load("mlx-community/Voxtral-4B-TTS-2603-mlx-bf16")

for result in model.generate(text="Hello, how are you today?", voice="casual_male"):
    print(result.audio_duration)

Voices: casual_male, casual_female, cheerful_female, neutral_male, neutral_female, fr_male, fr_female, es_male, es_female, de_male, de_female, it_male, it_female, pt_male, pt_female, nl_male, nl_female, ar_male, hi_male, hi_female

Voxtral Realtime

Mistral's 4B parameter streaming speech-to-text model, optimized for low-latency transcription.

Available variants: 4bit (smaller/faster) | fp16 (full precision)

from mlx_audio.stt.utils import load

# Use 4bit for faster inference, fp16 for full precision
model = load("mlx-community/Voxtral-Mini-4B-Realtime-2602-4bit")

# Transcribe audio
result = model.generate("audio.wav")
print(result.text)

# Streaming transcription
for chunk in model.generate("audio.wav", stream=True):
    print(chunk, end="", flush=True)

# Adjust transcription delay (lower = faster but less accurate)
result = model.generate("audio.wav", transcription_delay_ms=240)

MedASR (Medical Transcription)

Specialized model for medical terms and dictation.

from mlx_audio.stt.utils import load, transcribe

model = load("mlx-community/medasr")
result = transcribe("medical_dictation.wav", model=model)
print(result["text"])

Live Transcription Example:

# Continuous live transcription with VAD
python examples/medasr_live.py

SAM-Audio (Source Separation)

Separate specific sounds from audio using text prompts:

from mlx_audio.sts import SAMAudio, SAMAudioProcessor, save_audio

model = SAMAudio.from_pretrained("mlx-community/sam-audio-large")
processor = SAMAudioProcessor.from_pretrained("mlx-community/sam-audio-large")

batch = processor(
    descriptions=["A person speaking"],
    audios=["mixed_audio.wav"],
)

result = model.separate_long(
    batch.audios,
    descriptions=batch.descriptions,
    anchors=batch.anchor_ids,
    chunk_seconds=10.0,
    overlap_seconds=3.0,
    ode_opt={"method": "midpoint", "step_size": 2/32},
)

save_audio(result.target[0], "voice.wav")
save_audio(result.residual[0], "background.wav")

MossFormer2 (Speech Enhancement)

Remove noise from speech recordings:

from mlx_audio.sts import MossFormer2SEModel, save_audio

model = MossFormer2SEModel.from_pretrained("starkdmi/MossFormer2_SE_48K_MLX")
enhanced = model.enhance("noisy_speech.wav")
save_audio(enhanced, "clean.wav", 48000)

Web Interface & API Server

MLX-Audio includes a modern web interface and OpenAI-compatible API.

Starting the Server

# Start API server
mlx_audio.server --host 0.0.0.0 --port 8000

# Start web UI (in another terminal)
cd mlx_audio/ui
npm install && npm run dev

API Endpoints

Text-to-Speech (OpenAI-compatible):

curl -X POST http://localhost:8000/v1/audio/speech \
  -H "Content-Type: application/json" \
  -d '{"model": "mlx-community/Kokoro-82M-bf16", "input": "Hello!", "voice": "af_heart"}' \
  --output speech.wav

Speech-to-Text:

curl -X POST http://localhost:8000/v1/audio/transcriptions \
  -F "[email protected]" \
  -F "model=mlx-community/whisper-large-v3-turbo-asr-fp16"

Quantization

Reduce model size and improve performance with quantization using the convert script:

View on GitHub

Recent activity

commits and pull requests

Releases and announcements

43 total
  1. v0.6.4v0.6.4Nov 2, 2026

    ## What's Changed * Fix/dramabox fp32 positions by @jaddai0 in https://github.com/Blaizzy/mlx-audio/pull/1066 * fix(indextts): default the tokenizer to the loaded model directory by @ahuzmeza in https://github.com/Blaizzy/mlx-audio/pull/1078 * fix(indextts): give the mel sequence the reference's positions by @ahuzmeza in https://github.com/Blaizzy/mlx-audio/pull/1079 * perf(higgs_audio_v3): prefill a shared reference once per batch by @ahuzmeza in https://github.com/Blaizzy/mlx-audio/pull/1091 * Nemotron 3.5 Transcribe improvements by @lucasnewman in https://github.com/Blaizzy/mlx-audio/pull/1092 * Add Audio8-TTS-Realistic 0.6B model by @lucasnewman in https://github.com/Blaizzy/mlx-audio/pull/1093 * Update macOS runner to use macos-latest by @lucasnewman in https://github.com/Blaizzy/mlx-audio/pull/1097 * fix(whisper): hold a character split across tokens in streaming by @ahuzmeza in https://github.com/Blaizzy/mlx-audio/pull/1094 * fix(soprano): read ordinals as ordinals by @ahuzmeza in https://github.com/Blaizzy/mlx-audio/pull/1095 * Use singular currency unit for one-unit decimal amounts in expand_currency by @selimfedakar in https://github.com/Blaizzy/mlx-audio/pull/1

  2. v0.6.3v0.6.3Oct 28, 2026

    ## What's Changed * perf(audio_io): bulk PCM conversion -- 28% less round-trip time by @dexhunter in https://github.com/Blaizzy/mlx-audio/pull/1083 * Add Maya-2 Native TTS model by @lucasnewman in https://github.com/Blaizzy/mlx-audio/pull/1086 * Add Nemotron 3.5 Transcribe support and Phonon examples by @Blaizzy in https://github.com/Blaizzy/mlx-audio/pull/1087 * Bump version to 0.6.3 by @lucasnewman in https://github.com/Blaizzy/mlx-audio/pull/1088 ## New Contributors * @dexhunter made their first contribution in https://github.com/Blaizzy/mlx-audio/pull/1083 **Full Changelog**: https://github.com/Blaizzy/mlx-audio/compare/v0.6.2...v0.6.3

  3. v0.6.2v0.6.2Oct 26, 2026

    ## What's Changed * Add Ming 3.0 TTS/ASR/Audio Tiny models by @lucasnewman in https://github.com/Blaizzy/mlx-audio/pull/1048 * fix(fish-drama3): drop the <|semantic:0|> frame right before EOS by @ItsOdeLeo in https://github.com/Blaizzy/mlx-audio/pull/1052 * Flatten line breaks for Fish Audio Drama 3 to avoid early turn ends. by @lucasnewman in https://github.com/Blaizzy/mlx-audio/pull/1055 * fix(tts/ming): honour stream=True in Ming-3.0 generate by yielding one result per text fragment by @tlq5l in https://github.com/Blaizzy/mlx-audio/pull/1054 * Add Granite-Speech-5.0-2B ASR/AST model by @lucasnewman in https://github.com/Blaizzy/mlx-audio/pull/1056 * fix(fish-drama3): bound memory across calls and for long chunks by @stickerdaniel in https://github.com/Blaizzy/mlx-audio/pull/1057 * fix(tts): set the streaming chunk flags in five models by @stickerdaniel in https://github.com/Blaizzy/mlx-audio/pull/1058 * fix(granite_speech): load the October 2026 granite-speech-4.1-2b-plus checkpoint by @pszemraj in https://github.com/Blaizzy/mlx-audio/pull/1061 * Fix Gradium Phonon TTS loading and threaded generation by @Blaizzy in https://github.com/Blaizzy/mlx-audio/pull/1063 * Gener

  4. v0.6.1v0.6.1Oct 20, 2026

    ## What's Changed * Ming dense: fix the prompt contract and support Ming-3.0-tts-0.5B by @cguldogan in https://github.com/Blaizzy/mlx-audio/pull/1047 * fix(server): use a writable temp file for STT uploads by @regcs in https://github.com/Blaizzy/mlx-audio/pull/1042 * fix(irodori-tts): speaker_kv_scale rollback crashes with independent CFG and dual conditioning by @matzkoh in https://github.com/Blaizzy/mlx-audio/pull/1044 * Add Gradium Phonon TTS model by @lucasnewman in https://github.com/Blaizzy/mlx-audio/pull/1049 * Bump version to 0.6.1 by @lucasnewman in https://github.com/Blaizzy/mlx-audio/pull/1050 ## New Contributors * @matzkoh made their first contribution in https://github.com/Blaizzy/mlx-audio/pull/1044 **Full Changelog**: https://github.com/Blaizzy/mlx-audio/compare/v0.6.0...v0.6.1

  5. v0.6.0v0.6.0Oct 19, 2026

    ## What's Changed * Fix upsampling to use the existing FIR resampler by @widechaos in https://github.com/Blaizzy/mlx-audio/pull/1021 * Fold Fish S1 DAC weight norm at load by @stickerdaniel in https://github.com/Blaizzy/mlx-audio/pull/1017 * Add Fish Audio Drama 3 by @stickerdaniel in https://github.com/Blaizzy/mlx-audio/pull/1018 * Optimize Breeze-TTS generation by @lucasnewman in https://github.com/Blaizzy/mlx-audio/pull/1010 * Fix the docs build by @lucasnewman in https://github.com/Blaizzy/mlx-audio/pull/1022 * fix(stt): tokenizer-safe streaming detokenization by @pszemraj in https://github.com/Blaizzy/mlx-audio/pull/983 * Fix Nemotron ASR CI after mlx core changes by @lucasnewman in https://github.com/Blaizzy/mlx-audio/pull/1032 * Fix CI for docs pages by @lucasnewman in https://github.com/Blaizzy/mlx-audio/pull/1033 * fish_drama3 convert: --head-bits, --expert-group-size, --expert-bits-map by @fcmeyer in https://github.com/Blaizzy/mlx-audio/pull/1028 * fix(server): use Qwen3-TTS generation config for omitted sampling params by @chnln in https://github.com/Blaizzy/mlx-audio/pull/995 * encodec, phonon: fall back to plain MLX when Metal is unavailable by @Cassian433 i

Code frequency

additions and deletions
+2.2M-2.2MWeek of 2025-11-09: +724 linesWeek of 2025-11-09: -7,511 linesWeek of 2025-11-16: +0 linesWeek of 2025-11-16: -0 linesWeek of 2025-11-23: +8,296 linesWeek of 2025-11-23: -4 linesWeek of 2025-11-30: +286 linesWeek of 2025-11-30: -108 linesWeek of 2025-12-07: +2,745 linesWeek of 2025-12-07: -83 linesWeek of 2025-12-14: +14,891 linesWeek of 2025-12-14: -2,216 linesWeek of 2025-12-21: +231 linesWeek of 2025-12-21: -333 linesWeek of 2025-12-28: +9,863 linesWeek of 2025-12-28: -1,302 linesWeek of 2026-01-04: +12,122 linesWeek of 2026-01-04: -926 linesWeek of 2026-01-11: +5,892 linesWeek of 2026-01-11: -3,443 linesWeek of 2026-01-18: +11,063 linesWeek of 2026-01-18: -2,169,166 linesWeek of 2026-01-25: +9,129 linesWeek of 2026-01-25: -103,725 linesWeek of 2026-02-01: +2,696 linesWeek of 2026-02-01: -278 linesWeek of 2026-02-08: +5,367 linesWeek of 2026-02-08: -153 linesWeek of 2026-02-15: +759 linesWeek of 2026-02-15: -97 linesWeek of 2026-02-22: +3,819 linesWeek of 2026-02-22: -28 linesWeek of 2026-03-01: +18,157 linesWeek of 2026-03-01: -3,030 linesWeek of 2026-03-08: +19,525 linesWeek of 2026-03-08: -12,044 linesWeek of 2026-03-15: +5,192 linesWeek of 2026-03-15: -3,322 linesWeek of 2026-03-22: +8,439 linesWeek of 2026-03-22: -1,304 linesWeek of 2026-03-29: +4,556 linesWeek of 2026-03-29: -304 linesWeek of 2026-04-05: +4,703 linesWeek of 2026-04-05: -104 linesWeek of 2026-04-12: +12,178 linesWeek of 2026-04-12: -696 linesWeek of 2026-04-19: +7,518 linesWeek of 2026-04-19: -4,107 linesWeek of 2026-04-26: +13,628 linesWeek of 2026-04-26: -1,667 linesWeek of 2026-05-03: +3,381 linesWeek of 2026-05-03: -490 linesWeek of 2026-05-10: +145 linesWeek of 2026-05-10: -11 linesWeek of 2026-05-17: +13,865 linesWeek of 2026-05-17: -1,277 linesWeek of 2026-05-24: +4,223 linesWeek of 2026-05-24: -3,002 linesWeek of 2026-05-31: +8,963 linesWeek of 2026-05-31: -569 linesWeek of 2026-06-07: +3,586 linesWeek of 2026-06-07: -26 linesWeek of 2026-06-14: +4,738 linesWeek of 2026-06-14: -354 linesWeek of 2026-06-21: +1,053 linesWeek of 2026-06-21: -91 linesWeek of 2026-06-28: +2,376 linesWeek of 2026-06-28: -314 linesWeek of 2026-07-05: +2,157 linesWeek of 2026-07-05: -58 linesWeek of 2026-07-12: +370 linesWeek of 2026-07-12: -149 linesWeek of 2026-07-19: +485 linesWeek of 2026-07-19: -114 linesWeek of 2026-07-26: +2,526 linesWeek of 2026-07-26: -205 linesWeek of 2026-08-02: +2,463 linesWeek of 2026-08-02: -357 linesWeek of 2026-08-09: +13,585 linesWeek of 2026-08-09: -833 linesWeek of 2026-08-16: +2,745 linesWeek of 2026-08-16: -2,903 linesWeek of 2026-08-23: +5,732 linesWeek of 2026-08-23: -292 linesWeek of 2026-08-30: +7,478 linesWeek of 2026-08-30: -1,024 linesWeek of 2026-09-06: +2,947 linesWeek of 2026-09-06: -76 linesWeek of 2026-09-13: +1,315 linesWeek of 2026-09-13: -311 linesWeek of 2026-09-20: +6,303 linesWeek of 2026-09-20: -322 linesWeek of 2026-09-27: +2,080 linesWeek of 2026-09-27: -258 linesWeek of 2026-10-04: +1,488 linesWeek of 2026-10-04: -259 linesWeek of 2026-10-11: +10,316 linesWeek of 2026-10-11: -3,358 linesWeek of 2026-10-18: +11,216 linesWeek of 2026-10-18: -1,152 linesWeek of 2026-10-25: +12,341 linesWeek of 2026-10-25: -390 linesWeek of 2026-11-01: +3,460 linesWeek of 2026-11-01: -426 linesNov 9, 2025Nov 1, 2026
+313.1K lines added, -2.3M removed over the last year.

Commits per week

last 52 weeks
570Week of 2025-11-09: 6 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 1 commitsWeek of 2025-11-30: 1 commitsWeek of 2025-12-07: 4 commitsWeek of 2025-12-14: 30 commitsWeek of 2025-12-21: 3 commitsWeek of 2025-12-28: 9 commitsWeek of 2026-01-04: 8 commitsWeek of 2026-01-11: 5 commitsWeek of 2026-01-18: 17 commitsWeek of 2026-01-25: 26 commitsWeek of 2026-02-01: 13 commitsWeek of 2026-02-08: 7 commitsWeek of 2026-02-15: 4 commitsWeek of 2026-02-22: 10 commitsWeek of 2026-03-01: 30 commitsWeek of 2026-03-08: 55 commitsWeek of 2026-03-15: 21 commitsWeek of 2026-03-22: 30 commitsWeek of 2026-03-29: 8 commitsWeek of 2026-04-05: 5 commitsWeek of 2026-04-12: 13 commitsWeek of 2026-04-19: 38 commitsWeek of 2026-04-26: 26 commitsWeek of 2026-05-03: 6 commitsWeek of 2026-05-10: 3 commitsWeek of 2026-05-17: 48 commitsWeek of 2026-05-24: 14 commitsWeek of 2026-05-31: 23 commitsWeek of 2026-06-07: 5 commitsWeek of 2026-06-14: 13 commitsWeek of 2026-06-21: 12 commitsWeek of 2026-06-28: 11 commitsWeek of 2026-07-05: 8 commitsWeek of 2026-07-12: 7 commitsWeek of 2026-07-19: 8 commitsWeek of 2026-07-26: 13 commitsWeek of 2026-08-02: 10 commitsWeek of 2026-08-09: 35 commitsWeek of 2026-08-16: 14 commitsWeek of 2026-08-23: 30 commitsWeek of 2026-08-30: 18 commitsWeek of 2026-09-06: 16 commitsWeek of 2026-09-13: 13 commitsWeek of 2026-09-20: 14 commitsWeek of 2026-09-27: 14 commitsWeek of 2026-10-04: 15 commitsWeek of 2026-10-11: 57 commitsWeek of 2026-10-18: 37 commitsWeek of 2026-10-25: 32 commitsWeek of 2026-11-01: 23 commitsNov 9, 2025Nov 1, 2026
869 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 5 commitsSun 1:00 — 5 commitsSun 2:00 — 2 commitsSun 3:00 — 2 commitsSun 4:00 — 2 commitsSun 5:00 — 5 commitsSun 6:00 — 0 commitsSun 7:00 — 0 commitsSun 8:00 — 2 commitsSun 9:00 — 4 commitsSun 10:00 — 5 commitsSun 11:00 — 10 commitsSun 12:00 — 10 commitsSun 13:00 — 13 commitsSun 14:00 — 8 commitsSun 15:00 — 8 commitsSun 16:00 — 7 commitsSun 17:00 — 8 commitsSun 18:00 — 8 commitsSun 19:00 — 9 commitsSun 20:00 — 10 commitsSun 21:00 — 6 commitsSun 22:00 — 1 commitsSun 23:00 — 3 commitsMon 0:00 — 3 commitsMon 1:00 — 5 commitsMon 2:00 — 2 commitsMon 3:00 — 0 commitsMon 4:00 — 1 commitsMon 5:00 — 1 commitsMon 6:00 — 1 commitsMon 7:00 — 3 commitsMon 8:00 — 9 commitsMon 9:00 — 7 commitsMon 10:00 — 6 commitsMon 11:00 — 8 commitsMon 12:00 — 7 commitsMon 13:00 — 9 commitsMon 14:00 — 9 commitsMon 15:00 — 13 commitsMon 16:00 — 3 commitsMon 17:00 — 6 commitsMon 18:00 — 10 commitsMon 19:00 — 7 commitsMon 20:00 — 9 commitsMon 21:00 — 4 commitsMon 22:00 — 11 commitsMon 23:00 — 9 commitsTue 0:00 — 6 commitsTue 1:00 — 7 commitsTue 2:00 — 4 commitsTue 3:00 — 5 commitsTue 4:00 — 2 commitsTue 5:00 — 2 commitsTue 6:00 — 2 commitsTue 7:00 — 7 commitsTue 8:00 — 4 commitsTue 9:00 — 7 commitsTue 10:00 — 4 commitsTue 11:00 — 3 commitsTue 12:00 — 5 commitsTue 13:00 — 9 commitsTue 14:00 — 3 commitsTue 15:00 — 12 commitsTue 16:00 — 5 commitsTue 17:00 — 6 commitsTue 18:00 — 4 commitsTue 19:00 — 9 commitsTue 20:00 — 5 commitsTue 21:00 — 5 commitsTue 22:00 — 6 commitsTue 23:00 — 3 commitsWed 0:00 — 7 commitsWed 1:00 — 0 commitsWed 2:00 — 2 commitsWed 3:00 — 2 commitsWed 4:00 — 1 commitsWed 5:00 — 2 commitsWed 6:00 — 0 commitsWed 7:00 — 1 commitsWed 8:00 — 1 commitsWed 9:00 — 6 commitsWed 10:00 — 9 commitsWed 11:00 — 5 commitsWed 12:00 — 7 commitsWed 13:00 — 2 commitsWed 14:00 — 9 commitsWed 15:00 — 15 commitsWed 16:00 — 13 commitsWed 17:00 — 10 commitsWed 18:00 — 12 commitsWed 19:00 — 6 commitsWed 20:00 — 10 commitsWed 21:00 — 6 commitsWed 22:00 — 6 commitsWed 23:00 — 7 commitsThu 0:00 — 7 commitsThu 1:00 — 7 commitsThu 2:00 — 4 commitsThu 3:00 — 1 commitsThu 4:00 — 2 commitsThu 5:00 — 0 commitsThu 6:00 — 2 commitsThu 7:00 — 0 commitsThu 8:00 — 3 commitsThu 9:00 — 9 commitsThu 10:00 — 8 commitsThu 11:00 — 7 commitsThu 12:00 — 6 commitsThu 13:00 — 11 commitsThu 14:00 — 11 commitsThu 15:00 — 7 commitsThu 16:00 — 15 commitsThu 17:00 — 10 commitsThu 18:00 — 10 commitsThu 19:00 — 7 commitsThu 20:00 — 15 commitsThu 21:00 — 18 commitsThu 22:00 — 15 commitsThu 23:00 — 10 commitsFri 0:00 — 5 commitsFri 1:00 — 2 commitsFri 2:00 — 2 commitsFri 3:00 — 11 commitsFri 4:00 — 1 commitsFri 5:00 — 2 commitsFri 6:00 — 2 commitsFri 7:00 — 3 commitsFri 8:00 — 3 commitsFri 9:00 — 9 commitsFri 10:00 — 19 commitsFri 11:00 — 20 commitsFri 12:00 — 6 commitsFri 13:00 — 11 commitsFri 14:00 — 11 commitsFri 15:00 — 8 commitsFri 16:00 — 7 commitsFri 17:00 — 14 commitsFri 18:00 — 6 commitsFri 19:00 — 7 commitsFri 20:00 — 4 commitsFri 21:00 — 5 commitsFri 22:00 — 5 commitsFri 23:00 — 7 commitsSat 0:00 — 13 commitsSat 1:00 — 4 commitsSat 2:00 — 3 commitsSat 3:00 — 3 commitsSat 4:00 — 2 commitsSat 5:00 — 1 commitsSat 6:00 — 2 commitsSat 7:00 — 1 commitsSat 8:00 — 2 commitsSat 9:00 — 6 commitsSat 10:00 — 4 commitsSat 11:00 — 8 commitsSat 12:00 — 3 commitsSat 13:00 — 8 commitsSat 14:00 — 15 commitsSat 15:00 — 15 commitsSat 16:00 — 20 commitsSat 17:00 — 12 commitsSat 18:00 — 2 commitsSat 19:00 — 10 commitsSat 20:00 — 13 commitsSat 21:00 — 5 commitsSat 22:00 — 6 commitsSat 23:00 — 10 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
DateListRankStars gained
Jan 26, 2026daily#7+320
Jan 25, 2026daily#9+282