Search papers, labs, and topics across Lattice.
Streaming voice agents struggle with real-time text-audio synchronization because tracking progress traditionally requires decoding waveforms and running heavy acoustic alignment models. To solve this, X2-NativeCursor tracks spoken text progress directly from intermediate speech codec tokens before waveform generation, operating as a lightweight, non-invasive observer over frozen TTS backbones. Evaluated on Qwen3-TTS and CosyVoice2, it cuts mean absolute tracking error from 1.253 to 0.151 characters while dropping alignment real-time factor from 0.3598 to 0.0180 with only 80 ms of lookahead.
Tracking text progress directly from latent speech tokens rather than rendered audio cuts alignment error by 88% while slashing compute overhead by 20x.
Incremental-text streaming text-to-speech (TTS) needs online text progress tracking for synchronized highlighting, interruption handling, and dialogue-history updates. Input text arrives before it is spoken, so text arrival alone cannot indicate speech progress. Existing waveform-based alignment requires complete audio or adds acoustic processing during streaming. We propose X2-NativeCursor, a lightweight observer that tracks progress from native speech tokens before waveform decoding without changing the TTS generator. Its normalization plan links spoken labels to their original-text spans. Text and native-token encoders feed a local matcher that estimates the current label position. A separate output rule converts revisable position estimates into a cursor that never moves backward. Mean absolute error against an automatic reference is 0.151 Chinese characters with 80-ms lookahead, versus 1.253 characters with 320-ms lookahead for an online waveform baseline. Alignment real-time factor also decreases from 0.3598 to 0.0180 relative to this baseline. Lower tracking error is retained under a second automatic alignment reference. We evaluate X2-NativeCursor on Qwen3-TTS and validate its adaptation to CosyVoice2 by training a separate observer for each backbone. Code is publicly available at https://github.com/X-Square-Robot/X2Streaming-TTS.