v0.1.1
SETUP
RECORD
RUN
RESULTS
LIVE

1. Candidate set (setlist)

One song per line: Title - Artist. This is the closed candidate set the matcher has to choose from — same assumption as the real show.

Songs

#TitleArtistPlain Synced

Synced = LRCLIB returned time-stamped lyrics. The production app currently throws these away (plainOf() strips [mm:ss.xx]); LyricLab keeps them, because they are what the song-structure guide needs.

2. Capture material

0.0s

Recorded at 16 kHz mono (what Whisper wants). Stored in IndexedDB so the same take can be replayed through every configuration.

Recordings

#NameLen Ground truth (song)

3. Sweep configuration

The sweep runs in two phases. Phase 1 runs ASR once per acoustic config (separation × preprocessing × window × model × dtype × device × language) and caches the transcripts. Phase 2 re-scores every matching config (hallucination filter × normalisation × matcher × threshold) against those cached transcripts, which costs nothing. That is what makes a full cartesian sweep practical.

Sources

Only recordings with a ground-truth song can be scored.

Acoustic axes (expensive — phase 1)

Matching axes (free — phase 2)

4. Results

Top-1 = share of scored windows where the true song ranked first. Commit = seconds until the decision logic first locks onto a song. False = commits to the wrong song. RTF = inference time ÷ audio time (<1 is real-time).

SourceAcousticMatching Top-1Commit FalseRTFWin

5. Live check

Runs one single configuration in real time off the microphone — the closest thing to the real show. Use the sweep to pick a config first, then confirm it here.

Now

best candidate
score
position in song
inference ms