All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
v3.20.1 - 2024-02-01
- Fix regression where first-time Spleeter model download fails due to
httpxnot following redirects (#949) - thanks @microtherion for the fix! - Add cleanup logic to remove leftover model files from failed download attempts
- Update dependencies
v3.20.0 - 2024-01-13
- Add Docker support for AArch64 systems (including Apple Silicon)
- Update Docker Python version to 3.9
- Update Docker CUDA image version to 11.6.1
- Update dependencies
v3.19.0 - 2023-09-24
- Add 2 environment variables for configuring
yt-dlp:YOUTUBEDL_SOURCE_ADDR- Client-side IP address foryt-dlpto bind to. If you are facing 403 Forbidden errors, try setting this to0.0.0.0to force all connections through IPv4YOUTUBEDL_VERBOSE- Set to1to enable verbose logging foryt-dlp
- Add download button on music player
- Update dependencies
v3.18.0 - 2023-07-01
- Add
AWS_S3_REGION_NAMEandAWS_S3_SIGNATURE_VERSIONvariables for S3 integration - Add more descriptive error logging
- Allow multiple
CERTBOT_DOMAINs and hardcode cert-name to 'spleeter-web' (#533) - Fix bug where separation would fail immediately (#672)
- Update GPU Docker base image to
cuda:11.2.2fromcuda:11.2.0due to deprecation - Update dependencies
v3.17.0 - 2023-01-11
- Support Spleeter's 5-stem model which separates piano in addition to other accompaniment
- Update separator form UI to use buttons instead of dropdown menus
- Improve form field validation
- Bring back 'iterations' param for X-UMX model
- Update dependencies
- Fix Dev Docker Compose config
- Fix bug where deleting dynamic mix may cause blank screen
- Remove frontend upload size check and rely on Nginx and backend instead
v3.16.0 - 2022-12-26
- Support lossless output formats (WAV, FLAC)
- Add
UPLOAD_FILE_SIZE_LIMIT(in MB) andYOUTUBE_LENGTH_LIMIT(in minutes) environment variables to customize upload limits
v3.15.0 - 2022-12-11
- Update Demucs to v4, which features new Hybrid Transformer models with average SDR of 9.0
- Add ability to configure segment sizes for Demucs models
- If Demucs separation fails for you due insufficient GPU memory, try setting the environment variable
DEMUCS_SEGMENT_SIZEto a lower value like10(default is40, which requires a around 7 GB of memory). You may have to experiment a bit to find the appropriate value. See this for more info. - Also try setting
PYTORCH_NO_CUDA_MEMORY_CACHING=1to disable caching
- If Demucs separation fails for you due insufficient GPU memory, try setting the environment variable
- Update Docker Compose definitions from version
3.4to Compose Specification- You may have to update your Docker Compose version to the newer version
v3.14.0 - 2022-09-08
- Raise minimum Python version to 3.8 and NodeJS version to 16
- Update Docker images to use Python 3.8 and NodeJS 16 (bullseye)
- Update Spleeter, Demucs, Tensorflow, and other dependencies
- Remove some unused NPM dependencies
v3.13.0 - 2022-06-23
- Update dependencies
- Docker: start Django server using 'api' instead of 0.0.0.0 as bind address
- Support for RTX GPUs - Thanks @Ma5onic! (#142)
- HTTPS support using docker-nginx-certbot.
- To use HTTPS, set
APP_HOSTto your domain name andCERTBOT_EMAILto your email in.envand include-f docker-compose.https.ymlin yourdocker-compose upcommand.
- To use HTTPS, set
- Add ability to export Dynamic Mixes based on each component's volume levels.
- To enable this feature, set
ENABLE_CROSS_ORIGIN_HEADERS=1in.envand either access Spleeter Web atlocalhostor enable HTTPS on your domain (see above). This is because it uses SharedArrayBuffers which require cross-origin isolation.- If using an external storage provider, you'll need to set the
Cross-Origin-Resource-Policyresponse headers tocross-origin. See this for more details.
- If using an external storage provider, you'll need to set the
- All the exporting is done in-browser using FFmpeg.WASM.
- Sidenote: Spleeter Web uses a forked version with some cherry-picked changes from the main FFmpeg repo pertaining to the
amixfilter.
- To enable this feature, set
v3.12.0 - 2022-02-21
- Update X-UMX and D3Net models to latest version
- Fix bug where status icon overlay sometimes disappears
- Fix bug where adding basic auth in front of nginx breaks the app (credit to @jtagcat)
- Update dependencies
- Add
API_HOSTenvironment variable to control hostname of API server for nginx (credit to @jtagcat) - Show datetime when fetch task or separation task finished on status icon hover
- Model file integrity checks for X-UMX and D3Net models
- Add support for accelerated CPU separation for D3Net using OpenVINO
- To enable, set
D3NET_OPENVINOenvironment variable to1andD3NET_OPENVINO_THREADSto number of CPU threads to use
- To enable, set
- Prune unused pip dependencies
v3.11.0 - 2021-12-17
- Update Demucs to v3, which uses hybrid separation approach resulting in much improved performance
- Fix bug where non-Spleeter models always generated 128kbps MP3 files. Oops!
- Update "Getting Started" section in README to use prod configuration
- Update some dependencies
- Tasnet models
- Ability to separate using older Demucs models
v3.10.0 - 2021-11-01
- D3Net - Fix "Unable to open file (file signature not found)" error
- D3Net - Fix separation when using local file storage
- Make
DEFAULT_FILE_STORAGEan environment variable. It can be set toFILE,AWS, orAZURE. More information inREADME.md.- Set the default to
FILEin all cases
- Set the default to
- Apply workaround for DNS issue on Docker for Windows
v3.9.0 - 2021-10-09
- Update Spleeter to 2.3.0 (which uses Tensorflow 2.5.0)
- Update GPU Dockerfile to use CUDA 11.2.0/cuDNN8 and latest nnabla package
- Switch from youtube_dl (inactive project) to yt_dlp which fixes slow YouTube download speeds
- Fix issue with using Docker on Windows where YouTube videos would not download
- Update dependencies
v3.8.0 - 2021-06-25
- Docker: Add environment variables
DEV_WEBSERVER_PORTandNGINX_PORTto configure which ports to use on host machine for webserver
- Docker: Unexpose Redis port
6379on host machine
v3.7.0 - 2021-06-21
- Support for D3Net model! Big thanks to Sony AI Research for making it open-source (paper).
- Fix GPU Docker image so that GPU-accelerated separation works properly with Spleeter
- Update
youtube-dl - Fix YouTube metadata parsing on certain types of videos
v3.6.1 - 2021-06-14
- Add back Demucs Light variant mapping
- Update more dependencies (security fixes)
v3.6.0 - 2021-06-13
- Update Demucs to v2, which offers higher quality separations and smaller models
- Allow all hosts when running in dev mode
- Update dependencies
v3.5.2 - 2021-04-16
- Update dependencies
v3.5.1 - 2021-02-15
- Suppress discovery_cache warnings related to YouTube data API calls
- Update dependencies
v3.5.0 - 2021-02-07
- Ability to download individual parts of a dynamic mix
- Action buttons appear greyed out after pressed while waiting for backend API response
v3.4.0 - 2021-02-06
- Support additional audio formats
- Full list:
.aac, .aif, .aifc, .aiff, .flac, .m4a, .mogg, .mp3, .oga, .ogg, .opus, .wav, .weba, .webm
- Full list:
- Ability to edit source track artist and title information
- In the song table, just click on the cell to edit its value. Then press
enteror click elsewhere to save.
- In the song table, just click on the cell to edit its value. Then press
- Improve YouTube link parsing logic
- Increase max file size upload limit to 100 MB
- You can override this by changing
UPLOAD_FILE_SIZE_LIMITinsettings.py/settings_docker.pyandMAX_FILE_BYTESinConstants.tsx
- You can override this by changing
- Increase max YouTube video length to 30 minutes
- You can override this by changing
YOUTUBE_LENGTH_LIMITinsettings.py/settings_docker.py
- You can override this by changing
- Update Node dependencies
v3.3.1 - 2021-01-30
- Fix bug where Spleeter static mixes would fail
v3.3.0 - 2021-01-18
- Support X-UMX CPU separation
- Make dynamic mix player timestamp more consistent
v3.2.0 - 2021-01-17
- Solo track functionality to dynamic mixer
- Keyboard controls for dynamic mixer
- Play/pause:
spacebar - Mute/unmute:
1/2/3/4 - Solo/unsolo:
Q/W/E/R(hold eitherCtrl/Cmd/Shiftto solo/unsolo multiple parts)
- Play/pause:
- Pressing space bar on home page should play/pause current track without scrolling to bottom
- Spleeter: Update to v2.1.2
- Spleeter: use
STFTBackend.LIBROSAfor CPU separation andSTFTBackend.TENSORFLOWfor GPU separation
v3.1.1 - 2021-01-14
- Update
react-music-playerwith bug fixes
v3.1.0 - 2021-01-13
- Environment variables to support custom domains such as for CDNs
- Use "title - artist" format everywhere
- Update
react-music-playerto use non-linear volume slider and gradual fade-ins/fade-outs - Update dependencies
v3.0.0 - 2021-01-08
- GPU-enabled Docker images (CUDA 10, CUDNN 7) which can accelerate separation process
- Use
docker-compose.gpu.ymlanddocker-compose.build.gpu.ymlinstead ofdocker-compose.ymlanddocker-compose.build.ymlfor GPU images - See updated instructions for more info
- Tested on NC6 Promo Azure VM
- Use
- Support for Sony AI's CrossNet-Open-Unmix (X-UMX) source separation model (NNabla implementation). At the moment it only works with GPU, not CPU. #52 tracks this issue.
- User configurable parameters: number of iterations, softmask, softmask alpha
- Custom bitrates (MP3 CBR) for static and dynamic mixes at: 192 kbps, 256 kbps, and 320 kbps
- Improved dynamic mix processing times by parallelizing the MP3 export process
- Reduced memory consumption of Demucs/Tasnet models by using splitting
- Update dependencies
- Overwrite option for static mixes (you can always delete specific mixes)
v2.0.1 - 2020-12-30
- Indent mix table to make it easier to see
- Update Demucs dependency
v2.0.0 - 2020-12-29
- Support for Facebook Research's Demucs and Tasnet source separation models, including "light" and "extra" variants
- Demucs and Tasnet models have a "random split" parameter that can help improve separation quality
- New labels to indicate the model and parameters used to generate a mix
- New refresh button that also indicates the time remaining until next auto-refresh
- Add brief fade-in and fade-out to dynamic mix player
- Show separator badge in music player
- Dynamic mixes now appear as part of the mix table
- Use more descriptive and cleaner file naming scheme for generated files
- Minor touch-ups to overall interface
- Fix bug where sort order of mix table gets reset after a few seconds
- Fix "'ContentDisposition' is an invalid key" error when writing to Azure storage
- Fix bug where music player timestamp would show "00:60" instead of "01:00"
- Fix blank status badge
v1.2.0 - 2020-12-22
- New configurable settings for using AWS S3 as backend for serving media files
- A favicon
- Files uploaded to Azure Storage have
Content-Dispositionalways set toattachment - Fix issue with Dynamic Mixes where seeking occurs after long delay
psycopg2Python dependency
v1.1.0 - 2020-12-20
- Change database backend from PostgreSQL to SQLite
- If you are updating from a previous version, please backup your track list as the data in the DB will not carry over after updating! Your media files will not be impacted.
- On dynamic mix pages, the tab title shows the current track information
- Dynamic mix files are now saved as:
artist-title-part.mp3instead ofpart.mp3 - Correct service name in
docker-compose.prod.selfhost.yml - Use separate Celery queues for fast (YouTube imports) and slow (source separation) tasks
- For Docker, the fast and slow Celery workers run in separate containers
- Update dependencies
v1.0.0 - 2020-12-19
- Ability to delete individual static mixes
- Ability to delete source tracks and mixes while task is still in-progress
- Ability to cancel in-progress dynamic mix task
- New status icon column in the Track List table
- New requirement for Redis
- Make
AZURE_CONTAINERa configurable environment variable
- Fix bug where dynamic mix tracks may never finish loading
- Dynamic mixes open in new tab
- Change file deletion logic to also delete empty parent directories
- Make the "external link" icon a button in the YouTube search result list
- Switch from Huey to Celery for the task queue
- Celery allows terminating in-progress tasks
- Increase
YOUTUBE_LENGTH_LIMITto20 - Decrease API polling frequency to 5 seconds
- Update Spleeter to 2.0.2 (Python 3.8 now supported)
- Update Python and npm dependencies
- Update Docker images
- Periodic cleanup task
Pre-release - before 2020-12
Undocumented