The room also measures the recording. `lyrics_vocal_activity` is the desktop's coarse vocal-band envelope — the centre channel band-passed to 180 Hz – 7.5 kHz, one value per 100 ms, read on a blocking thread — and it draws as a strip under the head, so the singing ahead is visible while the thumb waits for it. **Estimate the timing** lays every line across the stretches the envelope says are sung, weighted by line length, through the desktop's own generator (`src/lib/lyric-sync.js`, shared and unit-tested): never an even spread over the duration, and a refusal rather than a guess when the measurement shows nothing usable. The result is labelled an estimate everywhere it shows — the hint under the line, the Save button — the cursor goes back to the top so the taps correct it from there, and one more tap on the button drops the whole thing back to an empty set (a rough fill stamps every line at once, so Undo has nothing left to take back). A streamed track has no finished file to measure, so the button says there is no estimate for that one — the same rule the reduced-vocals copy follows, and the same whole-file decode behind both.