Skip to main content

MLX-native audio stem separation for Apple Silicon

Reason this release was yanked:

mislabeled version string

Project description

mlx-audio-separator

MLX-native stem separation for Apple Silicon Macs.

This project ports the inference paths from audio-separator (upstream repo: nomadkaraoke/python-audio-separator) to MLX so separation runs on Apple Silicon without requiring PyTorch or ONNX Runtime at inference time. Core runtime components are powered by mlx-audio-io (audio I/O) and mlx-spectro (spectral transforms).

Requirements

  • macOS 13+ (Ventura or later)
  • Apple Silicon (M1/M2/M3/M4)
  • Python 3.10+

Installation

pip install mlx-audio-separator

If you need first-run conversion from upstream checkpoints (.ckpt/.onnx/Demucs weights), install conversion extras:

pip install "mlx-audio-separator[convert]"

Quick Start

CLI

# Separate with default model
mlx-audio-separator song.mp3

# Use a specific model
mlx-audio-separator song.mp3 -m htdemucs_ft.yaml

# List supported models
mlx-audio-separator --list_models

Python

from mlx_audio_separator import Separator

sep = Separator()
sep.load_model()
outputs = sep.separate("song.mp3")
print(outputs)

Supported Architectures

  • Roformer (BS-Roformer and MelBand-Roformer families)
  • MDXC (including MDX23C-style checkpoints)
  • MDX
  • VR
  • Demucs

Validation Snapshot

Release validation snapshot (2026-02-24 to 2026-02-26):

Check Result
Full-catalog benchmark gate 163/163 models ok (0 failures)
Unit tests 167 passed, 1 skipped
MLX vs audio-separator parity smoke 4/4 models passed (rel L2 <= 5e-2)

Scope: Apple Silicon (M4 mini), MUSDB18-HQ test subset, release gate + parity smoke model set.

Detailed evidence and provenance: docs/release-validation.md.

Performance Snapshot

MLX vs audio-separator (ABBA, 12-song MUSDB18-HQ test subset, M4 mini):

Model MLX speedup vs PAS
htdemucs_ft.yaml 1.40x
model_bs_roformer_ep_317_sdr_12.9755.ckpt 2.16x
mel_band_roformer_instrumental_instv7n_gabox.ckpt 2.50x
UVR-MDX-NET-Inst_HQ_3.onnx 1.53x

Median speedup across the 4-model overlap set: 1.847x.

These numbers are scoped to the benchmark settings above and are not universal guarantees for all machines, models, or audio inputs.

Stable Runtime Tuning

Release-facing stable controls:

  • --speed_mode {default,latency_safe,latency_safe_v2}
  • --cache_clear_policy {aggressive,deferred}
  • --write_workers <int>

Example:

mlx-audio-separator song.mp3 \
  --speed_mode latency_safe \
  --cache_clear_policy deferred \
  --write_workers 2

Basic benchmark command:

mlx-audio-separator \
  --benchmark song.mp3 \
  --benchmark_warmup 1 \
  --benchmark_repeats 3 \
  --benchmark_profile

Documentation

Document Description
docs/release-validation.md Release evidence snapshot
docs/release-first.md Release execution playbook
docs/reproducibility.md Reproducibility guide
docs/wave4-opt-in.md Wave 4 opt-in/experimental roadmap
CHANGELOG.md Changelog
THIRD_PARTY_NOTICES.md Third-party attribution and license notices

License

This project is MIT licensed.

Acknowledgments

mlx-audio-separator is derived from audio-separator (upstream repo: nomadkaraoke/python-audio-separator, MIT) by beveradb and the nomadkaraoke community. Substantial portions of the architecture, model loading, and separation logic are adapted from that project. If you find this package useful, please also star and support the upstream project.

The models used by this project were trained by the Ultimate Vocal Remover community, primarily @Anjok07 and @aufr33. See THIRD_PARTY_NOTICES.md for full attribution and license details.

Additional references:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mlx_audio_separator-0.1.2rc1.tar.gz (298.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mlx_audio_separator-0.1.2rc1-py3-none-any.whl (326.2 kB view details)

Uploaded Python 3

File details

Details for the file mlx_audio_separator-0.1.2rc1.tar.gz.

File metadata

  • Download URL: mlx_audio_separator-0.1.2rc1.tar.gz
  • Upload date:
  • Size: 298.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mlx_audio_separator-0.1.2rc1.tar.gz
Algorithm Hash digest
SHA256 9c90c9a6928e71f96807445dd484d51dc00e36f490fedcb710f6cf5902e7264f
MD5 2213a00261c72341f70942d249db85bb
BLAKE2b-256 5958340bfbcc98b5ed6fbc1a25345bde18ecb0c95b4161c39409ddec72ecf63e

See more details on using hashes here.

Provenance

The following attestation bundles were made for mlx_audio_separator-0.1.2rc1.tar.gz:

Publisher: release-pypi.yml on ssmall256/mlx-audio-separator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mlx_audio_separator-0.1.2rc1-py3-none-any.whl.

File metadata

File hashes

Hashes for mlx_audio_separator-0.1.2rc1-py3-none-any.whl
Algorithm Hash digest
SHA256 802aa8824dbcb5328a97f000722ec239526c2a81ab944577d6cc47fbef277c13
MD5 ff7d2a51a52bc909c5bfae0222ce9937
BLAKE2b-256 c526ff703d2d0857e60010faa006fea4a50fbf336dfceb827cab31e68b599070

See more details on using hashes here.

Provenance

The following attestation bundles were made for mlx_audio_separator-0.1.2rc1-py3-none-any.whl:

Publisher: release-pypi.yml on ssmall256/mlx-audio-separator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page