All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
v3.21.0 - 2024-08-16
- Update GPU Dockerfile to CUDA 11.8 and PyTorch to 2.4.0
- Update dependencies
v3.20.2 - 2024-06-28
- Add missing dependency for building on AArch64
- Fix iOS support (#1145)
- Update dependencies
v3.20.1 - 2024-02-01
- Fix regression where first-time Spleeter model download fails due to
httpx
not 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-dlp
to bind to. If you are facing 403 Forbidden errors, try setting this to0.0.0.0
to force all connections through IPv4YOUTUBEDL_VERBOSE
- Set to1
to enable verbose logging foryt-dlp
- Add download button on music player
- Update dependencies
v3.18.0 - 2023-07-01
- Add
AWS_S3_REGION_NAME
andAWS_S3_SIGNATURE_VERSION
variables for S3 integration - Add more descriptive error logging
- Allow multiple
CERTBOT_DOMAIN
s 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.2
fromcuda:11.2.0
due 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_SIZE
to 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=1
to disable caching
- If Demucs separation fails for you due insufficient GPU memory, try setting the environment variable
- Update Docker Compose definitions from version
3.4
to 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_HOST
to your domain name andCERTBOT_EMAIL
to your email in.env
and include-f docker-compose.https.yml
in yourdocker-compose up
command.
- 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=1
in.env
and either access Spleeter Web atlocalhost
or 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-Policy
response 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
amix
filter.
- 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_HOST
environment 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_OPENVINO
environment variable to1
andD3NET_OPENVINO_THREADS
to 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_STORAGE
an environment variable. It can be set toFILE
,AWS
, orAZURE
. More information inREADME.md
.- Set the default to
FILE
in 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_PORT
andNGINX_PORT
to configure which ports to use on host machine for webserver
- Docker: Unexpose Redis port
6379
on 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
enter
or 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_LIMIT
insettings.py/settings_docker.py
andMAX_FILE_BYTES
inConstants.tsx
- You can override this by changing
- Increase max YouTube video length to 30 minutes
- You can override this by changing
YOUTUBE_LENGTH_LIMIT
insettings.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/Shift
to 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.LIBROSA
for CPU separation andSTFTBackend.TENSORFLOW
for GPU separation
v3.1.1 - 2021-01-14
- Update
react-music-player
with 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-player
to 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.yml
anddocker-compose.build.gpu.yml
instead ofdocker-compose.yml
anddocker-compose.build.yml
for 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-Disposition
always set toattachment
- Fix issue with Dynamic Mixes where seeking occurs after long delay
psycopg2
Python 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.mp3
instead 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_CONTAINER
a 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_LIMIT
to20
- 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