Repository navigation
fix(vocal-split): say when Lead + Backing could not be made - #834
Merged
Merged
Conversation
A failed split left the song done with one Vocals stem, a bare 500 and
vocal_split "error", so nothing could say what went wrong.
- The worker reports a code with its error line, from the step that
failed: dependency_missing, model_unavailable, out_of_memory,
worker_failed. The parent adds timeout and cancelled.
- The job keeps vocal_split_reason (persisted) and to_state carries a
fixed safe sentence, vocal_split_message. No stderr, path or
traceback reaches the client.
- A record saved mid-split restores as error/interrupted, not a
"running" that refused every retry with 409.
- A cancel only applies to the run it was sent to, including one still
waiting for the pipeline lock.
- Setup warmup and real splits remember the outcome in the data
folder; /api/health reports vocal_split {available, reason},
unavailable only for a missing dependency on the same package
versions, so the #778 repair or an update switches it back on.
Choosing Lead + Backing and getting one Vocals stem used to say nothing. - A failed split shows a notice: Lead + Backing could not be made, why in one line from the server's code, and Try again, which runs the same vocal-split endpoint on the same song (no re-import, same queue and cancel behaviour). A card in the notification centre keeps it. A cancel shows nothing. - The Stems popover and Karaoke's Separate say why too, including for a song whose last split failed before a restart. - /api/health vocal_split: when a dependency is missing, Lead + Backing in the Extract row, the popover's split and Karaoke's Separate are shown off with the reason, like OGG without libvorbis. Imports then ask for Combined; the saved choice comes back once it is available. - Strings in all ten tables (plus pt-PT where it differs), a Guide row for the new Try again, a Playwright spec and a spec-map rule. Closes #832
thcp
marked this pull request as ready for review
October 22, 2026 16:48
This was referenced Oct 22, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #832
Likely cause on the reporter's install: the Linux CPU package shipped a CUDA torchvision (#778, fixed in 0.21.0). This PR fixes the second bug it exposed: a failed split ended with one Vocals stem and no word about it.
What changed
vocal_split_reason(persisted) plus a fixed safevocal_split_message. The failed request's 500 body carries the same. No stderr, path or traceback reaches the client.dependency_missing,model_unavailable,out_of_memory,worker_failed,timeout,cancelled,interruptedvocal-splitendpoint, same song, no re-import). Notification card keeps it. Cancel shows nothing./api/healthreportsvocal_split {available, reason}. A missing dependency shows Lead + Backing off with its reason (Extract row, popover split, Karaoke Separate), like OGG without libvorbis. Tied to package versions, so the CPU-only Linux package ships the cu124 torchvision wheel: warmup fails with "operator torchvision::nms does not exist" #778 repair or an update turns it back on.error/interruptedinstead ofrunning(which 409'd forever). A cancel applies only to its own run, including one waiting for the pipeline lock.What did not change
uv.lock.Tests
vocal-split-failure.spec.mjs: notice, Try again, cancel, popover reason, disabled and enabled option.Risks