Saltar al contenido
ModelPublicadoExterno
Descargar

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.

TipoOtherVersiónRevision d3ab4a5Bcalidad

Fuente del modelo

Tipo
Other
Tamaño del archivo
117 MB
Versión
vRevision d3ab4a5
Actualizado
25 oct 2026
Descargas
46
Fuente
Hugging Face

Descripción de la fuente

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.

Fuentes

1 fuente
Hugging FacePrincipalVersión d3ab4a5ddf3a9d23fa4693f3caa24ccb29a7001e
huggingface.co/mlx-community/Cocktail-Fork-MRX/tree/d3ab4a5ddf3a9d23fa4693f3caa24ccb29a7001e

Verificado 25 oct

Artefactos del modelo

1 artefacto

model.safetensors

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

Download file

Extractos de fuentes

3 extractos

--- 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