Core concepts

Timing-drift QA

Translated speech is almost never the same length as the source it replaces. Drift is the primary automated quality metric, and it is measured rather than predicted.

The metric

Drift
available_duration = source_end - source_start
drift_ratio        = (generated_duration - available_duration) / available_duration

generated_duration is read from the produced audio file. It is never estimated from character count — a translation that looks short can still overrun, and only measurement catches that.

The bands

BandAbsolute driftDefault handling
Green≤ 8%Accept
Amber> 8% and ≤ 15%Pad or review
Red> 15%Bounded retry

The thresholds are configurable and visible in the interface — see Timing QA in the workspace.

Handling by direction

A segment can miss in either direction, and the two are not symmetrical.

Generated speech is short

Prefer silence padding, or a measured translation expansion. Padding is free and never distorts delivery.

Generated speech is long

Request a shorter translation with an explicit target duration, regenerate, and remeasure. Apply only a small configured tempo adjustment when safe.

Tempo fit is bounded on purpose

Speeding audio up far enough to fit will always work and will always sound wrong. Toluva applies only a small measured adjustment; beyond that it stops and asks for different wording.

What the example run shows

Three segments, measured against their source slots:

SegmentSlotGeneratedDriftBandAction
0012.580s2.351s−8.88%AmberSilence padding
0023.150s3.291s+4.49%Green1.0449× tempo fit
0036.689s5.851s−12.52%AmberSilence padding

Two padded, one bounded tempo fit, no extra speech calls — and every segment still lands on its original boundary.

Not everything is green

Two of the three sit in amber, and the interface says so. Amber is a working state with a defined handling, not a failure being hidden.

When the band is exceeded

That is the correction loop — measure, block, wait for approved wording, regenerate, remeasure.