---
title: "Word timing and forced alignment"
url: https://recursiveai.org/onespeech/docs/word-timing/
description: "Every Word has nullable Start and End, nullable Confidence, and TimingMethod. Times are TimeSpan values on the original audio clock, not processing time.…"
version: "1.0.0"
source: https://github.com/recursive-ai-oss/onespeech-csharp/blob/63002de486786163a0a7800a51811e76d511fae6/docs/word-timing.md
---

# Word timing and forced alignment

Every `Word` has nullable `Start` and `End`, nullable `Confidence`, and `TimingMethod`. Times are `TimeSpan` values on the original audio clock, not processing time. Missing boundaries remain null; confidence is not inferred from having a boundary. Speaker assignment cannot fill missing timing.

The timing preference is **native → Qwen3-ForcedAligner → omniASR-CTC → DTW**, subject to model and language coverage. The pipeline asks registered timing aligners in order; it is not permission to claim a method a loaded family cannot provide. Qwen recognition uses its paired aligner; Whisper's default file path uses the omniASR CTC aligner rather than labelling DTW as native. Parakeet supplies native timing. Provenance distinguishes `Native`, `ForcedAligner`, `CtcAligner`, `Dtw` and `None`.

The standalone `Speech.Align(path, text, language: ...)` helper currently uses omniASR-CTC by default, accepts at most 60 seconds, and downloads the roughly 1.3 GB model on first use. Passing a `Transcript` preserves its written words and non-timing fields instead of re-splitting its text. Stream overloads do not own the caller's stream. Empty or unalignable targets never justify fabricated times. See [CTC alignment](https://recursiveai.org/onespeech/docs/ctc-alignment/) and [Qwen3](https://recursiveai.org/onespeech/docs/qwen3/) for supported language and model details.

Alignment maps supplied text to audio; it does not prove that every supplied word was spoken. Check null boundaries and the [measured errors](https://recursiveai.org/onespeech/docs/results/#timing) before using timestamps as evidence. The Qwen toolkit post-processing difference is still a known gap. No method is sample-accurate ground truth.
