Word and sound timing for real conversation. Fillers, laughs and coughs get their own place on the timeline.

Try to break it
20.6 ms
word-boundary error on conversational speech (Buckeye), 19% below the best of ten baselines
2.7×
fewer catastrophic misalignments (over 200 ms) than the best Montreal Forced Aligner model
418×
real time on a single NVIDIA L40 GPU, one 20-second clip at a time, as measured in the nyra speech timing benchmark

See every boundary. Then try to break it.

Every word, laugh and cut-off below is exactly as long as the aligner measured it. Select one to zoom in on its sounds, then pour in noise until you can barely follow the sentence.

Select a word to see its sounds

Pour in noise

Press play, then pour in noise while it runs.

Real output of the published model on one clip from the DisfluencySpeech corpus, re-aligned at every noise level with Gaussian noise. That corpus is part of the aligner's training data, so treat this as a demonstration: the benchmarks below are held out. Across Buckeye at 0 dB SNR with Gaussian noise, the nyra aligner misplaces words by 96 ms on average, MFA us_arpa by 417 ms.

Where other aligners break

Word boundaries scored against manual annotations on held-out conversational speech. The gap opens where speech gets messy: next to a laugh, and as the noise gets louder.

Buckeye · additive MUSAN noise · word-boundary MAE in ms vs. SNR · lower is betterBoundary error as the noise gets louder
nyra forced alignerours without noise-paired LDACrisperWhisper 2.0Qwen3-FAMFA us_arpa
Boundary error as the noise gets louder015030020 dB10 dB5 dB0 dB50 ms74 ms56 ms154 ms281 ms
MFA at the wide beam; at its defaults most utterances fail to align under heavy noise. CrisperWhisper 2.0 transcribes rather than aligns and is scored only on the words it recognises.
Buckeye · regular words adjacent to a laugh (n = 722) · MAE · lower is betterBoundary error next to laughter
nyra forced alignerother aligners
nyra forced aligner
52.8 ms
52.8 ms
CrisperWhisper 2.0 · ASR
82.3 ms
82.3 ms
NeMo FA
105.8 ms
105.8 ms
MFA our_data
120.4 ms
120.4 ms
WhisperX
137.9 ms
137.9 ms
MMS-FA
154.2 ms
154.2 ms
MFA us_arpa
173.8 ms
173.8 ms
Qwen3-FA-0.6B
180.4 ms
180.4 ms
CTC-Segmentation
227.6 ms
227.6 ms
MFA english_mfa
230.2 ms
230.2 ms
Charsiu
269.5 ms
269.5 ms
Only CrisperWhisper 2.0, the one other system that models vocal events, comes close.

Use it

Give it audio and a verbatim transcript. It returns every word, filler, vocal sound and cut-off, each with its own start, end and phones. English for now. Words outside the built-in 41k-word lexicon need espeak-ng, and the model downloads from Hugging Face on first use.

Python

# pip install nyra-forced-alignerfrom nyra_align import Aligneraligner = Aligner()result = aligner.align(    "clip.wav",    "Just change our p- but that's [laughter] "    "just change our priorities a little bit",)for w in result.words:    print(f"{w.start:.2f}  {w.end:.2f}  {w.word:<11} {w.type}")result.to_textgrid("clip.TextGrid")result.to_json("clip.json")
0.00  0.26  Just        w0.26  0.54  change      w0.54  0.93  our         w0.93  1.10  p-          c1.70  2.05  but         w2.05  2.44  that's      w2.50  2.85  [laughter]  s3.32  3.51  just        w3.51  3.74  change      w3.74  3.86  our         w3.86  4.49  priorities  w4.49  4.55  a           w4.55  4.76  little      w4.76  4.98  bit         w

Research and non-commercial

Free under the nyra health Non-Commercial Research License. Runs on CPU, with a GPU strongly recommended.

API

The aligner is not on the API yet. Tell us if you need it, so we can prioritise it.

In a product

Commercial use of the model or its timestamps needs a license. The noise-robust Pro model is commercial only.

For researchers

The method, the full benchmarks, and where to find the weights and code.

Made for CrisperWhisper transcripts

Transcribe with CrisperWhisper 2.0, align with the nyra forced aligner, and every laugh and uh in the audio has a segment to belong to.

CrisperWhisper 2.0