Skip to main content
Turn spoken ASR text into written values such as phone numbers, dates, times, amounts, email addresses, URLs, and identifiers. Premove ITN uses sentence context to choose between valid interpretations.
In the frozen evaluation, the same spoken value could be mistaken for a time. Premove selected the room code in this example.

Why voice agents need ITN

Speech recognition returns text in the form people say it. A tool often needs a structured value instead: seven eight three two nine becomes an order ID, and twenty dollars becomes an amount. A formatting mistake can become a failed lookup or an invalid tool argument. Learn where ITN fits in a voice-agent pipeline.

How Premove works

Rust generates valid written candidates. A frozen DeBERTa scorer uses the full sentence to rank them. An exact decoder selects compatible edits and can leave text unchanged when an edit is not justified. The model cannot output a form that the deterministic candidate layer did not generate. Read the illustrated explanation.

What it can write

These are supported candidate forms, not a promise that every sentence will select that candidate. Context determines the final output. See supported forms and boundaries.

Measured results

Premove ITN scored 398/400 (99.50%) on the voice-agent subset of its frozen synthetic stress benchmark. Its overall semantic entity accuracy was 89.70% across the 1,500-row suite. Mean warm latency was 56.49 ms on the measured Apple M4/MPS setup. The benchmark is not a production-traffic accuracy estimate; Premove was also slower than both comparison backends. See the full comparison, method, and limitations.

Install and try it

The first use downloads about 1.6 GB of model files. Load one instance and reuse it for later requests. The frozen-model release is validated on Apple Silicon MPS and Linux x86-64 CPU; see deployment for the complete platform boundary.

Open source and open weights