deezer/spleeter
56.0
Weak · 18 September 2026
3.2k
lines of production code
Python
primary language
1
measurement over time
What this system is
Spleeter is an open-source library for audio source separation that splits mixed music tracks into distinct instrument stems such as vocals, drums, and bass. It leverages TensorFlow 2 to run deep learning models like U-Net and BLSTM, providing a command-line interface for both inference and training. The system manages audio processing via FFmpeg and handles model distribution through a secure, checksum-verified provider system.
Features
Added MUSDB18 training configuration and dataset manifests
This change introduces configuration files and CSV manifests for training on the MUSDB18 dataset. It adds \musdb\_config.json\ which defines a 4-stem separation model (vocals, drums, bass, other) using a UNet architecture with ELU activations, along with \musdb\_train.csv\ and \musdb\_validation.csv\ that map the file paths for the training and validation subsets of the dataset.
configs · high confidence
Initial public release of Spleeter source code and documentation
This commit introduces the initial public release of the Spleeter music source separation library. It adds the core project scaffolding, including the MIT license, a comprehensive README with installation and usage instructions, a Jupyter notebook for quick starts, and a detailed JOSS paper (paper.md and paper.bib) describing the tool's capabilities and performance. It also establishes development standards by adding a .flake8 configuration and a .gitignore file, and begins the CHANGELOG.md with version history starting from 1.4.9 up to 2.4.2.
(repo-wide) · high confidence
Initial release of model configuration resources
This change introduces the initial set of JSON configuration files and package metadata for the Spleeter library. It adds resource definitions for 2-stem, 4-stem, and 5-stem separation models, including specific variants optimized for 16kHz processing. These configurations define the model architecture (UNet and Softmax UNet), hyperparameters, and instrument lists (vocals, drums, bass, piano, other) used for audio source separation.
spleeter/resources · high confidence
Initial release of model function implementations
This change introduces the core model function implementations for the Spleeter source separation library, including the BLSTM (Bidirectional LSTM) and U-Net architectures. The \spleeter/model/functions\ package now provides the underlying TensorFlow layers and logic used to process audio tensors for instrument separation, establishing the foundational model structure for the application.
spleeter/model/functions · high confidence
Initial release of the spleeter model package
This change introduces the core \spleeter/model\ package, establishing the foundational architecture for audio source separation. It provides the \EstimatorSpecBuilder\ to construct TensorFlow estimators for training, evaluation, and prediction modes, supporting configurable model types (defaulting to UNet) and loss functions. The package also defines input providers for handling waveform data and integrates TensorFlow signal processing utilities for STFT operations.
spleeter/model · high confidence
Introduces GitHub-based model provider with checksum validation
The model provider system now includes a new \GithubModelProvider\ implementation that downloads model archives from GitHub releases. This change adds integrity verification by computing and comparing SHA-256 checksums against a remote \checksum.json\ index before extracting the archive, and it improves resource management by using context managers for file handles and automatically cleaning up temporary archive files after extraction.
spleeter/model/provider · high confidence
Spleeter library initialization with Typer CLI and TensorFlow 2 backend
This change introduces the core Spleeter library files, establishing the source separation functionality. It replaces the previous command-line interface with a new Typer-based CLI (spleeter/\_\main\\_.py) that supports commands like 'separate' and 'train', including options for audio adapters, codecs, and filename formatting. The library now relies on TensorFlow 2's Estimator API for model inference and training, as seen in the new separator.py and dataset.py modules, and includes a custom SpleeterError exception and type definitions.
spleeter · high confidence
Behavioural changes
Introduce centralized logging and configuration utilities
The \spleeter/utils\ package now provides core infrastructure for configuration loading and logging. Users benefit from a new \load\_configuration\ function that supports both embedded configuration descriptors (prefixed with \spleeter:\) and standard file paths. Additionally, a dedicated logging module integrates with Typer to route log messages through the CLI interface, suppresses verbose TensorFlow warnings by default, and allows users to toggle verbose output for detailed debugging of TensorFlow and FFprobe operations.
spleeter/utils · high confidence
Refactored audio processing into a dedicated package with FFMPEG backend
The audio handling logic has been reorganized from the utils directory into a new \spleeter.audio\ package. This change introduces a new \AudioAdapter\ abstract base class and a default \FFMPEGProcessAudioAdapter\ implementation that validates the presence of ffmpeg/ffprobe binaries at startup. Users benefit from a more robust audio loading and saving mechanism that explicitly checks for system dependencies, supports a wider range of codecs (WAV, MP3, OGG, M4A, WMA, FLAC) via the new \Codec\ enum, and includes improved error reporting for missing binaries or invalid file streams.
spleeter/audio · high confidence
Fixes
Refactored Docker image structure with Conda-based entrypoint and CUDA variants
The Docker build process has been restructured to support multiple base images, including specific variants for CUDA 9.2, 10.0, and 10.1, as well as a new Conda-based image. A custom entrypoint script (\conda-entrypoint.sh\) is now used for the Conda variant to ensure the Conda environment is activated before running Spleeter, addressing previous installation and execution issues. The standard Python-based image and the model-specific image have also been updated to align with this new layout, ensuring consistent behavior across different deployment targets.
docker · high confidence
Test coverage
Initial test suite for Spleeter core components
Added a comprehensive set of unit and integration tests covering the CLI interface, audio adapter (FFmpeg), model provider (checksum verification), separator (stem separation logic and file output), and training pipeline. These tests ensure that command-line arguments, audio loading/saving, model checksum validation, separation accuracy, and training checkpoint generation function correctly.
tests · high confidence
Dependencies
Spleeter 2.4.2 release with Poetry migration and Python 3.11 support
Spleeter is updated to version 2.4.2, introducing a migration to the Poetry dependency manager (pyproject.toml and poetry.lock) and dropping support for Python versions earlier than 3.8 to enable compatibility with Python 3.11. The TensorFlow dependency is pinned to version 2.12.1, and the numpy constraint is tightened to exclude version 2.0.0 to prevent compatibility issues.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 56.
Lenses
- Code Health 100
- Architecture 96
- Maturity 52
- Readiness 49
- Security 52
Changes since last survey
- 300 commits — 231 feature/other, 69 fixes
By area
- (root) — 86 commits
- .github/workflows — 55 commits
- (repo) — 32 commits
- spleeter/main.py — 18 commits
- spleeter/separator.py — 15 commits
- tests/test_eval.py — 13 commits
- conda/spleeter — 12 commits
- spleeter/audio — 12 commits
- spleeter/model — 11 commits
- spleeter/utils — 8 commits
- .circleci/config.yml — 6 commits
- docker/spleeter-conda.dockerfile — 5 commits
- spleeter/commands — 3 commits
- spleeter/dataset.py — 3 commits
- spleeter/options.py — 3 commits
- tests/test_separator.py — 3 commits
- .github/PULL_REQUEST_TEMPLATE.md — 2 commits
- docker/cuda-10-0.dockerfile — 2 commits
- tests/test_train.py — 2 commits
- .github/CONTRIBUTING.md — 1 commit
Notable commits
- fix: Fix dep issue with numpy
- fix: Fix dep issue with numpy
- fix: Fixed channels setting in dataset + added dimension check
- fix: Fixed import of importlib.metadata
- fix: Merge pull request #603 from deezer/help-fix
- fix: No numpy over 1.19.x to solve bugs.
- fix: PR template: Fix broken link to contributing.md
- fix: Pointing warning to new Mac M1 fix with TF metal.
- fix: Protobuf fix.
- fix: Replaced fixed dataset directory by temporary one
- fix: Revert "Larger dependency range for tensorflow"
- fix: Updated TF dependency to solve data augmentation bug.
- fix: fix docker hub link
- fix: fix tests and more testing
- fix: fix tests and more testing
- fix: fix: add custom entrypoint
- fix: fix: check miniconda base
- fix: fix: conda-gpu base image
- fix: fix: entrypoint
- fix: fix: entrypoint copy
- …and 280 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
deezer/spleeter was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 18 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit c8854001ac8acad34a9bc2bd15f28475541828b1 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-5d04157a340d.