Repository navigation
Segmenting a concert from AudioSet tags, and matching it to the setlist - #1
Merged
Merged
Conversation
`concert.classify_regions` reads a hall from spectral flatness, calibrated on one camera-mic concert; it hears loud rock as applause and noise music as "other", and `find_songs` found seven of nine pieces at IMV's semester-start concert. The new `tagging` module does the same job from PANNs posteriors (ambiscape.ml.tag_frames): group max over labels, a weighted per-frame decision with a level gate, a majority filter, run-length spans, per-class minimum durations, `absorb_other` (loud sound that is neither speech, applause nor silence, beside music, is the piece), snapping to the song finder, and `refine_music_onsets`, which moves each start back to where the sound begins so that a click on a piece does not land after the first note. Same span vocabulary, so the timeline and the exports work unchanged; `map_regions(method="panns")` and `segment --method panns` expose it. Nine of nine. `setlist` reads the running order (JSON, or the first table of the kjøreplan .docx) and aligns the detected pieces to it from the names the host says in the introductions: thank-yous belong to the act that just finished, a name after "vær så god" or "ved" is the act coming on, leftovers go by running order or continue the previous act, and the acts nobody was matched to come back as not detected. On the same concert that recovered a reordered programme with two cancelled acts. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PcjBSXbXjqdj1tmYHoLiKd
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PcjBSXbXjqdj1tmYHoLiKd
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PcjBSXbXjqdj1tmYHoLiKd
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.
Summary
musiscape.tagging(extramusiscape[tagging], needs ambiscape withml.tag_frames, see PANNs picks its device, and tags a whole recording frame by frame ambiscape#12): concert segmentation from PANNs posteriors.segment_concert(y, sr, songs=None, device=None)returns the usualspans(music / applause / voices / quiet / other). The chain:group_scores→decide_frames(weighted, level-gated) →mode_filter→runs_to_spans→enforce_min_duration→absorb_other→snap_to_songs→refine_music_onsets. Wired intoconcert.map_regions(..., method="panns", device=)andmusiscape segment --method panns --device auto.musiscape.setlist:load_setlist(JSON or.docxtable),align_setlist(pieces, acts)(name matching on the introductions with thank-you and cue handling, order fallback,not_detected),act_title.musiscape segment --setlist plan.docxwritessetlist.json(order-only without transcripts).docs/guide/concerts.md, CHANGELOG under Unreleased.On the IMV H26 semester-start concert (87 min, 9 acts performed of 11 planned, order changed): the heuristic found 7 pieces and read the rock set as applause; the PANNs chain finds 9/9, and the setlist alignment lands all 9 on the right act with the two cancelled acts and the participatory number left unmatched.
Test plan
tests/test_tagging.py: each step on synthetic posteriors, onset refinement on a synthetic quiet→tone signal, andsegment_concertend to end with a stubbed tagger (no PANNs needed).tests/test_setlist.py: thank-you handling, the reordered/cancelled programme, last-name-wins, title cleaning,.docxand JSON loading (docx generated in the test).map_regions(method="panns", device="cuda").🤖 Generated with Claude Code
https://claude.ai/code/session_01PcjBSXbXjqdj1tmYHoLiKd