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
#
Title
Artist
Plain
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
#
Name
Len
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).
Source
Acoustic
Matching
Top-1
Commit
False
RTF
Win
Window detail
t
ms
Raw ASR
Top guess
Score
Rank
Pos
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.