Speech and audio
Transducers and Streaming Recognition
Explain RNN-T style encoders, prediction networks, joint networks, blank transitions, streaming state, and latency tradeoffs.
By the end you can
- Define transducers and streaming recognition as an operational problem with explicit inputs, outputs, and boundaries
- Distinguish ctc streaming, transducer streaming, and chunked attention without treating them as interchangeable
- Trace the workflow from encode available audio through commit partial results
- Evaluate transducers and streaming recognition using first-token, partial, final, and endpoint latency and evidence from difficult deployment slices
Streaming architecture does not buy low latency
A transducer is three parts working at once. An acoustic encoder turns audio into a representation. A prediction network summarizes the output labels already emitted. A joint network puts the two together and either emits the next label or emits blank. The arrangement was defined in 2012. Alex Graves named the two RNNs the transcription network and the prediction network, and extended the output space with a null symbol whose "intuitive meaning" is 'output nothing'. The alignment lattice then advances through acoustic time and through output history. That is what lets it recognize incrementally, without having to hand a label to every frame.
That is a real capability. It is not the same purchase as speed. Streaming architecture guarantees neither low perceived latency nor stable partials. Chunking, lookahead, endpointing, beam search, hardware, commit rules and revision policy jointly determine what the user experiences. The model is one contributor out of seven. Google's own paper on shipping a streaming recognizer to phones states the target in user terms rather than model terms. The system must be at least as accurate as a conventional one “without increasing latency (i.e., the delay between the user speaking and the text appearing on the screen), thus running at or faster than real-time on mobile devices”.
Two families of numbers describe the result, and they measure different things. First-token, partial, final and endpoint latency ask how quickly words arrive. Partial-result stability and revision distance ask how much they move once they have. Neither stands in for the release decision on its own. A system can look good on one and fail the other. Both families have been measured on a shipped recognizer. That measurement is where this lesson goes next.
The architecture choice is the cheap part of latency; what a user feels is set by commit rules, endpointing, and how often the text rewrites itself.
Example
Eleven unstable words for a nine-word transcript — and half of them were not the audio
Eleven words moved on screen to produce a nine-word transcript. That is one utterance from a shipped on-device recognizer, measured by Shangguan and colleagues in 2020. Their worked example is the whole problem in one row. The unstable partial word ratio is 11/9 = 1.22. Five segments were unstable over that single utterance, an unstable partial segment ratio of 5/1 = 5.0. More words moved than ended up in the transcript. The sentence was rewritten five times in front of whoever was reading it. Nothing there is a broken recognizer. It is a product that never decided the point at which a word on screen becomes a word the user is allowed to act on.
The same paper breaks the instabilities down, and the breakdown contradicts the intuitive story that partials move because the decoder heard more audio. Only 52.4% of observed instabilities are streaming instability. The remaining 47.6% come from text normalization: capitalization 24.7%, punctuation and spacing 21.2%, numerals 1.7%. Nearly half the rewriting a reader sees has nothing to do with acoustics at all. No amount of extra lookahead removes it.
The transport then adds a budget that no comparison of models is counting. A numbered standard fixes it rather than estimating it. RFC 6716 states it: “The Opus codec scales from 6 kbit/s narrowband mono speech to 510 kbit/s fullband stereo music, with algorithmic delays ranging from 5 ms to 65.2 ms.” A latency figure that names only the model is not the figure a user feels.
- One chain has to be understood together: the acoustic encoder, the prediction network over prior labels, the joint network, the blank transitions that move the alignment along, the streaming state carried between chunks, and the latency tradeoffs the whole arrangement exists to manage.
- The measurable failure is the ordinary one. Model emission time was counted. The endpoint decision and the 5 ms to 65.2 ms of Opus algorithmic delay were not.
- What exposes it is the whole latency set measured end to end — first token, partials, final and endpoint — set beside UPWR and UPSR, rather than the first of the four on its own.
- Part of the repair is not a model change at all. Text normalization caused 47.6% of the instability, so capitalization, punctuation and numeral rules are a commit-policy decision as much as the decoder is.
Position
Real-time factor belongs to a run, and runs happen on hardware
A figure that names only the model usually arrives as a single multiplier. The multiplier describes a run rather than a model. Google's mobile RNN-T paper shows this on one unchanged architecture. The same 120M-parameter word-piece model moves from RT90 1.43 in float, to 1.03 with asymmetric quantization, to 0.51 with symmetric quantization — a 64% reduction in real-time factor from numeric precision alone. Word error rate barely moved with it: 7.0%→7.3% on voice search, 4.1%→4.2% on dictation (the IME test set). Three real-time factors, one model. Whatever the multiplier is a property of, it is not the architecture.
The cross-model numbers behave the same way. Read them in pairs, not as headlines. The Open ASR Leaderboard's long-form English track, published in 2025, puts NVIDIA Parakeet CTC 1.1B at 6.68% average WER and 2793.75 RTFx. OpenAI Whisper Large v3 takes 6.43% WER at 68.56 RTFx. NVIDIA FastConformer CTC Large runs at 5531.13 RTFx and pays 11.14% WER for it. The authors put the trade in one sentence: “As in the short-form setting, NVIDIA's CTC- and TDT-based models significantly improve throughput with only moderate losses in quality, making them particularly well suited for large-scale or offline transcription of lengthy audio.”
Note what that recommendation is for: large-scale or offline transcription. Throughput is not what a user waits for. Each of the seven contributors named at the start — chunking, lookahead, endpointing, beam search, hardware, commit rules, revision policy — adds to what the user waits through, and the Opus budget still owes its milliseconds. So a real-time factor leaves two questions to put to whoever quoted it. Which of those seven things does the number contain? And on what machine, at what numeric precision, was it measured?
One 120M-parameter model returned RT90 of 1.43, 1.03 and 0.51 depending only on quantization; a multiplier with no hardware attached is a claim about somebody else's server.
Example
Partial stability is a promise to a user
Four terms carry that story, and two of them mean less than they appear to. Partial stability is a promise made to a user rather than a property of a model — UPWR and UPSR had to be defined before it could be counted at all. A blank transition is an alignment step rather than a silence. Graves is explicit about what the prediction network does, and about the option the null symbol adds: “The prediction network attempts to model each element of y given the previous ones; it is therefore similar to a standard next-step-prediction RNN, only with the added option of making 'null' predictions.” Words that pass for near-synonyms here can owe different proof, come in different units, and place the decision somewhere else entirely.
- The prediction network is the transducer component that summarizes the output labels emitted so far — in Graves's 2012 formulation, a next-step-prediction RNN with the added option of making 'null' predictions.
- The joint network is the component that combines the acoustic representation — Graves's transcription network output — with that label history, and chooses a label or the null symbol.
- A blank transition is an alignment step that advances or waits without emitting a label; Graves's extended output space is the label set plus a null symbol whose "intuitive meaning" is 'output nothing'.
- Partial stability is the persistence of an interim transcript across the decoding steps that follow it, measured as UPWR and UPSR over [0, ∞), with 0 the most stable.
Comparison
How much label history the decoder keeps, priced at 2.3 points
Label history is the axis these streaming designs differ on, and the prediction network is only one answer to it. CTC streaming works from acoustic context, with framewise label and blank predictions and no memory of what it has already written. Transducer streaming keeps that memory. Chunked attention reaches for context a third way, with bounded blocks and lookahead. Both buy more history than CTC does, at a different price.
The first of those differences was priced in 2012, on identical inputs. On the TIMIT core test set, Graves reports a phoneme error rate of 25.5% for CTC, 23.2% for the RNN transducer, and 72.9% for the prediction network alone. Label-history conditioning bought 2.3 percentage points over CTC. The label history by itself, with no audio, gets 72.9% of the phonemes wrong. Neither component is the system. The combination is. Graves states what each column measures: “Phoneme error rate, which is customarily presented as a percentage, is recorded for both the transcription network and the transducer. The error recorded for the prediction network is the misclassification rate of the next phoneme given the previous ones.”
That is 2.3 points, on one corpus, in 2012. It is not a constant. None of the three designs inherits the evidence of another — the same reason the Parakeet, Whisper and FastConformer rows settle nothing outside the long-form track they came from.
CTC streaming
Uses acoustic context with framewise label/blank predictions.
- Decision focus: Encode available audio
- Useful evidence: First-token, partial, final, and endpoint latency
- Watch for: Counting model emission time while ignoring endpoint and transport delay
- Best used when its assumptions are documented for transducers and streaming recognition
Transducer streaming
Adds a learned label-history network within the sequence model.
- Decision focus: Represent label history
- Useful evidence: Partial-result stability and revision distance
- Watch for: Aggressive early commits that later require correction
- Best used when its assumptions are documented for transducers and streaming recognition
Chunked attention
Uses bounded blocks and lookahead to approximate full-context attention.
- Decision focus: Combine and emit
- Useful evidence: WER under matched lookahead and compute
- Watch for: Prediction-network bias toward common phrases
- Best used when its assumptions are documented for transducers and streaming recognition
Visual
Committing a word is a policy
A system that returns text while the speaker is still talking makes three separate decisions, and the shipped recognizer above made all three. It encoded the audio it had so far. It committed words to the screen. It revised them afterwards — eleven unstable words for a nine-word transcript. Only the first two reach the user in time.
Keeping encoding, committing and revising apart matters because they are not decisions of the same kind. Encoding is a modeling choice. Committing is a product choice about what a reader may rely on. Revising is what the second choice costs when it is made too early. The cost is measurable in both directions: at a 200 ms partial emission interval, the more stable model shows a 71.6% improvement in UPWR and 68.8% in UPSR. Stability was bought. The next section says with what.
- 01
Encode available audio
Maintain causal or limited-lookahead acoustic state.
- 02
Represent label history
Use the prediction network to summarize previous nonblank outputs.
- 03
Combine and emit
The joint network chooses blank or a new label at each lattice state.
- 04
Commit partial results
Apply stability, latency, endpoint, and revision policy at the interface.
Committing partial results leans on an encoding of only the audio heard so far, and the word reaches the reader before revision can catch it.
Steps
Design a partial-transcript contract
The commit rule is a document, and a short one. For anything running in a browser, part of it already exists as a normative default rather than a team convention. The Web Speech API specification marks the boundary on the result itself: “The final boolean must be set to true if this is the final time the speech service will return this particular index value. If the value is false, then this represents an interim result that could still be changed.” MDN Web Docs states the same promise from the reader's side — “if not, then this result is an interim result, and may be updated later on”. And SpeechRecognition.interimResults defaults to false, so interim results are not returned at all unless the application asks for them. Step 1 below is therefore a decision to opt in, not an invention.
Steps 2 and 3 have a published price. “Changing the partial emission interval from 50ms to 200ms results in 75ms increase in mean partial delay,” the 2020 paper reports. Seventy-five milliseconds of mean partial delay bought 71.6% off UPWR and 68.8% off UPSR. That is the shape of the trade a contract has to state, in a unit someone else can recompute. Write it to be used against you. Another team ought to be able to pick it up and argue that your delay was measured from the wrong starting point.
And remember where nearly half the movement came from — capitalization 24.7%, punctuation and spacing 21.2%, numerals 1.7%. A contract that only governs the decoder governs 52.4% of the problem.
1. Define provisional text
Specify whether users can copy, act on, or edit unstable partials.
2. Set commit criteria
Use age, posterior stability, acoustic progress, and punctuation cautiously.
3. Measure revision
Track how far and how often displayed text changes.
4. Test interruption
Include packet loss, device handoff, cancellation, and resumed sessions.
Set the emission interval to 200 ms and you pay 75 ms of mean partial delay for 71.6% off UPWR; a commit policy without a number like that is a preference, not a contract.
Example
Measure the delay the user actually waits
A latency number cannot, on its own, tell you where the clock was started or what it was allowed to leave out. A team can report an excellent first-token figure and be telling the truth the whole time, while “the delay between the user speaking and the text appearing on the screen” is something else entirely. So write down the unit, the sessions it was measured over, how uncertain it is, and the network, hardware and numeric precision it ran on. RT90 1.43, 1.03 and 0.51 came from one model. Then set stability beside it.
Stability has defined units, so there is no excuse for reporting it as an impression: “UPWR is the ratio of total number of unstable words in a test corpus to the total number of words in the final hypotheses. UPSR captures the ratio between the aggregated number of revised segments and the total number of utterances in a dataset.” Both range over [0, ∞), with 0 the most stable, and a reviewer can recompute them from a log.
Four kinds of evidence make that report readable, and each covers a gap the others leave open.
- The core task evidence is the latency set itself: first-token, partial, final and endpoint, with the emission interval stated — 50 ms and 200 ms are 75 ms of mean partial delay apart.
- System behavior is covered by UPWR and UPSR, computed as Shangguan and colleagues define them; their worked utterance gives 11/9 = 1.22 and 5/1 = 5.0 as an example of what a bad one looks like.
- The robustness slice is word error rate measured under matched lookahead and compute, so the comparison is not quietly between two different budgets — 6.68% against 6.43% means nothing if one ran at 2793.75 RTFx and the other at 68.56 on different hardware.
- Lifecycle evidence is real-time factor, memory, and state-recovery behavior: what the system does over a long session, after a quantization change, and after one breaks.
Report first-token, partial, final, and endpoint latency together with UPWR, UPSR, real-time factor, memory, and state-recovery behavior.
Key idea
The stopwatch started in the wrong place
Four things make a streaming claim look better than it is, and this lesson has already met all four. The first is counting model emission time while ignoring endpoint and transport delay. RFC 6716 alone owes between 5 ms and 65.2 ms that no model benchmark contains. The second is aggressive early commits that later require correction, and 11 unstable words against a 9-word final hypothesis is what that looks like when someone counts it. The third lives inside the prediction network. Because it models each element given the previous ones, it can carry a bias toward common phrases and write the expected words rather than the spoken ones. That network alone scored 72.9% phoneme error rate on the TIMIT core test set. It knows very little about the audio. The fourth is state corruption or mismatch across streaming sessions, which is what a device handoff or a resumed session can leave behind.
None of them is repaired by having the model emit incrementally. A system built to stream can still arrive late, and can still rewrite itself in front of the reader. In 47.6% of the observed cases it will do so for reasons that are not acoustic at all: capitalization, punctuation and spacing, and numerals. What the user experiences is set by the whole pipeline around the model — from how audio is chunked, to when the transcript is allowed to change, to who is allowed to change its capital letters.
Measure latency from the moment the speaker stops to the moment the text stops changing; a clock that starts at the model and stops before the network is timing something no listener experiences.
Key takeaways
- A transducer's three parts buy incremental recognition: Graves's transcription and prediction networks, defined in 2012, plus a joint network that emits a label or the null symbol. That is not the same purchase as a fast product.
- Streaming architecture guarantees neither low perceived latency nor stable partials: one shipped recognizer produced 11 unstable words for a 9-word final hypothesis, UPWR 1.22 and UPSR 5.0 on a single utterance.
- The commit rule is a product decision with a published price. Moving the partial emission interval from 50 ms to 200 ms costs 75 ms of mean partial delay and returns 71.6% off UPWR and 68.8% off UPSR. In the browser its first line already exists as SpeechRecognitionResult.isFinal, with interimResults defaulting to false.
- CTC streaming, transducer streaming and chunked attention answer related but different questions about label history: 25.5% against 23.2% phoneme error rate on the TIMIT core test set, with the prediction network alone at 72.9%.
- Counting only model emission time hides the endpoint decision and a transport budget RFC 6716 fixes at 5 ms to 65.2 ms, so a latency number can look excellent while the user still waits.
- Real-time factor describes a run, not a model — one 120M-parameter RNN-T gave RT90 1.43, 1.03 and 0.51 on quantization alone — so report it next to first-token, partial, final and endpoint latency, UPWR, UPSR, memory and state recovery.