Download README.md from simopa71/preso-stems: direct link, hf CLI and curl.
- Browser
- Download file 2.77 kB
-
https://huggingface.co/simopa71/preso-stems/resolve/main/README.md
- Command line
-
hf download hf://simopa71/preso-stems/README.md
-
curl -L -o README.md https://huggingface.co/simopa71/preso-stems/resolve/main/README.md
license: mit
library_name: coreml
tags:
- audio
- music
- source-separation
- coreml
- scnet
SCNet (base) – Core ML
Core ML conversion of SCNet, a music source separation model that splits a stereo mix into four stems: drums, bass, other, vocals. These files are downloaded on first use by the iOS app Preso!, which runs the separation entirely on device.
Attribution
The model and its pretrained weights are the work of the SCNet authors:
- Paper: Weinan Tong et al., SCNet: Sparse Compression Network for Music Source Separation (2024)
- Original code and weights: https://github.com/starrytong/SCNet
- License: MIT. The author confirmed that the released pretrained weights are MIT licensed and may be redistributed, including format-converted versions, with attribution: https://github.com/starrytong/SCNet/issues/35
This repository only contains a format conversion of the original checkpoint. No retraining or
fine-tuning was done. The original license text is in LICENSE-SCNet.
Files
| Folder | Precision | Size |
|---|---|---|
SCNet_fp16.mlpackage |
float16 | about 23 MB |
SCNet_fp32.mlpackage |
float32 | about 45 MB |
Each .mlpackage is a folder with three files: Manifest.json,
Data/com.apple.CoreML/model.mlmodel and Data/com.apple.CoreML/weights/weight.bin.
What is inside the model
Only the network. The STFT and inverse STFT, input normalisation and chunking are done outside, by the caller:
- Sample rate 44.1 kHz, stereo.
- STFT: 4096 points, hop 1024, rectangular window, centred with reflect padding, normalised.
- Fixed segments of 11 s (476 frames), 25% overlap, triangular cross-fade.
- Input
spec: shape(1, 4, 2049, 476), laid out as[channel][real/imag]. - Output
stems: shape(1, 16, 2049, 476), laid out as[source][channel][real/imag], sources in the order drums, bass, other, vocals. - The FFTs along the time axis inside the original network are replaced by constant DFT matrices, which is why the segment length is fixed.
Measured
- Conversion fidelity against the PyTorch original: 109 dB (fp32), 59 dB (fp16).
- Quality on 12 seven-second MUSDB18 test excerpts (global SDR, not comparable one to one with the BSSEval figures in the paper): drums 9.2, bass 7.6, other 5.3, vocals 10.0 dB.
- Speed on a Mac with Apple M1, GPU, fp16: about 2 s for 30 s of audio.
Not measured: speed and memory on an iPhone, and the Neural Engine. In the iOS Simulator the fp16 variant returned all zeros while fp32 worked; on macOS both work.
Training data
SCNet was trained by its authors on MUSDB18-HQ, a dataset released for research and educational use. Check whether that matters for your use before relying on these weights commercially.