Diffusion-Language-Model-Based Text-to-Speech with Fully Parallel and Streaming Generation
Technical Report: arXiv:2608.11593
Abstract: Autoregressive codec language models decode speech left to right, which costs latency that grows with utterance length, error accumulation along the committed prefix, and a generation order the RVQ token grid does not have. The Luna-TTS Family is a set of diffusion-language-model-based TTS systems pretrained on 1 million hours of speech across Chinese, English, Japanese, and Korean, built by progressive adaptation of a pretrained autoregressive text LLM—causal to bidirectional to block-causal—over a shared 0.6B backbone. Luna-TTS generates the entire token grid in a fixed number of parallel refinement steps, with zero-shot voice cloning and speech editing arising natively as infilling. Luna-TTS Realtime is autoregressive over 1.28 s blocks while denoising each block in parallel, delivering audio incrementally once the first block is committed. An annealed fine-tuning stage adds emotion and non-verbal vocalization control, and a reinforcement-learning stage applies GRPO over the realized denoising trajectory. On Seed-TTS-Eval, Luna-TTS leads all four metrics among the systems we compare, at 0.6B parameters, while Luna-TTS Realtime returns its first audio in 41.6 ms (benchmarks below). All samples below are unedited model outputs at 24 kHz.
Zero-shot quality
On Seed-TTS-Eval — 2,020 Mandarin and 1,088 English utterances scored with the official toolkit — Luna-TTS is first in every column. Mandarin CER (0.73) leads MiniMax-Speech (0.83) and the same-protocol Qwen3-TTS baseline (0.98); English WER (1.49) leads Qwen-Audio-3.0-TTS (1.54). Speaker similarity is the highest in both languages. The streaming variant gives up roughly 0.3 CER/WER and 3 SIM points for incremental delivery, and still edges Seed-TTS and CosyVoice 3 on Mandarin CER — at 0.6B parameters, against systems two to three times its size.
| System | Params | zh CER ↓ | zh SIM ↑ | en WER ↓ | en SIM ↑ |
|---|---|---|---|---|---|
| Seed-TTS◇ | — | 1.12 | 79.6 | 2.25 | 76.2 |
| MaskGCT◇ | 1B | 2.27 | 77.4 | 2.62 | 71.7 |
| F5-TTS◇ | 0.3B | 1.56 | 76.0 | 1.83 | 67.0 |
| CosyVoice 3◇ | 1.5B | 1.12 | 78.1 | 2.21 | 72.0 |
| MiniMax-Speech◇ | — | 0.83 | 78.3 | 1.65 | 69.2 |
| GLM-TTS◇ | 1.5B | 1.03 | 76.1 | 2.23 | 67.2 |
| Qwen3-TTS-12Hz-1.7B-Base† | 1.7B | 0.98 | 76.9 | 1.68 | 71.7 |
| Qwen-Audio-3.0-TTS◇ | — | 0.84 | 79.2 | 1.54 | 76.2 |
| MOSS-TTS-Local-Transformer◇ | 1.7B | 1.33 | 77.2 | 1.87 | 71.7 |
| VoxCPM2◇ | 2B | 0.97 | 79.5 | 1.84 | 75.3 |
| OmniVoice◇ | 0.6B | 0.84 | 77.7 | 1.60 | 74.1 |
| Luna-TTS | 0.6B | 0.73 | 79.7 | 1.49 | 76.8 |
| Luna-TTS Realtime | 0.6B | 1.08 | 76.9 | 1.81 | 73.4 |
◇ from the system's own report · † re-evaluated by us under the same protocol · best per column in bold.
Inference performance
Luna-TTS returns the whole waveform at once, so its first audio is its full response; Luna-TTS Realtime commits one block at a time and plays before generation has finished. Running classifier-free guidance on a second GPU cuts full-response latency by about 45% and first audio from 59.6 to 41.6 ms. Luna-TTS at 16 steps is the throughput choice — a complete waveform in 216 ms; Realtime is the latency choice, first audio in 41.6 ms and a 10.6-second utterance finished in 254 ms.
| Profile | Steps | Execution | First audio (ms) ↓ |
Full response (ms) ↓ |
RTF ↓ |
|---|---|---|---|---|---|
| Luna-TTS | 32 | 1× H20, full-grid | 419.6 | 419.6 | 0.0410 |
| Luna-TTS | 16 | 1× H20, full-grid | 216.0 | 216.0 | 0.0211 |
| Luna-TTS Realtime | 16 | 1× H20, sequential CFG | 98.9 | 837.7 | 0.0790 |
| Luna-TTS Realtime | 16 | 2× H20, parallel CFG | 63.8 | 451.4 | 0.0426 |
| Luna-TTS Realtime | 8 | 1× H20, sequential CFG | 59.6 | 457.6 | 0.0432 |
| Luna-TTS Realtime | 8 | 2× H20, parallel CFG | 41.6 | 254.0 | 0.0240 |
BF16, batch 1, medians over 12 warmed runs on NVIDIA H20. First audio = engine invocation to the first decoded 0.36 s block.
Reference prompts are 3–10 s clips from speakers unseen during training. Outputs are generated by Luna-TTS.
| Language | Prompt | Text | Luna-TTS |
|---|---|---|---|
| ZH | 因为我们悄悄走过,所以当时那些惊涛骇浪都烟消云散。 | ||
| ZH | 而他不知道的是,这个所谓的陌生女孩,早已对他芳心暗许。 | ||
| EN | The conservation of the wooden artifacts is an ongoing problem. | ||
| EN | However, a player may purchase as many contestants as they desire. | ||
| JA | せめてお説教だけは読んでおきなさい。お前にその約束ができるかね? | ||
| JA | 私が先生と知り合いになったのは鎌倉である。 | ||
| KO | 기천이는 맨 나중에 단장을 짚고 기엄기엄 올라왔다. | ||
| KO | 새파란 기운이 날 듯하던 그의 목소리는 어디로인지 쑥 들어가 버릴 듯하였다. |
Two difficulties at once. The text is long, irregular, and stylistically diverse — tongue twisters, dense numerals, and expressive punctuation — where length heuristics and unconstrained stopping typically fail; the token-level duration predictor keeps the target length calibrated. The reference clips are in-the-wild recordings rather than studio takes, with uncontrolled channel, noise, and recording conditions carried over from the source corpus.
| Language | Prompt | Text | Luna-TTS |
|---|---|---|---|
| HARD-ZH | 黑化肥发灰,灰化肥发黑,黑化肥挥发会发黑,灰化肥挥发会发灰。化肥会挥发,灰化肥挥发发黑会挥发,黑化肥挥发发灰会挥发。 | ||
| HARD-ZH | 他在 2025 年 3 月 14 日下午 3:45 于 T3 航站楼取走了编号为 AX-107 的包裹,重 12.5 千克。 | ||
| HARD-EN | How much wood would a woodchuck chuck, if a woodchuck could chuck wood? He would chuck as much wood as a woodchuck would if a woodchuck could chuck wood. | ||
| HARD-EN | The invoice—No. 2026-0815, dated August 5th—totals $1,247.50, i.e., roughly €1,150 at today’s rate. |
Emotionally neutral prompts provide speaker identity. An utterance-level emotion tag and semantically aligned text specify the target emotion. Prompt and target content are different.
| Emotion / Language | Prompt | Text | Luna-TTS |
|---|---|---|---|
| [happy] · ZH | 太好了,我们终于拿到冠军了,真的太开心了! | ||
| [happy] · EN | We actually won! I can’t stop smiling. | ||
| [sad] · ZH | 你走以后,这里一下子安静了,我真的很想你。 | ||
| [sad] · EN | It feels so empty without you. I miss you every day. | ||
| [angry] · ZH | 我说过不要动,你为什么还是把文件删了? | ||
| [angry] · EN | I told you not to touch those files. Why did you delete them? | ||
| [surprised] · ZH | 什么?一等奖真的是我们?我完全没想到! | ||
| [surprised] · EN | Wait—we won first place? I really didn’t expect that! | ||
| [fearful] · ZH | 别出声,门外好像有人,脚步声越来越近了。 | ||
| [fearful] · EN | Stay quiet. Someone is outside, and the footsteps are getting closer. |
Inline tags realize non-verbal vocalizations at the tagged position, alongside the surrounding speech rather than spliced into it.
| Language | Text | Luna-TTS |
|---|---|---|
| ZH | [laughs] 你猜他怎么说?他说他以为今天是周末。 | |
| EN | [laughs] Guess what he said—he thought it was the weekend. | |
| ZH | 等等 [gasps] 你刚才说多少? | |
| EN | Wait [gasps] how much did you say? | |
| ZH | 报告又要重写 [sighs] 这已经是第三版了。 | |
| EN | The report needs rewriting [sighs] that's the third version now. | |
| ZH | [clears throat] 各位,我们现在开始今天的评审。 | |
| EN | [clears throat] Everyone, let's begin today's review. | |
| ZH | 你看看这字写的 [tsks] 我一个都认不出来。 | |
| EN | Look at this handwriting [tsks] I can't read a single word. | |
| ZH | 好 [inhales] 我们再从头把这件事捋一遍。 | |
| EN | Okay [inhales] let's go through this one more time. | |
| ZH | 他看了一眼账单 [hisses] 这也太贵了。 | |
| EN | He glanced at the bill [hisses] that is far too much. |
Fully parallel generation fixes the frame count up front, so rescaling the predicted duration gives continuous rate control — same voice, no retraining.
| Language | Text | 0.75× | 1.0× | 1.25× |
|---|---|---|---|---|
| ZH | 一个人生活太顺畅,就会开始变懒,会想着法子玩新花样。 | |||
| EN | His father was a professor of genetic engineering at Louisiana State University. |
Any-order infilling regenerates the highlighted span under the edited text, coherent with both past and future audio — no bespoke editing model.
| Language | Original | Edited |
|---|---|---|
| EN | Albert Einstein's famous equation E equals MC squared is one of the best known equations in physics. |
Albert Einstein's famous equation E equals MC squared is by far the most misunderstood equations in physics. |
| ZH | 见着她我就高兴,就像即使今个没饭吃,但我也乐呵。 |
见着她我就高兴,就像即使今个一分钱工资都没发,但我也乐呵。 |
Reference audio here was collected from publicly available material online, and the lines are written for this page — nobody in the table ever said them. The first four rows take their reference audio and their text from the Seed-TTS demo page.
| Language | Prompt | Text | Luna-TTS |
|---|---|---|---|
| ZH | 突然,身边一阵笑声。我看着他们,意气风发地挺直了胸膛,甩了甩那稍显肉感的双臂,轻笑道:"我身上的肉,是为了掩饰我爆棚的魅力,否则,岂不吓坏了你们呢?" | ||
| ZH | 顿时,气氛变得沉郁起来。乍看之下,一切的困扰仿佛都围绕在我身边。我皱着眉头,感受着那份压力,但我知道我不能放弃,不能认输。于是,我深吸一口气,心底的声音告诉我:“无论如何,都要冷静下来,重新开始。” | ||
| EN | I don't really care what you call me. I've been a silent spectator, watching species evolve, empires rise and fall. But always remember, I am mighty and enduring. Respect me and I'll nurture you; ignore me and you shall face the consequences. | ||
| EN | The combinations of different textures and flavors create a perfect harmony. The succulence of the steak, the tartness of the cranberries, the crunch of pine nuts, and creaminess of blue cheese make it a truly delectable delight. Enjoy your culinary adventure! | ||
| ZH | 哎,你该不会是听说了什么可怕的传闻,才不敢进来的吧? | ||
| ZH | 你可知道,一份契约真正的分量,从来不在纸上? | ||
| ZH | 我都纳闷儿了,我还没张嘴呢您几位就乐成这样。 | ||
| ZH | 等一下,我先录个demo,这段旋律真的太上头了。 | ||
| ZH | 我这人做事儿就一条原则,想明白了就干,不犹豫,也不后悔。 | ||
| EN | Every morning he walked the same three miles, past the same shuttered storefronts, and every morning he told himself that tomorrow he would take a different route. | ||
| EN | You start with, um, a clean sheet design, ignore all legacy constraints, run a thousand simulations overnight ... and then you, you find this weird geometry that outperforms everything. | ||
| EN | Look, that building over there is really something special, it's huge, just absolutely tremendous, you won't believe it. | ||
| EN | Honestly, I just think some of the best ideas happen when you're not really trying to have an idea at all. | ||
| EN | Even in this stillness, my soul burns with the slow fury of dying stars |
The content provided above is for academic purposes only and is intended to demonstrate technical capabilities. Some examples are sourced from the internet. If any content infringes on your rights, please contact us to request its removal.