Gaborformer: Open Stem Splitter Trained on 86 Songs

Introduction
Sevag Hanssian (sevagh) has released Gaborformer, an open music source separation model that splits a mixed track into vocals, drums, bass, and other. The Hugging Face repo sevagh/gaborformer went up on 8 November 2026 at 15:34 UTC, and the GitHub release v1.0.0 followed at 19:03 UTC the same day. You can run it today with one command: gaborformer song.wav --out separated.
The headline number is the training budget behind the score. Gaborformer reaches 11.46 dB average cSDR on the 50-track MUSDB18-HQ test set. It learned from only the standard 86 training songs. The SDX'23-winning BS-RoFormer scores 11.99 dB, but it trained on 450 extra songs plus 50 extra validation songs.
What Shipped
- Vendor / model: Sevag Hanssian (sevagh) — Gaborformer v1.0.0
- Modality: open-weight music source separation (audio-to-audio), four stems: vocals, drums, bass, other
- Open vs closed: code under MIT; pretrained weights under a custom non-commercial licence (trained only on MUSDB18-HQ)
- Runnable today:
pip install -e .from the GitHub repo, then thegaborformerCLI on CUDA or CPU; Docker guide included; ungated Hugging Face weights - Concrete fact: 266.6M parameters, 533 MB FP16 checkpoint, 11.46 dB average cSDR on the MUSDB18-HQ test set
The repo ships three checkpoints: gaborformer-fp16.safetensors (the default download), gaborformer-fp32.safetensors, and gaborformer.pt for fine-tuning. Inference code, training code, and per-track evaluation JSON are all included.
How It Works
Most modern separators start from an STFT spectrogram. Gaborformer swaps that front-end for a nonstationary Gabor transform (NSGT), which uses different time-frequency resolutions in different parts of the spectrum. It revisits the author's 2021 master's project, xumx-sliCQ.
- Below 4 kHz the transform uses linear Hann bands; above 4 kHz it switches to constant-Q bands
- An extra fine-resolution layer below 500 Hz feeds the network more bass detail. Reconstruction does not use that layer
- Each 8-second stereo chunk becomes 345 frames, grouped into 131 frequency-band tokens
- Sixteen pairs of time and band transformers (width 512, eight heads) predict complex masks for the four stems, following the BS-RoFormer design via Phil Wang's PyTorch implementation
- The inverse NSGT rebuilds each stem waveform. Chunks are joined with 50% triangular crossfades
One network handles all four stems. The final model is an EMA-averaged checkpoint, not an ensemble, so inference stays a single pass.
How to Run It
From the project README:
git clone https://github.com/sevagh/gaborformer.git
cd gaborformer
python -m pip install -e .
gaborformer song.wav --out separatedThe first run downloads the 533 MB FP16 checkpoint from Hugging Face and verifies its SHA-256. No Hugging Face account is needed. Output lands in separated/song/ as vocals.wav, drums.wav, bass.wav, and other.wav — 44.1 kHz stereo, 32-bit float.
Useful flags:
--batch-size 1to cut memory use--cpufor CPU inference--precision fp16for CUDA GPUs without BF16--compileto compile the transformer layers (best for long tracks or many files)--offlinewith--weights path/to/checkpointto run without contacting Hugging Face
Inputs at other sample rates are resampled to 44.1 kHz, and mono is duplicated to stereo. M4A/AAC needs system FFmpeg, which the Docker image includes. With uv, uv run gaborformer song.wav --out separated works too.
On an idle RTX 3090, a 210-second track took 20.8 s end to end without compilation. That covers startup, weight loading, and writing four stems. Steady-state inference was 16.2 s uncompiled and 11.5 s compiled.
The Numbers
All scores are cSDR in dB on the 50-track MUSDB18-HQ test set (higher is better). Against other systems trained on MUSDB18-HQ only:
- Gaborformer (266.6M, 86 songs): 11.46 average — vocals 12.05, drums 12.18, bass 12.27, other 9.34
- DiCoSe (T=1): 10.41 average
- BS-RoFormer L=9: 10.02 average
- Moises-Light: 9.96 average
- SFC-Locoformer Medium: 9.95 average
Against systems that trained on extra data, the SDX'23-winning BS-RoFormer (three stem models, 450 extra training songs) still leads at 11.99. Gaborformer does beat it on "other" (9.34 vs 9.01).
The author also ran a head-to-head with the released BS-RoFormer-SW checkpoint on the same 50 tracks. SW leads by 0.34 dB on average (11.80 vs 11.46). Gaborformer is slightly ahead on vocals (12.05 vs 11.98) and bass (12.27 vs 12.24). SW is clearly ahead on drums (13.28 vs 12.18). The README notes that the competitor scores come from public tables with different training splits and evaluation code.
Fine-Tuning
The .pt file holds FP32 weights and config with no optimizer state. It starts a new run:
python -m gaborformer.train \
--musdb /path/to/musdb18hq \
--run-dir runs/finetune \
--init-from weights/gaborformer.pt \
--steps 60000 --lr 1e-4Training needs CUDA. torchrun handles multiple GPUs, and extra tracks can be dropped into the MUSDB18-HQ folder layout. The author estimates that reproducing the full recipe on A100/H100 spot instances costs "a few thousand US dollars."
Limits
- The weights are non-commercial only. The MIT licence covers the code, not the checkpoint
- Four fixed stems. Guitar, piano, and synths all land in "other"
- 266.6M parameters puts it in the BS-RoFormer weight class. For something light, look at the 5–20M models in the comparison instead
- BS-RoFormer-SW still has better drums and a better overall average if you only care about the best released checkpoint
- This is a stem separator, not a music generator, so it does not map to ArtRealmAI Gen
- The author says the project was built with substantial AI coding assistance and that he directed the research and stands behind the reported results
Original Source
Code, docs, and the v1.0.0 release: github.com/sevagh/gaborformer
Conclusion
Gaborformer is a strong open stem splitter you can install with one pip command. It leads the MUSDB18-HQ-only comparison by more than a decibel and lands about half a decibel short of the SDX'23 winner on a sixth of the data. If you need clean vocal or bass stems for remixing, practice tracks, or dataset prep, and your use is non-commercial, try it on a track you know well. Then compare it against BS-RoFormer-SW on the drums.
—Anabel ♡
