Skip to main content

MLX-native audio stem separation for Apple Silicon

Project description

mlx-audio-separator

MLX-native stem separation for Apple Silicon Macs.

This project ports the inference paths from 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 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.1.tar.gz (295.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.1-py3-none-any.whl (325.2 kB view details)

Uploaded Python 3

File details

Details for the file mlx_audio_separator-0.1.1.tar.gz.

File metadata

  • Download URL: mlx_audio_separator-0.1.1.tar.gz
  • Upload date:
  • Size: 295.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.1.tar.gz
Algorithm Hash digest
SHA256 c384bc58d3a72d03e03e581e4d3833feade2fb2a8288bb239f7c5b9fe78db972
MD5 9a49e9c22bb304bc8da4044f1bdfbb90
BLAKE2b-256 70a8846f2c6c7b422e141748c3d611586bb1a1d9061f31f7c2d6f835a700b8ed

See more details on using hashes here.

Provenance

The following attestation bundles were made for mlx_audio_separator-0.1.1.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.1-py3-none-any.whl.

File metadata

File hashes

Hashes for mlx_audio_separator-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 25a02f6c91dc08b895f36f38ac854c56273fd9750673c910ee017b712e52975a
MD5 c4983018157c8ba3a5448b514515e2a7
BLAKE2b-256 eccb3fc344f4345b7719b7b5159188aa0c5bb1c163c76f1e5621f180f7fe00e7

See more details on using hashes here.

Provenance

The following attestation bundles were made for mlx_audio_separator-0.1.1-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