notes: judge low confidence against the song, and flag unsingable words #28

Merged
branderson merged 1 commits from relative-confidence into main 2026-10-11 00:45:45 -07:00
Collaborator

Summary generated by LLM agent

Fixes #17.

On sung vocals the low-confidence flag marked 73–99% of notes, so neither the review's highlighting nor the end-of-run warnings pointed anywhere in particular.

What the data showed

Measured on two real songs' existing alignment and pitch files, without running any model. As known-bad words I took ones nobody could sing as aligned: under 0.08s, stretched over 3s, or under 25% voiced.

  • The alignment score does separate bad words from good ones. It ranks a bad word below a good one about 78% of the time on both songs, and bad words' median score is 6–10× lower.
  • The score's scale differs a lot between songs: medians of 0.08 and 0.28. A fixed cutoff can't work for both.
  • The score alone catches only about half the known-bad words. The rest are confidently aligned but impossible, such as a word stretched across an instrumental break.

Rule

A word is low-confidence if:

  • it scores below 0.25× the song's median score, or
  • it lasts under 0.08s or over 3s.

Words with no voiced pitch are flagged as before. Flagged notes less than 2s apart now share one warning.

notes flagged low-confidence warnings
song A, before 99% a few runs spanning most of the song
song A, after 33% 21
song B, before 73%
song B, after 35% 29

Song A's 10-second stretched word (the subject of #15) now gets its own warning, "20 low-confidence notes near 1:22–1:32", where before it was lost in a song-wide run.

Testing

  • test_build_notes_low_score_word_flagged is replaced. It flagged a lone word for scoring 0.1, but under a relative rule a single word is its own median.
  • New tests: a word scoring far below the rest is flagged; a uniformly low-scoring song isn't; words too short or too long to sing are flagged whatever their score; flagged notes close together share one warning.
  • Full suite passes, except test_version (needs the package installed).

Existing songs pick this up with Restart from set to notes, or for every song at once with REBUILD ALL FROM… notes.

**Summary generated by LLM agent** Fixes #17. On sung vocals the low-confidence flag marked 73–99% of notes, so neither the review's highlighting nor the end-of-run warnings pointed anywhere in particular. ## What the data showed Measured on two real songs' existing alignment and pitch files, without running any model. As known-bad words I took ones nobody could sing as aligned: under 0.08s, stretched over 3s, or under 25% voiced. - The alignment score does separate bad words from good ones. It ranks a bad word below a good one about 78% of the time on both songs, and bad words' median score is 6–10× lower. - The score's scale differs a lot between songs: medians of 0.08 and 0.28. A fixed cutoff can't work for both. - The score alone catches only about half the known-bad words. The rest are confidently aligned but impossible, such as a word stretched across an instrumental break. ## Rule A word is low-confidence if: - it scores below 0.25× the song's median score, or - it lasts under 0.08s or over 3s. Words with no voiced pitch are flagged as before. Flagged notes less than 2s apart now share one warning. | | notes flagged | low-confidence warnings | |---|---|---| | song A, before | 99% | a few runs spanning most of the song | | song A, after | 33% | 21 | | song B, before | 73% | | | song B, after | 35% | 29 | Song A's 10-second stretched word (the subject of #15) now gets its own warning, "20 low-confidence notes near 1:22–1:32", where before it was lost in a song-wide run. ## Testing - `test_build_notes_low_score_word_flagged` is replaced. It flagged a lone word for scoring 0.1, but under a relative rule a single word is its own median. - New tests: a word scoring far below the rest is flagged; a uniformly low-scoring song isn't; words too short or too long to sing are flagged whatever their score; flagged notes close together share one warning. - Full suite passes, except `test_version` (needs the package installed). Existing songs pick this up with **Restart from** set to `notes`, or for every song at once with REBUILD ALL FROM… `notes`.
dejima-agent added 1 commit 2026-10-10 23:33:24 -07:00
notes: judge low confidence against the song, and flag unsingable words
tests / test (pull_request_target) Successful in 4m18s
c0b782baa9
A fixed 0.5 alignment-score cutoff flagged 73-99% of notes on sung
vocals, so the flag pointed nowhere. Scores still separate bad words from
good ones, but their scale differs from song to song: flag a word below a
quarter of the song's median score, or one shorter than 0.08s or longer
than 3s, which no singer produces and which a word stretched over
something else does. Flagged notes less than 2s apart share one warning.
branderson approved these changes 2026-10-11 00:45:39 -07:00
branderson merged commit 8739033cf7 into main 2026-10-11 00:45:45 -07:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: branderson/songtrace#28