bf561a6c81
* Add on-demand lead/backing vocal split, fix stems relocation bugs, and eager model pre-download (#275, #403) Lead/backing vocal split: - New on-demand POST /api/jobs/{id}/vocal-split endpoint, running UVR-MDX-NET Karaoke 2 (audio-separator) as a second pass over Demucs's vocals.wav - Desktop and mobile UI toggle to request the split, auto-chained once the base separation finishes, for both foreground and background jobs - Mixer shows Lead Vocals / Backing Vocals lanes in place of Vocals once split Stems relocation fixes (#403): - user-data.json (library metadata) now lives inside the jobs folder so it follows a Settings relocation instead of staying behind in Documents - The relocation endpoint's settings persist step was silently swallowing write failures and reporting false success; it now reports persisted: false and the Settings UI shows a clear warning instead Desktop setup wizard: - Demucs, beat-this, and the karaoke model now download eagerly during first-boot setup instead of lazily on first use Also: - Credit audio-separator / Ultimate Vocal Remover in the README per its license's attribution requirement, plus a license audit in docs/models.md - Add models/ to .gitignore * ci: install build-essential so diffq (audio-separator's dependency) can compile diffq has no prebuilt wheel for Python 3.11+ on Linux, its last release only ever shipped cp310 wheels, so uv sync must compile it from source, which needs gcc. Docker and the Linux desktop release build already install build-essential for the same reason; the plain lint/test CI container never needed it before audio-separator (#275) pulled diffq in. * chore: pin Unraid template to 0.12.0 This PR ships as v0.12.0, per the user's decision given it introduces the new lead/backing vocal split feature. --------- Co-authored-by: Thales <>
54 lines
2.6 KiB
Markdown
54 lines
2.6 KiB
Markdown
# Model licensing notes
|
|
|
|
Records the license basis for ML checkpoints StemDeck downloads at runtime.
|
|
Not exhaustive -- only entries where the decision wasn't a simple upstream
|
|
license file are documented here.
|
|
|
|
## Demucs (htdemucs_6s)
|
|
|
|
MIT, published by the `demucs` PyPI package (Meta/Facebook Research). No
|
|
audit needed -- an unambiguous upstream license.
|
|
|
|
## UVR-MDX-NET Karaoke 2 (on-demand lead/backing vocal split, #275)
|
|
|
|
- **File**: `UVR_MDXNET_KARA_2.onnx`
|
|
- **Distributed via**: `audio-separator` (PyPI, MIT,
|
|
`nomadkaraoke/python-audio-separator`), which bundles/downloads models
|
|
trained as part of the Ultimate Vocal Remover (UVR) project by Anjok07.
|
|
- **License**: MIT + attribution, per the `audio-separator` README:
|
|
> "If you choose to integrate this project into some other project using
|
|
> the default model or any other model trained as part of the UVR project,
|
|
> please honor the MIT license by providing credit to UVR and its
|
|
> developers."
|
|
- **Credit**: Ultimate Vocal Remover (Anjok07) -- https://github.com/Anjok07/ultimatevocalremovergui
|
|
|
|
This is the shipped default (`VOCAL_SPLIT_MODEL` in `app/core/config.py`,
|
|
overridable via `STEMDECK_KARAOKE_MODEL`).
|
|
|
|
### Rejected alternative: mel_band_roformer_karaoke (aufr33/viperx)
|
|
|
|
`audio-separator`'s community-trained roformer checkpoint
|
|
(`mel_band_roformer_karaoke_aufr33_viperx_sdr_10.1956.ckpt`) has meaningfully
|
|
better reported SDR than the MDX-Net Karaoke 2 model above, and was the
|
|
originally preferred choice while scoping this feature. It was rejected after
|
|
directly verifying:
|
|
|
|
- No LICENSE file was ever published for this checkpoint, nor a stated
|
|
license anywhere in its distribution.
|
|
- It was originally released through UVR's Boosty supporter-paywall page, not
|
|
as a public open release.
|
|
- The public Hugging Face mirror (`jarredou/aufr33-viperx-karaoke-melroformer-model`)
|
|
now returns 401 (gated/removed) -- confirmed directly, not secondhand.
|
|
|
|
A cleanly-licensed roformer alternative (Kimberley Jensen's
|
|
`Mel-Band-Roformer-Vocal-Model`) was also checked and found to have no
|
|
LICENSE file despite a claim to the contrary surfacing in a web search.
|
|
|
|
Since StemDeck is free/non-commercial, the practical risk of using an
|
|
unlicensed-but-freely-shared community checkpoint is low -- but a
|
|
Boosty-paywall origin is a step past "unlicensed," suggesting the author did
|
|
not intend it for free redistribution at all, and its already-dead HF mirror
|
|
makes it an unreliable thing to depend on regardless of the licensing
|
|
question. `STEMDECK_KARAOKE_MODEL` remains available as an env override for a
|
|
deployment that wants to accept that risk itself.
|