HTDemucs 6s — MLX

The 6-stem Hybrid Transformer Demucs (htdemucs_6s, Rouard et al. 2023): drums / bass / other / vocals / guitar / piano, converted to MLX for Apple Silicon. Source: facebookresearch/demucs. (Upstream describes this as an experimental model: guitar quality is "okay" while the piano stem has "a lot of bleeding and artifacts" — their words.)

Runs with the open schism-mlx package:

from schism_mlx.separate import htdemucs

model = htdemucs.from_pretrained("schism-audio/htdemucs-6s-mlx")
stems = model.separate("song.wav")   # {..., "guitar": (2, L), "piano": (2, L)}

~0.6 s for 15 s of stereo on an M5 Max (RTF 0.04).

Conversion & verification

  • Original float32 weights, tensor-renamed and layout-permuted for MLX. This variant has no transformer bottleneck (bottom_channels=0; the cross-domain transformer runs at 384 dims). No quantization, no finetuning.
  • Verified against the live demucs reference: segment forward 1.7e-6 max sample diff; segmented full tracks match apply_model(shifts=0, split=True) to 8.9e-8.
  • A drums-only recording from schism-audio/e-gmd lands 100.0% of output energy in the drums stem.
  • Deterministic (shifts=0); the demucs CLI defaults to --shifts 1, so compare against demucs --shifts 0.

Precision note: on M5-class GPUs, MLX silently runs float32 matmuls at TF32-class precision (ml-explore/mlx#3860). schism_mlx disables this on import; set MLX_ENABLE_TF32=0 if using these weights with your own MLX code.

License

MIT, inherited from facebookresearch/demucs. Model by Simon Rouard, Francisco Massa, and Alexandre Défossez (Meta AI); MLX conversion by schism-audio.

Downloads last month
37
Safetensors
Model size
27.4M params
Tensor type
F32
·
MLX
Hardware compatibility
Log In to add your hardware

Quantized

Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Paper for schism-audio/htdemucs-6s-mlx