{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/arxiv-2608-18661","title":"X2Streaming-TTS: Causal Token-Level Text-to-Speech from Streaming Text with Speech-State Inheritance","arxiv_id":"2608.18661","date":"2026-08-19","proceeding":null,"authors":["Rime Wen","Zehan Liu","Shawn Qin","Lights Shi","Roy Gan","Hao Wang","Qian Wang"],"abstract":"Streaming text-to-speech is essential for low-latency spoken dialogue systems, yet many systems wait for sentence-level text and are therefore only pseudo-streaming. True token-level synthesis must generate speech from uncertain prefixes while maintaining perceptual continuity over an unbounded stream with bounded context. We present X2Streaming-TTS, a causal TTS framework that consumes asynchronously arriving text tokens and emits speech without accessing future input. To handle uncertain prefixes, we introduce causal commitment, which keeps ambiguous expressions provisional through uncertainty-aware buffering and performs capacity-adaptive, punctuation-aware segmentation. To preserve acoustic continuity, we further introduce causal speech-state inheritance, which carries the complete Code2Wav state and selected historical Talker states across segment boundaries. Together with an attention prior constraint, it blocks access to future positions while retaining bounded acoustic context. Experiments show that X2Streaming-TTS outperforms existing pseudo-streaming models on most subjective and objective metrics. Further analysis shows that causal commitment stabilizes online segmentation and reduces failures caused by insufficient context, while speech-state inheritance improves boundary continuity without degrading naturalness or speaker identity. X2Streaming-TTS thus achieves strict token-level synthesis with quality comparable to the evaluated offline baselines, a median time to first audio token (TTFT) of 15.8 ms for a single request, and a median TTFT of 260.8 ms at 128 concurrent requests. Our implementation is publicly available at https://github.com/X-Square-Robot/X2Streaming-TTS .","url_abs":"https://arxiv.org/abs/2608.18661","url_pdf":"https://arxiv.org/pdf/2608.18661","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2608.18661","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2608.18661"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/X-Square-Robot/X2Streaming-TTS","reach":null}],"summary":{"ran":1,"ran_violates":4,"ran_draft_wrong":4,"unverified":12},"by_repo_kind":{"found_in_text":{"samples":21,"ran":9,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"ff0e1a468b39917c","entry":"CapacityConfig","repo":"X-Square-Robot/X2Streaming-TTS","repo_kind":"found_in_text","path":"src/x2streaming_tts/policy.py","file_url":"https://github.com/X-Square-Robot/X2Streaming-TTS/blob/HEAD/src/x2streaming_tts/policy.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"ff0e1a468b39917c"}},{"code_sha256_prefix":"917f37c8386522f3","entry":"_continues_special_text","repo":"X-Square-Robot/X2Streaming-TTS","repo_kind":"found_in_text","path":"src/x2streaming_tts/policy.py","file_url":"https://github.com/X-Square-Robot/X2Streaming-TTS/blob/HEAD/src/x2streaming_tts/policy.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"917f37c8386522f3"}},{"code_sha256_prefix":"305432d224285854","entry":"_has_spoken_content","repo":"X-Square-Robot/X2Streaming-TTS","repo_kind":"found_in_text","path":"src/x2streaming_tts/policy.py","file_url":"https://github.com/X-Square-Robot/X2Streaming-TTS/blob/HEAD/src/x2streaming_tts/policy.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"305432d224285854"}},{"code_sha256_prefix":"0a6e114bbda9fdb7","entry":"_integer_to_chinese","repo":"X-Square-Robot/X2Streaming-TTS","repo_kind":"found_in_text","path":"src/x2streaming_tts/policy.py","file_url":"https://github.com/X-Square-Robot/X2Streaming-TTS/blob/HEAD/src/x2streaming_tts/policy.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"0a6e114bbda9fdb7"}},{"code_sha256_prefix":"a3d569af9cce6c51","entry":"_is_cjk","repo":"X-Square-Robot/X2Streaming-TTS","repo_kind":"found_in_text","path":"src/x2streaming_tts/policy.py","file_url":"https://github.com/X-Square-Robot/X2Streaming-TTS/blob/HEAD/src/x2streaming_tts/policy.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a3d569af9cce6c51"}},{"code_sha256_prefix":"485df6d0022177bd","entry":"_is_special_start","repo":"X-Square-Robot/X2Streaming-TTS","repo_kind":"found_in_text","path":"src/x2streaming_tts/policy.py","file_url":"https://github.com/X-Square-Robot/X2Streaming-TTS/blob/HEAD/src/x2streaming_tts/policy.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"485df6d0022177bd"}},{"code_sha256_prefix":"aad199eb8079da3e","entry":"_next_nonspace","repo":"X-Square-Robot/X2Streaming-TTS","repo_kind":"found_in_text","path":"src/x2streaming_tts/policy.py","file_url":"https://github.com/X-Square-Robot/X2Streaming-TTS/blob/HEAD/src/x2streaming_tts/policy.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"aad199eb8079da3e"}},{"code_sha256_prefix":"1cd9b99c903b19f4","entry":"compute_thresholds","repo":"X-Square-Robot/X2Streaming-TTS","repo_kind":"found_in_text","path":"src/x2streaming_tts/policy.py","file_url":"https://github.com/X-Square-Robot/X2Streaming-TTS/blob/HEAD/src/x2streaming_tts/policy.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"1cd9b99c903b19f4"}},{"code_sha256_prefix":"2c7a4b1fe8f71515","entry":"verbalize_percentage","repo":"X-Square-Robot/X2Streaming-TTS","repo_kind":"found_in_text","path":"src/x2streaming_tts/policy.py","file_url":"https://github.com/X-Square-Robot/X2Streaming-TTS/blob/HEAD/src/x2streaming_tts/policy.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"2c7a4b1fe8f71515"}},{"code_sha256_prefix":"2b30f6a427a2efe6","entry":"AdaptiveCapacityEstimator","repo":"X-Square-Robot/X2Streaming-TTS","repo_kind":"found_in_text","path":"src/x2streaming_tts/policy.py","file_url":"https://github.com/X-Square-Robot/X2Streaming-TTS/blob/HEAD/src/x2streaming_tts/policy.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"2b30f6a427a2efe6"}},{"code_sha256_prefix":"9395c05cb480e89a","entry":"CausalCommitment","repo":"X-Square-Robot/X2Streaming-TTS","repo_kind":"found_in_text","path":"src/x2streaming_tts/policy.py","file_url":"https://github.com/X-Square-Robot/X2Streaming-TTS/blob/HEAD/src/x2streaming_tts/policy.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"9395c05cb480e89a"}},{"code_sha256_prefix":"c40f29b736402525","entry":"CausalCommitmentController","repo":"X-Square-Robot/X2Streaming-TTS","repo_kind":"found_in_text","path":"src/x2streaming_tts/policy.py","file_url":"https://github.com/X-Square-Robot/X2Streaming-TTS/blob/HEAD/src/x2streaming_tts/policy.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c40f29b736402525"}},{"code_sha256_prefix":"afb0764ebb5730a4","entry":"CommitmentDecision","repo":"X-Square-Robot/X2Streaming-TTS","repo_kind":"found_in_text","path":"src/x2streaming_tts/policy.py","file_url":"https://github.com/X-Square-Robot/X2Streaming-TTS/blob/HEAD/src/x2streaming_tts/policy.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"afb0764ebb5730a4"}},{"code_sha256_prefix":"e9d69833f60bb98b","entry":"RuleBoundaryFrontend","repo":"X-Square-Robot/X2Streaming-TTS","repo_kind":"found_in_text","path":"src/x2streaming_tts/policy.py","file_url":"https://github.com/X-Square-Robot/X2Streaming-TTS/blob/HEAD/src/x2streaming_tts/policy.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e9d69833f60bb98b"}},{"code_sha256_prefix":"c3b24eacf051532f","entry":"RuleBoundarySpan","repo":"X-Square-Robot/X2Streaming-TTS","repo_kind":"found_in_text","path":"src/x2streaming_tts/policy.py","file_url":"https://github.com/X-Square-Robot/X2Streaming-TTS/blob/HEAD/src/x2streaming_tts/policy.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c3b24eacf051532f"}},{"code_sha256_prefix":"ac53bb9ed6160599","entry":"SpeechStateInheritanceConfig","repo":"X-Square-Robot/X2Streaming-TTS","repo_kind":"found_in_text","path":"src/x2streaming_tts/policy.py","file_url":"https://github.com/X-Square-Robot/X2Streaming-TTS/blob/HEAD/src/x2streaming_tts/policy.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"ac53bb9ed6160599"}},{"code_sha256_prefix":"78696562f477245e","entry":"SplitThresholds","repo":"X-Square-Robot/X2Streaming-TTS","repo_kind":"found_in_text","path":"src/x2streaming_tts/policy.py","file_url":"https://github.com/X-Square-Robot/X2Streaming-TTS/blob/HEAD/src/x2streaming_tts/policy.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"78696562f477245e"}},{"code_sha256_prefix":"1afc84ee14221445","entry":"TextNormalizer","repo":"X-Square-Robot/X2Streaming-TTS","repo_kind":"found_in_text","path":"src/x2streaming_tts/policy.py","file_url":"https://github.com/X-Square-Robot/X2Streaming-TTS/blob/HEAD/src/x2streaming_tts/policy.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"1afc84ee14221445"}},{"code_sha256_prefix":"f8f05ce8fee60bef","entry":"X2StreamingConfig","repo":"X-Square-Robot/X2Streaming-TTS","repo_kind":"found_in_text","path":"src/x2streaming_tts/policy.py","file_url":"https://github.com/X-Square-Robot/X2Streaming-TTS/blob/HEAD/src/x2streaming_tts/policy.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f8f05ce8fee60bef"}},{"code_sha256_prefix":"1110889ffb9cf36a","entry":"X2StreamingPolicy","repo":"X-Square-Robot/X2Streaming-TTS","repo_kind":"found_in_text","path":"src/x2streaming_tts/policy.py","file_url":"https://github.com/X-Square-Robot/X2Streaming-TTS/blob/HEAD/src/x2streaming_tts/policy.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"1110889ffb9cf36a"}},{"code_sha256_prefix":"224d3efde9e1db5a","entry":"_CompiledRule","repo":"X-Square-Robot/X2Streaming-TTS","repo_kind":"found_in_text","path":"src/x2streaming_tts/policy.py","file_url":"https://github.com/X-Square-Robot/X2Streaming-TTS/blob/HEAD/src/x2streaming_tts/policy.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"224d3efde9e1db5a"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.CL","source":"arxiv_2026.jsonl"},"syntology_extracted_results":{"kind":"leaderboard_placements","source":"Syntology's leaderboard-shaped extractor over the paper's own arXiv-HTML tables: a model pointed at a cell, the number was read from that cell and checked against the board's metric, dataset, split and scale, and an independent check accepted the entry; not reviewed by the paper's authors or the archive's editors","extractor_model":"global.anthropic.claude-sonnet-4-5-20250929-v1:0","verifier_model":null,"prompt_sha":"fa63d4bb9d755694","coverage":{"sentence":"Syntology has checked 6,264 of the 9,581 papers on this site that are newer than the archive; results from the others appear after they are checked.","papers_newer_than_archive":9581,"papers_checked":6264},"entries":[],"not_placed":{"boards":0,"rejected_by_independent_check":0,"refused_by_a_rule":0,"check_did_not_answer":0,"proposed_without_a_cell":0,"declined_by_site":0}}}