Forced alignment in the wild
Word-level forced alignment estimates when each transcript word occurs in a recording. It underpins text-based media editing, subtitling, speech-data curation, and phonetic analysis. Existing evaluations understate how hard the task is: they use short, clean speech, perfect transcripts, and metrics that hide the errors that matter. Real pipelines run on long, diverse recordings and on error-prone ASR output.
We address these gaps with improved evaluation metrics, a scoring protocol for real ASR transcripts, and AlignBench, a benchmark spanning diverse speaker, acoustic, and text conditions. We further introduce FuseAlign, a transformer aligner trained on large-scale pseudo-labeled speech with online label correction. It jointly contextualizes audio and text to localize words coarsely, then refines boundaries at millisecond resolution and detects missing transcript words, without lexicon-based or Viterbi decoding. On AlignBench, FuseAlign substantially outperforms all baselines and stays robust under real ASR transcripts.
The conventional metrics are the absolute boundary error and per-boundary tolerance rates, computed over the words an aligner chose to place. Each metric misleads when the alignment is used for editing:
Given below are some snippets from AlignBench which motivate the new metrics. For each one, play the context, then the word as the reference places it and as Gentle places it, then delete the word with each set of boundaries. The deletion is the honest test: it is the edit a user would make.
No examples in this build. Mine candidates with mine_asym_examples.py, listen, and pass the
keepers to build_site.py --asym-example.
TIMIT and Buckeye, the two most commonly used benchmarks for forced alignment, contain recordings of American English speakers, are single-speaker and are recorded under one condition each. To better reflect diverse real-world editing workloads, we created AlignBench, which pools 73 clips from People's Speech, VoxPopuli, and AMI, selected so that their audio, speaker, and transcript statistics match a private sample of real recordings processed by Descript. Selection was frozen before any aligner was evaluated on the pool.
Some high-level statistics of the benchmark: 8,072 words and 0.83 h of long-form, accented, noisy, single- and multi-speaker speech, with 9.6% of words in difficult written forms (numbers, currency, acronyms, named entities). Three annotators independently placed every boundary. All audio is redistributable under its source licence (CC BY / CC0); our transcripts, boundaries, ASR outputs, and evaluation code are CC BY 4.0.
We then built FuseAlign, a model designed from scratch for forced alignment. It is a transformer-based aligner that separates global word localization from local boundary refinement. A joint audio–text transformer matches transcript words to coarse regions of the recording; convolutional heads then refine each start and end on a 1 ms grid. Every word, and each of its two edges, is localized independently, so a transcript mismatch does not shift its neighbours, and a presence head rejects words that were never spoken, as with I in the example below. It is trained on roughly 78,000 hours of pseudo-labeled speech.
Baselines: Gentle, MFA 3.0, Nyra
, MMS-FA and WhisperX.
Each cell of the
main table contains aligner metrics on using hand-corrected / Scribe / Whisper transcripts for the same audio.
We observe that on AlignBench, FuseAlign substantially outperforms all baselines and stays robust under real ASR
transcripts.
Both catastrophic-error rate and mean error are substantially lower for FuseAlign, indicating that it can
detect words in tricky conditions and at the same time, also obtain sharp boundaries.
Nyra leads on clean, read TIMIT speech and Buckeye sits between the regimes: FuseAlign is better in the tail,
Nyra at fine tolerances and in the mean. HMM aligners with strong acoustic front-ends stay very precise on
narrow,
carefully annotated speech while FuseAlign is robust on diverse real-world workloads.
Given below are short AlignBench excerpts where the systems disagree. Each track shows where a system put every word; colours are the worst-edge asymmetric error against the hand-corrected reference, and a dash marks a word the system did not place. Click any word to play exactly the span that system chose, then click the same word in another track and compare.
No demos in this build. Mine candidate windows with mine_wins.py, listen, and pass the keepers
to build_site.py --demo.
Space stops playback · Esc clears the selection
The full paper, with metric definitions, the ASR protocol, benchmark construction, model details, ablations, and all appendices, is on arXiv.