Self-hosted service
deezer/spleeter avatar
deezer/spleeter

Spleeter: Deezer's Pretrained Source Separation Library, and What Its MIT Licence Actually Buys You

Deezer source separation library including pretrained models.

28,449 stars3,061 forksPythonMIT

At a glance

What is it?
Spleeter splits a mixed track into 2, 4 or 5 stems using TensorFlow models pretrained by Deezer. It is a fast way to get vocals, drums, bass, piano and accompaniment as separate files, but its release cadence, dependency weight and M1 caveats define who should actually install it.
Who is it for?
Adopt Spleeter if you need a working 2 or 4 stem separation pipeline today and are willing to pin TensorFlow and Python versions around it; skip it if you need 6 stem output, active upstream development, or a clean Apple Silicon install without the documented workaround.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 90 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What Spleeter separates, and the person it is built for

Spleeter takes a mixed audio file and writes out the individual sources it estimates are inside it. The README lists three configurations: 2 stems (vocals and accompaniment), 4 stems (vocals, drums, bass, other) and 5 stems (vocals, drums, bass, piano, other). The target user is not a mastering engineer. It is a developer who has a folder of tracks and needs separated files as data, either to feed another model, to build a practice or remix tool, or to prototype a product feature. The README states the library is designed to be used from the command line as well as directly in a Python pipeline as a library, which tells you the intended integration points are a shell script and an import statement, not a GUI. Deezer also publishes a Google Colab notebook for people who want to try it without installing anything, which is the honest signal that local installation is the friction point, not the separation itself.

The mechanism: a TensorFlow model wrapped in a CLI and a Python API

Spleeter is written in Python and uses TensorFlow. The pretrained models ship with the package rather than being downloaded by a separate step, which is why the pip install pulls a large dependency tree. Separation is invoked either as `spleeter separate` on the command line or through the `Separator` class documented in the API reference wiki page. The `-p` flag selects the pretrained model by name, for example `spleeter:2stems`, and the `-o` flag sets the output directory. The README's example produces `vocals.wav` and `accompaniment.wav` inside `output/audio_example`, so the tool creates a per-input subfolder rather than dumping stems flat into the output path. That naming convention matters if you are scripting over a batch of files, because your downstream code has to know the subfolder name is derived from the input filename. The README claims the 2 stem and 4 stem models have high performance on the musdb dataset and that 4 stem separation can run 100x faster than real time on a GPU. Those figures come from Deezer's own documentation and wiki, not from any independent run.

Getting it running: the exact commands the README gives

The README's quick start needs two system libraries first, `ffmpeg` and `libsndfile`, installed through conda-forge, then `pip install spleeter`. The full sequence is `conda install -c conda-forge ffmpeg libsndfile`, then `pip install spleeter`, then downloading `audio_example.mp3`, then `spleeter separate -p spleeter:2stems -o output audio_example.mp3`. Note the contradiction in the README itself: immediately after showing the conda command it says conda is no longer the recommended way to install spleeter. The system dependencies still have to come from somewhere, so read that warning as being about the Python package, not about ffmpeg and libsndfile. There is also a Docker image published under `deezer/spleeter` on Docker Hub, which the wiki covers, and that is the cleaner route if you do not want TensorFlow on your host machine. For development, the project uses Poetry: clone the repository, `pip install poetry`, `poetry install`, then `poetry run pytest tests/`. If you are only consuming the tool, ignore the Poetry section entirely.

Where Spleeter breaks: version churn, M1, and the 2.1.0 CLI change

The README carries a warning that the 2.1.0 release introduced breaking changes, including new CLI option naming for input, and dropped the dedicated GPU package. Any shell script or wrapper written against 1.x that passes an input flag will need editing before it runs on 2.x. That is a real migration cost, and it is the kind of change that silently breaks a pipeline rather than failing loudly, depending on how your argument parsing is written. The second documented failure mode is hardware: the README states there are known issues with Apple M1 chips, mostly due to TensorFlow compatibility, and points to a GitHub issue comment as a workaround rather than a fix. If your team is on Apple Silicon, budget time for that. The third limitation is structural. There is no 6 stem model. If you need guitar or a separate piano-and-other split beyond the 5 stem configuration, Spleeter does not offer it, and the README does not present a path to adding one without your own isolated-source dataset. Training your own model is possible, and the README says so, but it is conditioned on already having that dataset, which is the expensive part.

Release cadence and what the MIT licence does and does not cover

The release history in the repository shows v2.3.0 in September 2021 and v1.4.0 in October 2019. The most recent push to the default branch is dated 2026, so the repository is not archived and is still receiving commits, but the tagged releases are years apart. Treat the code as stable rather than actively evolving. Spleeter is MIT licensed, which is permissive and generally the easiest licence to build a commercial product on top of. That said, the README separately promotes a commercial product called Spleeter Pro for precise separation, faster processing and professional support. The existence of a commercial tier alongside an MIT library is normal, but it means the open repository is the baseline, not the product Deezer sells. Check whether the pretrained model weights carry the same terms as the code before you ship them inside a commercial binary; the repository metadata gives the MIT identifier for the project, and nothing in the supplied material describes a separate model licence, so verify that yourself rather than assuming.

Alternatives and the actual difference in approach

The clearest comparison point in the README is the Music Demixing Challenge, where Spleeter is described as a baseline. A baseline in a challenge context means it is the reference other submissions are measured against, which is a useful framing: Spleeter is the thing you beat, not the thing that wins. The README also names commercial software that has used Spleeter pretrained models inside their own features, including iZotope RX 8's Music Rebalance, Steinberg SpectralLayers 7's Unmix, Acon Digital Acoustica 7, VirtualDJ's stem isolation and Algoriddim's NeuralMix and djayPRO. Those are not alternatives to Spleeter so much as downstream consumers of the same models, wrapped in a GUI and shipped as a paid product. If your need is occasional separation of a few tracks by hand, paying for one of those is cheaper than maintaining a TensorFlow install. If your need is programmatic separation at volume, Spleeter's advantage is that it is a library with a Python API and a CLI, not an application. The trade-off is that you own the environment, the version pinning and the M1 problem yourself.

Who should install Spleeter, and what to check first

Spleeter fits teams that need separated stems as machine-readable output and are comfortable pinning Python and TensorFlow versions to keep the install reproducible. It fits researchers who want a documented baseline with a citable paper, since the README provides a BibTeX entry for the JOSS article. It does not fit anyone who needs 6 stems, anyone who needs the project to move quickly on new model architectures, or anyone on Apple Silicon who wants a clean install with no workaround. If you are evaluating it, the cheapest test is the README's own example: install ffmpeg and libsndfile, `pip install spleeter`, run `spleeter separate -p spleeter:2stems -o output audio_example.mp3`, and confirm you get `vocals.wav` and `accompaniment.wav` in `output/audio_example`. Then run it on one file from your own corpus and listen to the accompaniment stem, because that is where separation artifacts show up first and no benchmark number in the README will tell you whether they are acceptable for your use case.

Editorial conclusion

Adopt Spleeter if you need a working 2 or 4 stem separation pipeline today and are willing to pin TensorFlow and Python versions around it; skip it if you need 6 stem output, active upstream development, or a clean Apple Silicon install without the documented workaround. Before committing, run the example command on one of your own files and confirm the output folder naming and stem list match what your downstream code expects, because the 2.1.0 CLI option changes will break scripts written against the 1.x interface.

Official sources

  1. deezer/spleeter on GitHub
  2. License: MIT
  3. Project website
  4. README
  5. Releases
Community notes

Community notes