Why real-time transcription finally stops flickering

For a decade, real-time ASR has lived with an annoying tax: the model speaks, then corrects itself. A live subtitle flashes "Hel-", waits half a second, then rewrites to "Hello there". Downstream NLP pipelines choke on text that keeps shifting underneath them, and LLM agents re-plan on every new draft. NetEase Youdao's newly open-sourced Confucius4-R2T2 bets that streaming models should commit to a stable prefix and never rewrite.

R2T2 stands for "Real Real-Time Transcription", a deliberate wordplay: most "real-time" ASR on the market is actually pseudo-streaming, where the model revises its previous output as more audio arrives. R2T2 is built on the open Qwen3-ASR base (per the NetEase Youdao X announcement) and adds a training pipeline that includes stable-prefix data, forced time-alignment data, and token-level audio segmentation. The result is a model that exposes only the parts of the transcript it is confident about, and once committed, those tokens never move. Decoding chunks are configurable from 80 ms to 2 s, letting operators trade off latency against throughput per application.

The headline numbers from the model card land in the right place for that bet. Average streaming latency sits between 200 and 600 ms; on the English benchmark suite (AMI, Giga-clean, LS-clean, SPGI, TED-LIUM, etc.) R2T2 at 160 ms chunks is within ~2 percentage points of a fully offline Qwen3-ASR baseline despite never being allowed to revise its own output. On the Chinese benchmark set (Wenet-net, Wenet-meeting, SPEECHIO) it sits 0.9-2.0 CER points behind offline Qwen3-ASR while still running as a true streaming system, with the proprietary Commercial B ASR service only fractionally ahead. The model's own evaluation calls out a specific architecture choice that makes this work: a Longest Stable Prefix (LSP) learning paradigm that decides when a prefix is safe to emit versus when more audio context is needed.

The practical consequence is downstream stability. Live captioning no longer flickers when the speaker keeps talking. LLM agents consuming the stream can hang tool-calling logic off "confirmed text" without re-running their state machine every 250 ms. Simultaneous translation pipelines keep their alignment buffer monotonic. For real-time call-center, accessibility, and voice-agent use cases, this is exactly the property people have wanted since Whisper dropped streaming output and stopped being usable for live UX.

Two pieces of the design make this an open-weights story, not just a tech demo. The inference code is released under Apache 2.0 with a vLLM streaming backend and a WebSocket server (ws_server.py) that ships with a reference client. The 2B-parameter checkpoint (built on Qwen3-ASR-1.7B) is published under NetEase's research-friendly license. The release also bundles Docker integration with the official qwenllm/qwen3-asr image, so a developer can spin up ws://localhost:8272/asr_stream_api_v1 and stream 16 kHz mono PCM in roughly 160 ms frames.

For the bigger picture, the streaming ASR lane has been getting noisy in 2026: Microsoft's VibeVoice 7B attacked speaker diarization; Meta's Muse Voice Transcribe folded streaming, 20+ speaker separation, and endpoint detection into one model; NVIDIA's Nemotron 3.5 ASR covered 40 languages. R2T2 occupies a complementary niche: multilingual streaming recognition with append-only stable output rather than diarization or language breadth. On its own benchmarks it claims SOTA among open-weight streaming ASR, competitive with closed-source systems on latency. The interesting comparison ahead is end-to-end: how much downstream rework do real voice-agent pipelines save when their transcript input never rewrites? That number is what will decide whether "stable prefix" becomes a default feature of every streaming model shipped after this.