Aller au contenu
ModelPrésentéExterne
Télécharger

Cocktail Fork MRX

Apple MLX port of MERL's MRX (Multi-Resolution CrossNet) — separates a soundtrack mixture into three stems: music, speech, and sound effects (sfx). Runs natively on Apple Silicon, no PyTorch at inference.

TypeOtherVersionRevision d3ab4a5BClasse

Source du modèle

Type
Other
Taille du fichier
117 MB
Version
vRevision d3ab4a5
Mis à jour
25 oct. 2026
Téléchargements
46
Source
Hugging Face

Description de la source

Cocktail-Fork-MRX (MLX)

Apple MLX port of MERL's MRX (Multi-Resolution CrossNet) — separates a soundtrack mixture into three stems: music, speech, and sound effects (sfx). Runs natively on Apple Silicon, no PyTorch at inference.

  • Upstream: merlresearch/cocktail-fork-separation — The Cocktail Fork Problem: Three-Stem Audio Separation for Real-World Soundtracks (ICASSP 2022).
  • Checkpoint: default_ (SNR-loss trained — the upstream default inference weights).
  • Variants: -paper (SI-SNR, ICASSP reproduction) · -adapted-loudness · -adapted-eq (cinematic-tuned for real movie stems).
  • Collection: Cocktail-Fork MRX (MLX).
  • License: MIT.
  • Parity: numerically exact vs the PyTorch reference (full-pipeline max_abs ≈ 9e-8; per-stem SI-SDR 107–139 dB vs torch).

Usage

pip install cocktail-fork-mlx   # or: pip install git+https://github.com/xocialize/cocktail-fork-mlx
cocktail-fork-mlx --audio-path soundtrack.wav --out-dir ./out
# -> out/music.wav  out/speech.wav  out/sfx.wav
import mlx.core as mx, soundfile as sf, numpy as np
from cocktail_fork_mlx.separate import separate_soundtrack
from cocktail_fork_mlx.weights import from_pretrained

audio, fs = sf.read("soundtrack.wav", always_2d=True)   # 44.1 kHz
model = from_pretrained("mlx-community/Cocktail-Fork-MRX")
stems = separate_soundtrack(mx.array(audio.T.astype("float32")), model)
for name, x in stems.items():
    sf.write(f"{name}.wav", np.array(x).T, 44100)

Model

  • 44.1 kHz, any channel count. ~30.6M params, fp32 (122 MB).
  • Multi-resolution STFT (windows 1024/2048/8192, hop 256) → per-resolution magnitude encoders → 3 parallel bidirectional CrossNet LSTMs → per-source/per-resolution mask decoders → masked iSTFT summed across resolutions.
  • CPU is the faster device for this LSTM-bound model (default in the CLI).

Ported by MVS Collective (xocialize). MIT, © MERL for the original model/weights.

Sources

1 source
Hugging FacePrincipalVersion d3ab4a5ddf3a9d23fa4693f3caa24ccb29a7001e
huggingface.co/mlx-community/Cocktail-Fork-MRX/tree/d3ab4a5ddf3a9d23fa4693f3caa24ccb29a7001e

Vérifié 25 oct.

Artefacts du modèle

1 artefact

model.safetensors

safetensors · 117 MB · SHA-256 17244f6f1ded…9884 · Hugging Face

Download file

Extraits de sources

3 extraits

--- license: mit library_name: mlx tags: - mlx - audio - audio-source-separation - speech - music - apple-silicon pipeline_tag: audio-to-audio --- # Cocktail-Fork-MRX (MLX) Apple **MLX** port of MERL's **MRX** (Multi-Resolution CrossNet) — separates a soundtrack mixture into three stems: **music**, **speech**, and **sound effects (sfx)**. Runs natively on Apple Silicon, no PyTorch at inference. - **Upstream:** [merlresearch/cocktail-fork-separation](https://github.com/merlresearch/cocktail-fork-separation) — *The Cocktail Fork Problem: Three-Stem Audio Separation for Real-World Soundtracks* (ICASSP 2022). - **Checkpoint:** `default_` (SNR-loss trained — the upstream default inference weights). - **Variants:** [`-paper`](https://huggingface.co/mlx-community/Cocktail-Fork-MRX-paper) (SI-SNR, ICASSP reproduction) · [`-adapted-loudness`](https://huggingface.co/mlx-community/Cocktail-Fork-MRX-adapted-loudness) · [`-adapted-eq`](https://huggingface.co/mlx-community/Cocktail-Fork-MRX-adapted-eq) (cinematic-tuned for real movie stems). - **Collection:** [Cocktail-Fork MRX (MLX)](https://huggingface.co/collections/mlx-community/cocktail-fork-mrx-mlx-6a233f3f10f42cd5e654af23). - **License:** MIT. - **Parity:** numerically exact vs the PyTorch reference (full-pipeline max_abs ≈ `9e-8`; per-stem SI-SDR 107–139 dB vs torch). ## Usage ```bash pip install cocktail-fork-mlx # or: pip install git+https://github.com/xocialize/cocktail-fork-mlx cocktail-fork-mlx --audio-path soundtrack.wav --out-dir ./out # -> out/music.wav out/speech.wav out/sfx.wav ``` ```python import mlx.core as mx, soundfile as sf, numpy as np from cocktail_fork_mlx.separate import separate_soundtrack from cocktail_fork_mlx.weights import from_pretrained audio, fs = sf.read("soundtrack.wav", always_2d=True) # 44.1 kHz model = from_pretrained("mlx-community/Cocktail-Fork-MRX") stems = separate_soundtrack(mx.array(audio.T.astype("float32")), model) for name, x in stems.items(): sf.write(f"{name}.wav", np.array(x).T, 44100) ``` ## Model - 44.1 kHz, any channel count. ~30.6M params, fp32 (122 MB). - Multi-resolution STFT (windows 1024/2048/8192, hop 256) → per-resolution magnitude encoders → 3 parallel bidirectional CrossNet LSTMs → per-source/per-resolution mask decoders → masked iSTFT summed across resolutions. - CPU is the faster device for this LSTM-bound model (default in the CLI)....

Source context: 46 downloads · 1 likes · Pipeline audio-to-audio · Library mlx · Repo mlx-community/Cocktail-Fork-MRX

Source context: 17 downloads · 1 likes · Pipeline audio-to-audio · Library mlx · Repo mlx-community/Cocktail-Fork-MRX