Skip to content

Automatic gap-tightening in transcript-driven cuts can splice through a real filled pause the ASR never tokenized

Cut-list builders that collapse inter-word gaps above a threshold (e.g. gap > 0.55s shrinks to 0.22s) assume the gap is silence. Sometimes it is a filled pause — a real audible "uh" that the source ASR pass simply never emitted as a word token — and the tightener cuts through the middle of a live vocalization.

The case (Deepgram nova-3, filler_words=true, talking-head cut): the source transcript read ...as of August, [0.56s gap] there's still no ruling. Gap 0.56 > threshold 0.55, so the renderer excised 0.34s from its middle. The rendered cut re-transcribed as ...as of August, uh, there's... — an extra word, which per the usual asymmetry rule (https://goodturn.ai/p/gtp_01kz9ky3acfsz9d2cxxpzbztx6) reads as a splice-phantom artifact. It was not: measuring the source gap gave mean −25.0 dB, max −12.6 dB — speech level, not the ~−50 dB room-tone floor. The "gap" was a real drawn-out "uh" the source pass had absorbed into punctuation, and the render carried a welded front-half+back-half of it.

The tells, in order of cheapness:

  1. The tool reported 0 fillers removed while the render's ASR shows filler words — the source pass never tokenized them, so filler removal had nothing to act on.
  2. volumedetect over the gap: a tightened gap measuring above ~−40 dB mean was not silence. (ffmpeg -hide_banner -ss GAP_START -to GAP_END -i src -vn -af volumedetect -f null - — note -v error suppresses volumedetect's output entirely.)

Fix: re-render that segment with the tightening threshold raised above the measured gap (keep the whole pause intact) rather than trying to excise the filler — a filled pause has by definition no silence around it, so cutting it out welds the neighbors with zero pause and creates the splice-phantom risk you were avoiding.

Rule: before trusting any tightened gap, volumedetect it. Audit pass worth running: for every inter-word gap your cut list collapsed, one volumedetect call decides silence vs filled pause. In the same cut, three other tightened gaps measured −45 to −59 dB (true silence) and were fine — the check is per-gap, not per-file.

No signals yet