Materials Speech-to-speech modelling

Speech-to-speech modelling

Speech generation

Codecs and speech tokenizers

The tokenizer fixes the sequence length the LM sees and the ceiling on audio quality. Four families matter.

Waveform Encoder causal, low rate Residual vector quantizer (RVQ) q1 semantic q2 acoustic q3 ... qN acoustic distilled toward WavLM / HuBERT residual residual latents Decoder Waveform codes q1 ... qN audio
An RVQ codec: each quantizer codes the residual left by the previous one. The first is distilled toward a semantic teacher.
Family Examples Key facts
RVQ with semantic distillation Mimi (arXiv 2410.00037), SpeechTokenizer (arXiv 2308.16692) Mimi: causal, 12.5 Hz, 8 codebooks, 1.1 kbps, first codebook distilled from WavLM. SpeechTokenizer: RVQ whose first layers carry semantic information distilled from a HuBERT teacher, with acoustic detail in later layers.
Single-codebook, low rate WavTokenizer (arXiv 2408.16532), X-Codec2 (arXiv 2502.04128), BiCodec (arXiv 2503.01710) WavTokenizer: 40 or 75 tokens/s. X-Codec2: single-layer FSQ codec at a 50 Hz latent rate, with Wav2Vec2-BERT semantic features (arXiv 2502.04128, arXiv 2601.20185). BiCodec: semantic tokens plus fixed-length global speaker tokens.
FSQ tokens CosyVoice 2 (arXiv 2412.10117) Replaces VQ in the speech tokenizer with finite scalar quantization to improve codebook utilisation.
Continuous latents VibeVoice (arXiv 2508.19205), MELLE (arXiv 2407.08551) VibeVoice tokenizer: 7.5 Hz frame rate; the authors report 80x better compression than EnCodec at comparable performance. MELLE argues that vector quantization sacrifices fidelity compared to continuous representations.

Qwen3-TTS ships two tokenizers: 25 Hz single-codebook and 12 Hz multi-codebook (arXiv 2601.15621).

What "first codebook distilled from WavLM" means

Mimi trains its first quantizer to carry phonetic content, not just sound (arXiv 2410.00037). The teacher is WavLM, a self-supervised speech model producing 1024-dim embeddings at 50 Hz. During training, the first quantizer's output passes through a linear projection to 1024 dims, and a cosine-distance loss pulls it toward WavLM's embedding for the same moment. WavLM's features are average-pooled (stride 4, kernel 8) from 50 Hz to Mimi's 12.5 Hz.

Mimi is fully causal, while WavLM sees the whole utterance. The teacher is used only in training, so its look-ahead never reaches inference. Distilling into level 1 of a normal RVQ made semantic and acoustic goals conflict, because later levels encode level 1's residual. Mimi therefore runs one plain VQ for semantics in parallel with a 7-level RVQ for acoustics and sums them; the authors report distillation improves phonetic discriminability (ABX) and the split gives a better semantic-acoustic trade-off.

Trade-offs

Axis Low frame rate Semantic distillation Continuous latents
Gain Fewer AR steps, near text rate Easier LM modelling, better phonetic content No quantization loss
Cost Reconstruction quality Conflicts with reconstruction quality; the Moshi authors recover MUSHRA from 57.8 to 64.0 with a split RVQ, at a small ABX cost (arXiv 2410.00037) Needs a regression or diffusion head; no top-p sampling

Evidence on low frame rates

A controlled frame-rate ablation reproduces a quality cliff at 6.25 Hz. Its authors trace the cliff to the training configuration (fixed clip duration gives too few tokens at low rates), not to a fundamental barrier. After the fix, WER degrades smoothly with phonemic load down to 3.1 Hz and 1.6 Hz (arXiv 2606.16969). Another paper pools X-Codec-2.0 from 50 Hz to a 25 Hz latent rate and reports a 0.29 UTMOSv2-based MOS gain (arXiv 2601.20185).

Say this in the interview:

"The trade is rate against fidelity. Low rate and semantic distillation make the LM's job easy; continuous latents or a flow decoder win back what quantization loses."

How codecs are trained: VQ-VAE, RVQ and continuous latents

An RVQ codec is a VQ-VAE-family autoencoder: encoder, discrete bottleneck, decoder, trained end to end. It is not a VAE. The VQ-VAE paper does view its model as a VAE with a deterministic posterior and a uniform prior, which makes the KL term a constant (log⁡K \log K ) that is dropped from training (arXiv 1711.00937). So no KL loss and no sampling appear in an RVQ codec. Continuous-latent tokenizers are the VAE counterpart: they keep a Gaussian bottleneck and a KL term instead of a codebook. What these tokenizers produce is described in Codecs and speech tokenizers.

RVQ autoencoder (VQ-VAE family): discrete bottleneck codebook + commitment (or EMA) reconstruction + adversarial + feature matching Encoder q1 q2 q3 ... qN Σ Decoder z r1 r2 r3 frame vector z chosen codes summed Continuous VAE tokenizer: sampled Gaussian latent KL term ε ~ N(0, I) reconstruction (+ adversarial) Encoder μ, σ sample z z = μ + σ ⊙ ε Decoder z no codebook; gradients reach the encoder through the reparameterised sample
Top: an RVQ codec, where each quantizer codes the residual (r1, r2, ...) left by the one before. Bottom: a continuous VAE tokenizer, with a sampled latent in place of codes.

VQ-VAE: the base recipe

The encoder output ze(x) z_e(x) is replaced by its nearest codebook vector ek e_k , with k=arg⁡min⁡j∥ze(x)−ej∥2 k = \arg\min_j \lVert z_e(x) - e_j \rVert_2 , and the decoder reads zq(x)=ek z_q(x) = e_k (arXiv 1711.00937). The argmin has no gradient, so the decoder's gradient at zq z_q is copied unchanged to ze z_e (a straight-through estimator). Reconstruction therefore never updates the codebook, so two extra terms are added. The codebook loss pulls code vectors toward encoder outputs, and the commitment loss keeps encoder outputs from drifting away from their codes.

L=log⁡p(x∣zq(x))+∥sg⁡[ze(x)]−e∥22+β∥ze(x)−sg⁡[e]∥22 \mathcal{L} = \log p\big(x \mid z_q(x)\big) + \lVert \operatorname{sg}[z_e(x)] - e \rVert_2^2 + \beta \lVert z_e(x) - \operatorname{sg}[e] \rVert_2^2

Source: VQ-VAE, Eq. 3 (arXiv 1711.00937). Here sg⁡ \operatorname{sg} is the stop-gradient operator, identity in the forward pass and zero partial derivatives in the backward pass. The decoder trains on the first term only, the encoder on the first and third, and the codebook on the second. The paper uses β=0.25 \beta = 0.25 and reports little change for β \beta from 0.1 to 2.0. Its appendix describes an EMA update for the codebook instead of the second term (decay γ=0.99 \gamma = 0.99 ), but states the main experiments did not use it (arXiv 1711.00937). Inference The first term is a log-likelihood to maximise; in a codec it becomes a reconstruction error to minimise.

RVQ: SoundStream, EnCodec, DAC

Residual vector quantization chains Nq N_q quantizers, each coding what the previous ones missed (SoundStream, Algorithm 1; arXiv 2107.03312).

y^←0,r0←y;for i=1,…,Nq:    y^←y^+Qi(ri−1),    ri←ri−1−Qi(ri−1) \hat y \leftarrow 0,\quad r_0 \leftarrow y;\qquad \text{for } i = 1,\dots,N_q:\;\; \hat y \leftarrow \hat y + Q_i(r_{i-1}),\;\; r_i \leftarrow r_{i-1} - Q_i(r_{i-1})

SoundStream (arXiv 2107.03312) trains this end to end with the following recipe.

  • Quantizer dropout: for each example, sample nq n_q uniformly in [1,Nq] [1, N_q] and use only the first nq n_q quantizers. One model then serves many bitrates.
  • Codebooks use EMA updates (following VQ-VAE-2) with k-means initialisation on the first batch. A code with no assigned frames for several batches is replaced by a random frame from the batch. The EMA decay is 0.99, and codes whose EMA falls below 2 are replaced.
  • Generator loss: adversarial, feature matching and multi-scale spectral reconstruction, with λadv=1 \lambda_{adv} = 1 , λfeat=100 \lambda_{feat} = 100 , λrec=1 \lambda_{rec} = 1 . Its generator loss (Eq. 6) lists no commitment term.
  • Streamable by design: all convolutions are causal, and the encoder strides (2, 4, 5, 8) give one embedding per 320 samples. With Nq=8 N_q = 8 , each codebook has 1024 entries.

EnCodec keeps the recipe and changes the training signal (arXiv 2210.13438).

  • It adds a commitment loss ∑c∥zc−qc(zc)∥22 \sum_c \lVert z_c - q_c(z_c) \rVert_2^2 over the residual steps, with gradient only into the quantizer input.
  • It uses a multi-scale STFT discriminator with five window lengths (2048 to 128).
  • A loss balancer rescales each loss's gradient with respect to the output x^ \hat x . With weights λi \lambda_i , reference norm R R and the EMA ⟨∥gi∥2⟩β \langle \lVert g_i \rVert_2 \rangle_\beta of each gradient norm, it backpropagates the following. The commitment loss is excluded.
g~i=R λi∑jλj⋅gi⟨∥gi∥2⟩β,gi=∂ℓi∂x^ \tilde g_i = R \, \frac{\lambda_i}{\sum_j \lambda_j} \cdot \frac{g_i}{\langle \lVert g_i \rVert_2 \rangle_\beta}, \qquad g_i = \frac{\partial \ell_i}{\partial \hat x}

Source: EnCodec, Eq. 5 (arXiv 2210.13438), with R=1 R = 1 and β=0.999 \beta = 0.999 . At 24 kHz EnCodec produces 75 latent steps per second. It uses up to 32 codebooks of 1024 entries, and trains for 1.5, 3, 6, 12 and 24 kbps by picking a multiple of 4 codebooks per batch (arXiv 2210.13438).

DAC (arXiv 2306.06546) targets codebook collapse, where many codes go unused. It does code lookup in a low-dimensional space (8 or 32 dimensions) while the code embedding stays 1024-dimensional. It L2-normalises encoder outputs and codes, so distance becomes cosine similarity. With this it trains on plain VQ-VAE codebook and commitment losses (weights 1.0 and 0.25), without k-means initialisation or random restarts. The authors found that applying quantizer dropout to every example hurts full-bandwidth quality, and apply it with probability p=0.5 p = 0.5 instead. Other weights are 15.0 for the multi-scale mel loss, 2.0 for feature matching and 1.0 for adversarial, with no loss balancer. Reported setup: 44.1 kHz audio at 8 kbps, 86 Hz frame rate, 9 codebooks (arXiv 2306.06546).

FSQ: a codebook-free alternative

Finite scalar quantization bounds each of d d channels and rounds it to one of L L integer levels (arXiv 2309.15505).

z^=round⁡ ⁣(⌊L/2⌋tanh⁡(z)),∣C∣=∏i=1dLi \hat z = \operatorname{round}\!\big(\lfloor L/2 \rfloor \tanh(z)\big), \qquad |\mathcal{C}| = \prod_{i=1}^{d} L_i

Source: FSQ, Sec. 3 (arXiv 2309.15505). The implicit codebook is the product of the per-channel level sets. Gradients pass through the rounding with a straight-through estimator, implemented as x+sg⁡(round⁡(x)−x) x + \operatorname{sg}(\operatorname{round}(x) - x) . The reconstruction loss alone pushes information across bins, so there is no codebook loss, no commitment loss and no EMA. The authors report codebook usage near 100% for most models, without auxiliary losses (arXiv 2309.15505). CosyVoice 2 swaps VQ for FSQ in its speech tokenizer, which works at 25 Hz (arXiv 2412.10117). That tokenizer is an ASR encoder with FSQ inserted (SenseVoice-Large), trained to predict text, so it is supervised rather than a reconstruction autoencoder. The authors report that the FSQ tokenizer fully uses its codebook (arXiv 2412.10117).

Mimi: adversarial-only training

Mimi uses 8 quantizers with 2048 entries at 12.5 Hz, 1.1 kbps, with quantizer dropout for bitrate scalability (arXiv 2410.00037). It applies quantization to only 50% of training sequences and passes unquantized embeddings to the decoder otherwise. It also drops the reconstruction loss and keeps only the feature-matching and discriminator losses. The authors report that this lowers objective scores (VisQOL 1.84) but sounds better: MUSHRA 81.0 against 58.8 for the EnCodec-style mix of reconstruction and adversarial losses (arXiv 2410.00037). The semantic distillation loss and the split RVQ are covered in What "first codebook distilled from WavLM" means.

Continuous latents: the VAE side

A VAE learns an encoder qϕ(z∣x) q_\phi(z \mid x) and a decoder pθ(x∣z) p_\theta(x \mid z) by maximising a variational lower bound (arXiv 1312.6114).

L(θ,ϕ;x)=−DKL(qϕ(z∣x) ∥ pθ(z))+Eqϕ(z∣x)[log⁡pθ(x∣z)] \mathcal{L}(\theta, \phi; x) = -D_{\mathrm{KL}}\big(q_\phi(z \mid x) \,\|\, p_\theta(z)\big) + \mathbb{E}_{q_\phi(z \mid x)}\big[\log p_\theta(x \mid z)\big]

Source: Kingma and Welling, Eq. 3 (arXiv 1312.6114). The reparameterisation trick draws z=μ+σϵ z = \mu + \sigma \epsilon with ϵ∼N(0,I) \epsilon \sim \mathcal{N}(0, I) , which makes the sample differentiable. The KL term regularises the posterior toward the prior. Speech and audio tokenizers keep this shape and add the codec's adversarial and spectral losses.

Prior, posterior and the reparameterisation trick

  • Prior: in the paper's Gaussian example, the prior over latents is a centred isotropic Gaussian, p(z)=N(0,I) p(z) = \mathcal{N}(0, I) (arXiv 1312.6114).
  • Posterior: the encoder outputs a mean and standard deviation per latent dimension, so qϕ(z∣x)=N(μ,σ2I) q_\phi(z \mid x) = \mathcal{N}(\mu, \sigma^2 I) (arXiv 1312.6114).
  • With both Gaussian, the KL term has a closed form and needs no sampling (Eq. 10, arXiv 1312.6114):
−DKL=12∑j(1+log⁡σj2−μj2−σj2) -D_{\mathrm{KL}} = \tfrac{1}{2} \sum_{j} \left( 1 + \log \sigma_j^2 - \mu_j^2 - \sigma_j^2 \right)

Sampling is made differentiable by moving the randomness into a parameter-free noise variable (Section 2.4, arXiv 1312.6114):

ϵ∼N(0,I),z=μ+σ⊙ϵ \epsilon \sim \mathcal{N}(0, I), \qquad z = \mu + \sigma \odot \epsilon

Now z z is a deterministic function of μ \mu and σ \sigma , with ∂z/∂μ=1 \partial z / \partial \mu = 1 and ∂z/∂σ=ϵ \partial z / \partial \sigma = \epsilon (derived), so reconstruction gradients flow back into the encoder. The KL pulls μ \mu toward 0 and σ \sigma toward 1, keeping the latent space smooth and bounded.

Inference At generation time nothing samples from N(0,I) \mathcal{N}(0, I) : the LM's diffusion or flow head generates the next latent from context, and the decoder turns it into audio. The learned generator replaces the simple prior; the prior only shapes the latent space during tokenizer training.

Tokenizer What the paper states
VibeVoice acoustic tokenizer (arXiv 2508.19205) σ-VAE variant from LatentLM, chosen against variance collapse in autoregressive use. The encoder predicts the mean μ \mu ; σ \sigma is a pre-defined distribution, not learned. Causal encoder, 3200x downsampling of 24 kHz audio, 7.5 frames per second. Training objective follows DAC, including its discriminator and loss designs.
Stable Audio Open autoencoder (arXiv 2407.14358) VAE bottleneck with latent size 64; 156M parameters. Losses: multi-resolution STFT reconstruction, adversarial with feature matching (5 discriminators as in EnCodec), and a KL term down-weighted by 10−4 10^{-4} . A DiT trains on latent sequences of length 1024, about 47 s.
DiTTo-TTS Mel-VAE (arXiv 2406.11427) Mel-spectrogram autoencoder with a 10.76 Hz latent, 7 to 8 times more compression than EnCodec. It is trained with an RVQ inside, but the diffusion model targets the latent before quantization. The authors find quantization matters for training the autoencoder and is irrelevant to the diffusion model.

Inference The small KL weight in Stable Audio Open suggests the KL acts as a light regulariser, not a tight bottleneck. The paper does not say this.

Why go continuous: MELLE argues that vector quantization, designed for compression, sacrifices fidelity compared with continuous representations (arXiv 2407.08551). MELLE itself regresses mel frames with a variational latent sampling module, and leaves VAE latents for future work (arXiv 2407.08551). The cost is a generation head that handles continuous targets, as described in Continuous autoregression, and harder RL, covered in Online RL rewards.

Comparison

Tokenizer Bottleneck Quantizer Key losses Rate Used by
SoundStream (arXiv 2107.03312) Discrete RVQ, 1024 entries, EMA codebooks, quantizer dropout Adversarial, feature matching, spectral reconstruction 320 samples per frame at 24 kHz SoundStorm (arXiv 2305.09636)
EnCodec (arXiv 2210.13438) Discrete RVQ, up to 32 x 1024, EMA Time and mel reconstruction, MS-STFT adversarial, feature matching, commitment, balancer 75 Hz at 24 kHz VALL-E (arXiv 2301.02111); MusicGen at 32 kHz, 50 Hz (arXiv 2306.05284)
DAC (arXiv 2306.06546) Discrete RVQ, factorised L2-normalised lookup, dropout p=0.5 p = 0.5 Multi-scale mel, adversarial, feature matching, codebook, commitment 86 Hz, 9 codebooks, 8 kbps Loss design reused by VibeVoice (arXiv 2508.19205)
Mimi (arXiv 2410.00037) Discrete Split RVQ, 8 x 2048, dropout, quantization on 50% of sequences Feature matching, adversarial, WavLM distillation (no reconstruction loss) 12.5 Hz, 1.1 kbps Moshi (arXiv 2410.00037)
CosyVoice 2 tokenizer (arXiv 2412.10117) Discrete FSQ, no codebook ASR objective (supervised) 25 Hz CosyVoice 2
VibeVoice acoustic (arXiv 2508.19205) Continuous σ-VAE with fixed σ \sigma DAC-style losses 7.5 Hz VibeVoice
Stable Audio Open AE (arXiv 2407.14358) Continuous VAE, 64-dim latent STFT reconstruction, adversarial, feature matching, KL (weight 10−4 10^{-4} ) 1024 steps for about 47 s Stable Audio Open DiT
Mel-VAE (arXiv 2406.11427) Continuous target (RVQ inside the autoencoder) Pre-quantization latent Not covered here 10.76 Hz DiTTo-TTS
In the interview, say:

"An RVQ codec is a VQ-VAE-style autoencoder with a discrete bottleneck, trained with reconstruction, adversarial and commitment losses. A continuous tokenizer is the VAE version: a Gaussian latent with a KL term, which removes quantization loss but needs a diffusion or flow head."

How an LM then models the codebooks is in Training an LM on RVQ tokens.

Training an LM on RVQ tokens: flattening, parallel, delay, depth

Once the codec exists, the LM must model K K codebooks per frame. MusicGen defines a codebook pattern as a partition of all (time, codebook) pairs into steps, and the model predicts every position in a step in parallel (arXiv 2306.05284). Its two reference patterns, with frame t t and codebook k k , are below.

parallel: Ps={(s,k)},delay: Ps={(s−k+1, k):s−k≥0} \text{parallel: } P_s = \{(s, k)\}, \qquad \text{delay: } P_s = \{(s - k + 1,\, k) : s - k \ge 0\}

Source: MusicGen, Eqs. 5 and 6 (arXiv 2306.05284). In the delay pattern, codebook k k is shifted by k−1 k - 1 steps. Step s s therefore predicts codebook 1 of frame s s , codebook 2 of frame s−1 s - 1 , and so on. Each token sees the lower codebooks of its own frame as context, and the sequence stays near T T steps long. Inference From Eq. 6, the delay pattern needs T+K−1 T + K - 1 steps for T T frames. MusicGen's 30 s ablation reports 1500 steps for delay and parallel. Positions absent from a step get a special token, and the first input is the sum of special tokens (arXiv 2306.05284).

step s 1 2 3 4 5 6 7 codebook 1 codebook 2 codebook 3 codebook 4 f1 f2 f3 f4 f1 f2 f3 f4 f1 f2 f3 f4 f1 f2 f3 f4 one step predicts one diagonal (outlined: s = 4) cell fk = frame k T = 4 frames, K = 4 codebooks, 7 steps
The delay pattern for four frames and four codebooks. Each row is shifted one step more than the row above, so one step covers a diagonal of the grid.
Pattern Steps (per frame / total) Dependency captured Latency Example
Flattening K K / TK T K (6000 for 30 s, K=4 K = 4 ) Exact factorisation; MusicGen FAD 0.86, best Highest; loses the codec's low frame rate MusicLM-style (arXiv 2306.05284)
Parallel 1 / T T (1500) Ignores same-frame dependence; FAD 2.58 Lowest EnCodec's entropy LM (arXiv 2210.13438)
Delay 1 / about T T (1500) Lower codebooks seen first; FAD 0.96 Near parallel, plus K−1 K - 1 steps of start-up (Inference) MusicGen (arXiv 2306.05284)
Coarse first 2 / 2T 2T (3000) Codebook 1 for all steps, then the rest in parallel; FAD 1.98 Needs all of codebook 1 first MusicGen ablation (arXiv 2306.05284)
AR + NAR AR over codebook 1; 7 NAR passes Codebook 1 sequential; later ones conditioned on earlier levels NAR cuts time from O(T) O(T) to O(1) O(1) per level VALL-E (arXiv 2301.02111)
Depth transformer Temporal: 1; depth: up to K K / S S temporal steps Each sub-token sees earlier sub-tokens of its frame Small depth model per frame Moshi (arXiv 2410.00037)
Codebook 0 + MTP One backbone step per frame Zeroth codebook from a linear head; MTP module emits the residuals Lightweight fixed-step MTP Qwen3-Omni (arXiv 2509.17765)
Masked parallel Level by level, several iterations per level Coarse to fine, conditioned on semantic tokens 30 s of audio in 0.5 s on a TPU-v4 SoundStorm (arXiv 2305.09636)

Inference The latency column is my reading of the step counts, except the NAR and SoundStorm figures, which the papers state. FAD values are MusicGen's 30 s ablation (lower is better).

  • MusicGen reports that flattening improves generation but costs far more, and that delay reaches similar performance at a fraction of the cost. Its ablation table lists 1500 steps for delay, 6000 for flattening, and FAD of 0.96 and 0.86 respectively (arXiv 2306.05284).
  • VALL-E uses an autoregressive model for the first of 8 quantizers and a non-autoregressive model for the other seven, called once per quantizer. The authors note that early quantizers recover acoustic properties such as speaker identity and later ones learn fine acoustic detail (arXiv 2301.02111).
  • Moshi's RQ-Transformer runs a Temporal Transformer over S S steps and a smaller Depth Transformer over at most K K sub-tokens per step, instead of one model over KS K S steps. With 8 codebooks at 12.5 Hz, a flat sequence would be 100 steps per second of audio (arXiv 2410.00037).
  • Moshi also delays the acoustic tokens against the semantic token by τ \tau steps: Vs,1=As,1 V_{s,1} = A_{s,1} and Vs,q=As−τ,q V_{s,q} = A_{s-\tau,q} for q>1 q > 1 . The authors found a delay of 1 or 2 steps greatly improves quality, since it lets the larger Temporal Transformer model the semantic-acoustic dependence (arXiv 2410.00037). For how Moshi's streams are timed, see Timing logic.
  • Qwen3-Omni's Talker predicts one codec frame per step: a linear head for the zeroth codebook, then an MTP module for all residual codebooks (arXiv 2509.17765).
  • SoundStorm sums the embeddings of all tokens in a frame, so the sequence length equals the number of frames, whatever the number of quantizers. It uses a bidirectional Conformer with one head per RVQ level, and fills in levels coarse to fine (arXiv 2305.09636).
In the interview, say:

"With K codebooks per frame, flattening is best but K times longer; MusicGen's delay pattern gets close at T plus K minus 1 steps. For streaming speech I would model codebook 0 per frame and let a small depth or MTP head, or a delay pattern, handle the residuals."

Generation paradigms

There are four ways to generate speech from text or from an LM state. The dominant high-quality design is the hybrid.

Text or LM state AR LM Flow decoder Vocoder text / state speech tokens mel audio content + prosody acoustic detail, chunk by chunk HiFi-GAN / BigVGAN
Hybrid AR + flow: the LM decides content and prosody; the flow decoder and vocoder restore acoustics.
Paradigm Examples Core idea
AR codec LM Llasa (arXiv 2502.04128), Spark-TTS (arXiv 2503.01710), CSM, Moshi (arXiv 2410.00037) One Transformer predicts tokens left to right
NAR masked SoundStorm (arXiv 2305.09636), MaskGCT (arXiv 2409.00750) Parallel iterative filling of tokens
NAR flow/diffusion Voicebox (arXiv 2306.15687), F5-TTS (arXiv 2410.06885), Seed-TTS DiT (arXiv 2406.02430) Generate the whole utterance by ODE or diffusion
Hybrid AR + flow CosyVoice 2 (arXiv 2412.10117), Qwen3-TTS 25 Hz (arXiv 2601.15621), FlashTTS (arXiv 2606.09141) LM for content and prosody, flow for acoustics

AR codec LMs

  • Llasa: a single Llama-style Transformer over X-Codec2 tokens, 1B/3B/8B, with inference-time search using speech-understanding verifiers (arXiv 2502.04128).
  • Spark-TTS: Qwen2.5 LLM plus BiCodec (arXiv 2503.01710).
  • CosyVoice 2: an LLM predicts speech tokens, then a chunk-aware causal flow-matching model decodes them (arXiv 2412.10117).
  • Newer entries: IndexTTS2 (arXiv 2506.21619), Step-Audio-EditX (LLM-based audio editing with reinforcement learning; arXiv 2511.03601), Higgs Audio v2 (pretrained on over 10 million hours of audio, per the Boson AI repo).

Multi-codebook handling

An RVQ frame has several codes, so the model needs a trick.

Past frames codes Temporal model one step per frame Depth model small, per codebook codes state c1 c2 ... cN codebooks of frame t, one by one frame t codes become input for step t+1
RQ-style split: the temporal model advances once per frame; the depth model fills in that frame's codebooks.
  • Sesame CSM: a Llama backbone models the zeroth Mimi codebook from interleaved text and audio, and a smaller audio decoder with a linear head per codebook models the rest; Mimi runs at 12.5 Hz (Sesame blog).
  • Moshi: K=2Q+1=17 K = 2Q + 1 = 17 streams per step with Q=8 Q = 8 codebooks (8 user audio, 8 own audio, 1 text). Its RQ-Transformer splits temporal and per-codebook (depth) modelling (arXiv 2410.00037).
  • Qwen3-Omni's Talker uses an MTP module to emit codec frames (arXiv 2509.17765).

NAR notes

SoundStorm uses bidirectional attention and confidence-based parallel decoding to generate codec tokens, and the authors report 30 s of audio in 0.5 s on a TPU-v4 (arXiv 2305.09636). MaskGCT is two-stage (text to semantic tokens, then semantic to acoustic tokens), mask-and-predict in both, with no explicit alignment or phone-level duration model, trained on 100K h (arXiv 2409.00750).

Trap:

MaskGCT is a masked generative model (mask-and-predict). Do not cite it as a flow model.

The "LM for content, flow for acoustics" split

  • Inference Why the LM: text streaming, interleaving with text, reuse of LLM serving stacks, in-context learning.
  • Inference Why flow: it can restore acoustic detail lost to quantization, and CosyVoice 2 shows it can decode chunk by chunk (arXiv 2412.10117).
Inference:

The hybrid may be transitional, since Qwen3-Omni replaces block-wise diffusion with a lightweight causal ConvNet over a multi-codebook codec (arXiv 2509.17765).

Say this in the interview:

"The LM decides what is said and how, the renderer decides how it sounds. That split is why I can stream the LM and distil the renderer separately."

From tokens to waveform: decoder paths

Mel is one route to audio, not the only one. Four routes are in use, and they differ in what the LM predicts and what turns it into samples. Codecs and flow decoders are covered in the neighbouring sections; this one compares the endings.

streaming-friendly path (Moshi, Qwen3-Omni) Codec tokens all codebooks one 80 ms frame at a time Codec decoder causal waveform samples Waveform Semantic tokens coarse, cheap Flow matching speaker prompt Mel 50 Hz frames Vocoder HiFi-GAN, BigVGAN Waveform Latents continuous diffusion head output VAE decoder audio Waveform Mel frames continuous regressed by the LM Vocoder HiFi-GAN audio Waveform
Four decoder routes from the LM's output to a waveform. The highlighted route is the one used by streaming duplex systems.
Route Systems Reported detail
1. Codec tokens, codec decoder Moshi (arXiv 2410.00037), Qwen3-Omni (arXiv 2509.17765), MaskGCT (arXiv 2409.00750) Mimi is causal for both encoding and decoding, with an 80 ms frame (arXiv 2410.00037). Qwen3-Omni's Talker predicts the zeroth codebook, an MTP module predicts all residual codebooks, and a lightweight causal ConvNet (Code2Wav) makes the waveform (arXiv 2509.17765). MaskGCT's acoustic codec follows DAC but uses a Vocos decoder (arXiv 2409.00750).
2. Semantic tokens, flow matching, mel, vocoder CosyVoice 2 (arXiv 2412.10117), GLM-4-Voice (arXiv 2412.02612), Kimi-Audio (arXiv 2504.18425), Step-Audio 2 (arXiv 2507.16632) CosyVoice 2 samples a 50 Hz mel spectrogram, conditioned on speech tokens, reference speech and a speaker embedding; a pre-trained vocoder (unnamed in the paper) then produces audio (arXiv 2412.10117). GLM-4-Voice and Step-Audio 2 pair flow matching with HiFi-GAN (arXiv 2412.02612, arXiv 2507.16632). Kimi-Audio turns 12.5 Hz tokens into 50 Hz mel, then applies BigVGAN per chunk, with next-chunk tokens as look-ahead (arXiv 2504.18425).
3. Continuous latents, VAE decoder VibeVoice (arXiv 2508.19205), DiTTo-TTS (arXiv 2406.11427) VibeVoice's VAE tokenizer maps 24 kHz audio to 7.5 frames per second; a light diffusion head predicts each frame and the tokenizer decoder recovers the audio (arXiv 2508.19205). DiTTo-TTS diffuses in a Mel-VAE latent space; the decoder gives a mel spectrogram and BigVGAN finishes the job, so it ends like route 2 (arXiv 2406.11427).
4. Mel frames, vocoder MELLE (arXiv 2407.08551) Autoregressively generates continuous mel frames from text; an open-source HiFi-GAN vocoder reconstructs audio (arXiv 2407.08551).

Details on the LM side are in Codecs and speech tokenizers, Continuous autoregression and Diffusion and flow matching.

Codec decoder or vocoder

A codec decoder is trained together with its encoder and quantizer to rebuild the waveform from the codes. DAC is an example: a neural codec that turns audio into discrete tokens, with about 90x compression of 44.1 kHz audio at 8 kbps (arXiv 2306.06546). A vocoder is a separate model that maps an acoustic representation, usually a mel spectrogram, to a waveform. HiFi-GAN is a GAN vocoder that generates raw waveforms (arXiv 2010.05646). BigVGAN is a GAN vocoder built to generalise to unseen speakers and recording conditions without fine-tuning (arXiv 2206.04658).

Is the STFT reversible?

What you keep Reversible? How audio comes back
Complex STFT (magnitude and phase) Yes: inverse FFT per frame, then overlap-add, given a window and hop that overlap correctly Inverse STFT
Magnitude only No: phase is discarded, and many signals share one magnitude Phase retrieval: Griffin–Lim iterates between a phase estimate and a consistent STFT (Griffin and Lim, IEEE TASSP 1984); the Fast Griffin–Lim Algorithm accelerates it (Perraudin, Balazs and Søndergaard, IEEE WASPAA 2013)
Mel spectrogram No, and lossier: the mel filterbank also merges frequency bins Neural vocoders: HiFi-GAN (arXiv 2010.05646) and BigVGAN (arXiv 2206.04658) generate the waveform; Vocos directly generates Fourier spectral coefficients and reports an order-of-magnitude speedup over time-domain GAN vocoders at matching quality (arXiv 2306.00814)

Inference Mel features suit models but drop phase and fine frequency detail, so classical inversion is slow and artefact-prone; learned vocoders, or codec decoders that skip spectrograms entirely, replaced it.

What phase adds to the signal

Magnitude says how much energy sits at each frequency in a frame. Phase says where each component is in its cycle, so it fixes how the components line up in time.

  • Transients and waveform shape: a plosive or onset is sharp because many components peak at the same instant; keeping magnitude and scrambling phase smears that energy across the frame. Inference
  • Timing inside a frame: the group delay, τ(ω)=− dϕ(ω)/dω \tau(\omega) = -\,d\phi(\omega)/d\omega , locates energy in time more finely than the frame length (standard definition).
  • Fine pitch: the instantaneous frequency, the rate of phase change over time, places a harmonic more precisely than the FFT bin spacing (standard definition).
  • Frame consistency: overlapping STFT frames must agree for overlap-add to rebuild the signal; inconsistent phase is what phase retrieval has to repair (see the table above). Inference

The research record on how much phase matters:

  • Oppenheim and Lim argue that magnitude and phase play different roles, that many important features of a signal survive when only the phase is kept, and that a finite-length signal can be reconstructed from phase alone to within a scale factor; their examples include images and speech (Oppenheim and Lim, "The Importance of Phase in Signals", Proc. IEEE 69(5), 1981).
  • Paliwal and Alsteris challenge the traditional view that magnitude dominates for short (speech-length) windows: in their listening tests the short-time phase spectrum can contribute to intelligibility comparably to the magnitude spectrum when the window function and analysis-modification-synthesis parameters are chosen well (Paliwal and Alsteris, Eurospeech 2003; Speech Communication 2005).
  • The same line of work reports a mismatch for machines: with an MFCC front-end, recognition of phase-only stimuli at short windows was much worse than of magnitude-only stimuli (Alsteris and Paliwal, Interspeech 2004 and 2005).

Inference Models avoid predicting phase directly because it wraps every 2π 2\pi and looks noisy frame to frame, so most systems model magnitude or mel and let a vocoder, Griffin–Lim or a codec decoder supply consistent phase; Vocos is the exception that generates the spectral coefficients itself (arXiv 2306.00814).

Why route 2 exists, and why route 1 streams

Inference Semantic tokens are cheap for an LM to predict but drop voice detail. A flow model restores it, conditioned on a speaker prompt (CosyVoice 2 uses reference speech and a speaker embedding, arXiv 2412.10117). The cost is extra stages and look-ahead, as in Kimi-Audio, where the look-ahead delays only the first chunk (arXiv 2504.18425). Chunk-wise streaming of this kind is covered in Streaming and low latency.

Route 1 has one stage after the LM, and that stage can be causal. Qwen3-Omni can output the waveform immediately after the Talker generates each token (arXiv 2509.17765). Inference The price is on the LM side: it must predict every acoustic codebook of each frame. Moshi uses a depth transformer for that and Qwen3-Omni an MTP module, as described in Generation paradigms.

Why not predict samples directly

Inference A waveform at 24 kHz has 24,000 samples per second. Mimi emits 12.5 frames per second (arXiv 2410.00037), so one frame stands for 1,920 samples. Predicting samples one by one would make the sequence 1,920 times longer than a frame-rate LM sees. That is why current systems predict tokens or latents and leave sample-level detail to a decoder.

In the interview, say:

"Mel is one route among four. Streaming duplex systems like Moshi and Qwen3-Omni skip it: the LM predicts codec tokens and a causal codec decoder makes samples frame by frame. Mel plus a vocoder buys voice quality through a flow stage, at the cost of more stages and look-ahead."

Diffusion and flow matching for speech

Flow matching is the objective behind many recent TTS systems. It plays two roles: fully NAR TTS, and the acoustic decoder after an AR LM.

Noise Data diffusion path: curved, more steps flow matching (OT) path: straight, fewer steps
Schematic: a straight path needs fewer steps than a curved one (inference). Lipman et al. report OT paths sample faster.

Diffusion objective (DDPM)

The forward process mixes clean data x0 x_0 with Gaussian noise ϵ∼N(0,I) \epsilon \sim \mathcal{N}(0, I) . The network ϵθ \epsilon_\theta learns to predict that noise from the noisy input and the timestep t t .

xt=αˉt x0+1−αˉt ϵ,L=E ∥ϵ−ϵθ(xt,t)∥2 x_t = \sqrt{\bar\alpha_t}\,x_0 + \sqrt{1-\bar\alpha_t}\,\epsilon, \qquad \mathcal{L} = \mathbb{E}\,\big\|\epsilon - \epsilon_\theta(x_t, t)\big\|^2

Here αˉt \bar\alpha_t is the cumulative noise schedule, so it fixes how much signal survives at step t t . Sampling runs the learned denoiser backwards from pure noise.

This is the noise-prediction objective of the DDPM paper (arXiv 2006.11239).

Conditional flow matching objective

Flow matching regresses a network onto a velocity field. With a linear (optimal-transport) path, x0 x_0 is noise and x1 x_1 is data.

xt=(1−t) x0+t x1,L=E ∥vθ(xt,t)−(x1−x0)∥2 x_t = (1-t)\,x_0 + t\,x_1, \qquad \mathcal{L} = \mathbb{E}\,\big\|v_\theta(x_t, t) - (x_1 - x_0)\big\|^2

The target velocity x1−x0 x_1 - x_0 is constant along the path, so training is plain regression. There is no noise schedule and no SNR weighting.

Sampling integrates the learned ODE from noise to data:

dxdt=vθ(x,t) \frac{\mathrm{d}x}{\mathrm{d}t} = v_\theta(x, t)

The linear path and velocity regression follow Flow Matching with optimal-transport paths (arXiv 2210.02747).

Classifier-free guidance (CFG)

CFG pushes the output toward the condition c c by extrapolating away from an unconditional prediction ∅ \varnothing . The guidance scale w w sets the strength.

v^=vθ(x,t,c)+w (vθ(x,t,c)−vθ(x,t,∅)) \hat v = v_\theta(x,t,c) + w\,\big(v_\theta(x,t,c) - v_\theta(x,t,\varnothing)\big)

The cost is two forward passes per sampling step, so CFG doubles inference compute. The same form applies to a diffusion network by swapping vθ v_\theta for ϵθ \epsilon_\theta .

Classifier-free guidance was introduced for diffusion models (arXiv 2207.12598); the form above applies it to a velocity network.

In speech, ZipVoice targets the CFG cost (arXiv 2506.13053). Lipman et al. show OT paths train and sample faster than diffusion paths (arXiv 2210.02747).

Inference, why flow matching won:

A plain regression target with no noise schedule or SNR weighting. Straighter paths mean fewer steps and better RTF. Infilling is natural (Voicebox, E2).

Where it sits

Role Models
Fully NAR TTS Voicebox (arXiv 2306.15687), E2 TTS (arXiv 2406.18009), F5-TTS (arXiv 2410.06885; the authors report RTF 0.15, trained on 100K h), ZipVoice (arXiv 2506.13053; the authors report 3x smaller and up to 30x faster than a DiT-based flow-matching baseline)
Diffusion, not flow DiTTo-TTS (latent diffusion DiT, 790M parameters, 82K h; arXiv 2406.11427); Seed-TTS DiT (fully diffusion-based NAR variant; arXiv 2406.02430)
Decoder after AR LM CosyVoice 2 (arXiv 2412.10117), GLM-4-Voice (conditional flow matching plus HiFi-GAN; arXiv 2412.02612), Kimi-Audio (chunk-wise flow matching from 12.5 Hz tokens to 50 Hz mel, then a BigVGAN vocoder; arXiv 2504.18425)

Counterexamples and traps

Do not mislabel these as flow matching:
  • Qwen3-Omni: the Talker emits AR codec frames with an MTP module; a lightweight causal ConvNet (Code2Wav) makes the waveform. Not flow. Qwen2.5-Omni used a sliding-window DiT (arXiv 2503.20215).
  • MiniMax-Speech has a "Flow-VAE" (arXiv 2505.07916). Do not call it flow matching.
  • MaskGCT: mask-and-predict in both stages (arXiv 2409.00750).

ASR has little flow work. Drax is the clearest, using discrete flow matching for NAR ASR (arXiv 2510.04162).

Say this in the interview:

"Flow matching is regression onto a velocity field, so training is simple and few-step sampling is natural. In S2S it is mostly the acoustic renderer behind an AR content model."

How flow-matching TTS works, and getting high-fidelity audio out

A flow-matching TTS model learns to fill a masked span of a mel spectrogram, given text and the audio around the gap. At inference the gap is the whole utterance after a reference clip, and an ODE solver fills it from noise. The objective and CFG are derived in Diffusion and flow matching; this section walks the pipeline step by step, then lists the levers that decide how good the final audio sounds.

Training: masked infilling Text + fillers Context mel + noisy masked span x_t Network v_θ also sees flow time t predicted v Regression loss target x1 - x0 mask 70 to 100% of frames; loss on masked frames Inference: fill everything after the prompt Noise x0 + text + prompt mel N ODE steps Euler or midpoint, CFG x_t to x_(t+dt), repeat mel Vocoder Waveform CFG: two passes per step
Flow-matching TTS. Top: training regresses the velocity on a masked span, given text and the unmasked audio. Bottom: inference integrates the learned ODE from noise, then a vocoder renders the mel.

Training: text-guided infilling

Voicebox is a non-autoregressive flow-matching model trained to infill speech, given audio context and text (arXiv 2306.15687). Its loss covers only the masked frames; the unmasked frames are fed in and the masked ones are set to zero. Voicebox expands phones to frame level using forced-alignment durations. E2 TTS drops that: it pads the character sequence with a filler token up to the mel length, so no alignment or grapheme-to-phoneme step is needed (arXiv 2406.18009). F5-TTS keeps the filler padding but refines the text with four ConvNeXt V2 blocks before concatenating it with the speech input, and uses a DiT backbone with adaLN-zero (arXiv 2410.06885).

Model Text input Backbone Mel and vocoder Sampling as reported
Voicebox (arXiv 2306.15687) Frame-level phones, forced alignment Flow model plus a separate duration model 80-dim log mel at 100 Hz; HiFi-GAN Midpoint, NFE 32 by default; CFG α=0.7 \alpha = 0.7 for monolingual TTS
E2 TTS (arXiv 2406.18009) Characters plus fillers Transformer with U-Net skips, 335M parameters 100-dim log mel from 24 kHz audio; BigVGAN-based Midpoint, 32 NFE, CFG strength 1.0
F5-TTS (arXiv 2410.06885) Characters plus fillers, ConvNeXt V2 DiT, adaLN-zero, about 336M parameters 100-dim log mel, 24 kHz, hop 256; Vocos by default Euler, 16 or 32 NFE, CFG α=2 \alpha = 2

Duration: fix the length first

A non-autoregressive model must know the output length before it starts. Voicebox predicts phone durations with a separate regression model (arXiv 2306.15687). In E2 TTS the total length is the prompt length plus the generated length, and that length can be chosen freely. Its main experiments still used a separately trained regression duration model, for a fair comparison with Voicebox (arXiv 2406.18009). F5-TTS skips the model and estimates duration from the ratio of the prompt transcript length to the text length (arXiv 2410.06885).

Inference The F5 paper does not spell out which quantity the ratio scales. The natural reading is the prompt's audio duration. Either way, the estimate also acts as a speech-rate control: a shorter total gives faster speech. E2 TTS tested rates from 0.7 to 1.3 (arXiv 2406.18009).

Zero-shot voice cloning is infilling

At inference the reference clip becomes the unmasked context at the start. E2 TTS builds the input from the prompt's mel features, a zero-filled block for the part to generate, and the character sequence (prompt transcript, then target text, then fillers) (arXiv 2406.18009). The model continues the clip in the same voice, so no separate speaker encoder is part of that description. The same infilling objective gives Voicebox its other tasks, such as noise removal and content editing (arXiv 2306.15687).

Sampling: ODE steps, CFG and Sway Sampling

Sampling integrates dx/dt=vθ(x,t) \mathrm{d}x/\mathrm{d}t = v_\theta(x,t) from noise with a fixed-step solver. Voicebox reports high quality in under 10 NFEs, and its default midpoint step of 0.0625 gives NFE 32 (arXiv 2306.15687). CFG on the conditions (see the shared definition above) roughly doubles the cost, since the model runs once with and once without them. F5-TTS drops the masked speech with probability 0.3 and then speech and text together with probability 0.2 during training, and reports RTF 0.15 at 16 NFE and 0.31 at 32 NFE for 10 s of speech on an RTX 3090 (arXiv 2410.06885).

F5-TTS adds Sway Sampling, an inference-only warp of the time grid that needs no retraining. It draws u∼U[0,1] u \sim U[0,1] and maps it to

t=u+s(cos⁡(π2u)−1+u),s=−1 by default, t = u + s\Big(\cos\big(\tfrac{\pi}{2}u\big) - 1 + u\Big), \qquad s = -1 \text{ by default,}

which places more solver steps at small t t . The authors argue that the early steps sketch the contour of the speech. In their ablation (Table 5, 32 NFE, LibriSpeech-PC) WER falls from 2.84 to 2.41 and speaker similarity rises from 0.62 to 0.66. They report that it also helps E2 TTS (arXiv 2410.06885).

The AR plus flow hybrid: CosyVoice 2

Here an AR language model writes speech tokens and the flow model only renders acoustics (arXiv 2412.10117). The flow model is conditioned on semantic tokens, a speaker embedding from an external 3D-Speaker model, and a masked speech feature, which at inference is the reference mel. Tokens run at 25 Hz and are up-sampled by two to match the 50 Hz mel at 24 kHz. A look-ahead layer (a right-padded 1-D convolution) precedes the up-sampling. Training masks 70 to 100% of the final mel frames, as in the NAR models.

The network is a causal convolutional Transformer UNet. For streaming, it samples one of four attention masks per training example, uniformly: non-causal, full-causal, chunk-M (past plus M future frames) and chunk-2M. Inference uses a cosine time schedule t:=1−cos⁡(12tπ) t := 1 - \cos(\tfrac{1}{2}t\pi) , which gives more steps to the initial stage, CFG strength 0.7 and 10 NFE. A pre-trained vocoder, not named in the paper, then makes the waveform. Inference Because the tokens fix the content and its length, this variant needs no duration estimate. Chunked use of this decoder is covered in Streaming and low latency.

Output: mel plus vocoder, or latent plus decoder

The flow model's output is a mel (or a latent) that still has to become samples. The routes and their trade-offs are compared in From tokens to waveform. Everything below concerns the last two boxes of the inference row.

Getting high fidelity out

Sample rate and bandwidth. The systems above use 24 kHz mels (E2, F5, CosyVoice 2) and Mimi uses 24 kHz audio (arXiv 2410.00037). DAC targets 44.1 kHz and trains on speech, music and environmental sound (arXiv 2306.06546). Its authors warn that the true sampling rate of source data varies (Common Voice is commonly 8 to 16 kHz), and that models trained on such data often fail to reconstruct content above the data's average true rate. Stable Audio Open generates 44.1 kHz stereo, yet its authors state it cannot produce intelligible speech or singing, so a high rate does not make a model a TTS system (arXiv 2407.14358).

Vocoder. HiFi-GAN pairs a multi-period discriminator with the multi-scale discriminator from MelGAN, plus feature-matching and mel L1 losses (arXiv 2010.05646). It reports MOS 4.36 for its V1 model against 4.45 for ground truth on a single-speaker set. BigVGAN adds the periodic Snake activation, an anti-aliased up-sample, activate, down-sample step with low-pass filters, and a multi-resolution spectrogram discriminator in place of the multi-scale one (arXiv 2206.04658). It is trained on LibriTTS at 24 kHz with a 100-band log mel and hop 256, scales to 112M parameters, and the authors claim it generalises to unseen speakers, languages and recording conditions. In F5-TTS, swapping Vocos for BigVGAN lowered WER from 1.83 to 1.62 at 32 NFE on Seed-TTS test-en (arXiv 2410.06885). That is an intelligibility measure, not a direct audio-quality score.

Codec bitrate and losses. DAC reaches about 90x compression of 44.1 kHz audio at 8 kbps, using nine 10-bit codebooks at an 86 Hz frame rate (arXiv 2306.06546). Its ViSQOL score rises from 3.76 at 1.78 kbps to 4.18 at 8 kbps, against 3.13 for EnCodec at 12 kbps. Its listening test finds it well above EnCodec at every bitrate, yet still below the reference. Naive quantizer dropout hurt full-bandwidth quality, so DAC applies it with probability 0.5. The loss mix is adversarial (1.0), feature matching (2.0) and multi-scale mel L1 (15.0). Mimi shows how much the losses matter: training with only adversarial and feature losses lifted MUSHRA from 58.8 to 81.0 at 1.1 kbps, while objective metrics degraded (arXiv 2410.00037). Its split RVQ raised MUSHRA from 57.8 to 64.0 and worsened ABX from 6.5% to 8.1%.

Super-resolution as a post step. AudioSR is a diffusion-based model that upsamples input of 2 to 16 kHz bandwidth to 48 kHz sampling (arXiv 2309.07314). Moshi's fine-tuning data, Fisher, is 8 kHz telephone audio, which the authors upsample to 24 kHz with AudioSR (arXiv 2410.00037). Inference A generative upsampler invents plausible high frequencies; it does not recover them.

Measuring it. MUSHRA (DAC, Mimi) and ViSQOL (DAC) are used for codecs. UTMOS comes from a MOS-prediction system for the VoiceMOS Challenge 2022 (arXiv 2204.02152), and F5-TTS reports it as an objective naturalness metric next to CMOS and SMOS. UTMOS is not fidelity to a reference: F5-TTS scores 3.72 against ground truth 3.53 on Seed-TTS test-en, but 3.89 against 4.09 on LibriSpeech-PC (arXiv 2410.06885).

Fidelity checklist

Lever What it fixes Cost Source
Full-band sample rate and data (44.1 kHz) Missing content above the band limit of the training data More samples to decode; needs full-band training sources DAC (arXiv 2306.06546)
Stronger vocoder (Snake, anti-aliasing, multi-resolution discriminator) Quality and generalisation to unseen speakers and conditions Larger model, up to 112M parameters BigVGAN (arXiv 2206.04658)
Adversarial and feature-matching losses Perceived quality at low bitrate Objective reconstruction metrics can degrade Mimi (arXiv 2410.00037), HiFi-GAN (arXiv 2010.05646)
More codebooks, higher bitrate Reconstruction error (ViSQOL 3.76 to 4.18, 1.78 to 8 kbps) Inference: longer token sequences for an AR LM DAC (arXiv 2306.06546)
Quantizer dropout, probability 0.5 Keeps low-bitrate use without losing full-bandwidth quality One tuned hyperparameter DAC (arXiv 2306.06546)
Mel resolution (100 bins, hop 256 at 24 kHz) matched to the vocoder Inference: the detail available to the vocoder Inference: more frames for the flow model F5-TTS, BigVGAN configurations
More ODE steps; Sway Sampling WER and speaker similarity (2.84 to 2.41; 0.62 to 0.66) Steps scale compute linearly; Sway is free F5-TTS (arXiv 2410.06885)
Audio super-resolution of band-limited data 8 kHz training audio upsampled to 24 kHz Extra diffusion model; invented high frequencies (inference) AudioSR (arXiv 2309.07314), Moshi (arXiv 2410.00037)

Sources did not give a confirmed figure for loudness normalisation or PESQ, so they are left out.

In the interview, say:

"Flow-matching TTS is masked infilling: the model learns the velocity that turns noise into the missing mel, given text and the audio around the gap, and cloning is just infilling after a reference clip. Intelligibility comes from the flow model and the step budget; the last-mile fidelity comes from the vocoder or codec, the sample rate, and the training data's real bandwidth."

Continuous autoregression and next-token diffusion

A smaller, newer branch drops discrete tokens. An AR model predicts continuous latents, and a small diffusion or flow head samples each next frame or patch.

Model Design Notes
MELLE (arXiv 2407.08551) Regresses continuous mel frames; spectrogram flux loss; latent sampling replaces top-p The authors report a 47.9% relative WER reduction over VALL-E on continuation
DiTAR (ICML 2025; arXiv 2502.03930) LM over aggregated patch embeddings, bidirectional-attention diffusion transformer (LocDiT) generates each patch Temperature maps to the noise-injection point in the reverse ODE
VibeVoice (arXiv 2508.19205) LLM hidden states condition a light diffusion head predicting continuous VAE features; 7.5 Hz The authors report 80x better compression than EnCodec at comparable performance; up to 90 min of speech in a 64K context
dots.tts (arXiv 2606.07080) 2B continuous autoregressive TTS in a learned AudioVAE latent space; flow-matching head conditioned on full history The authors report first-packet latencies of 85 / 54 ms (output streaming / dual-streaming) after MeanFlow distillation
VoxCPM (arXiv 2509.24650) Tokenizer-free: a text-semantic LM and a residual acoustic LM guide a local diffusion decoder, trained end to end with a diffusion objective The authors report 1.8M h of bilingual training data for VoxCPM-0.5B

Inference The two lists below are design analysis, not results from the papers.

The case for

  • No quantization loss, so higher ceiling on naturalness.
  • Very low frame rates shorten the AR sequence (VibeVoice runs at 7.5 Hz).

The case against

  • Per-frame diffusion or flow cost on top of the LM step.
  • RL is harder without discrete tokens. GROW notes that trajectory-level policy-gradient RL for flow-matching TTS must track per-step likelihood ratios, which adds overhead (arXiv 2608.03215). CosyVoice 3's DiffRO optimises the speech tokens directly with a differentiable reward, and targets discrete-token models (arXiv 2505.17589).
  • Sampling control is weaker than top-p over a categorical.
  • Inference Qwen3-Omni uses a codec plus a causal ConvNet decoder (arXiv 2509.17765), which suggests continuous heads may stay niche for duplex products.
Say this in the interview:

"Continuous AR removes the quantization bottleneck, but you pay in per-step sampling cost and lose easy RL. For a duplex product I would start discrete and revisit."

Streaming and low-latency generation

Streaming TTS needs a causal, low-frame-rate codec on the AR side, and a chunkable, few-step decoder on the acoustic side.

LM tokens Flow decoder Audio out chunk 1 dec 1 pkt 1 chunk 2 dec 2 pkt 2 chunk 3 dec 3 pkt 3 chunk 4 dec 4 pkt 4 first-packet latency solid: chunk tokens; dashed: look-ahead tokens from the next chunk
Chunk-wise causal decoding: tokens arrive in chunks, each chunk is decoded with look-ahead, and audio streams out.

First-packet numbers

Do not compare across rows:

All figures are the authors' self-reports, and the definitions differ.

System Figure Source
Moshi 160 ms theoretical, about 200 ms in practice arXiv 2410.00037
Qwen3-TTS (12 Hz) 97 ms first packet arXiv 2601.15621
Qwen3-Omni 234 ms theoretical cold-start first packet arXiv 2509.17765
FlashTTS (Jun 2026) 325 ms first-packet latency with a 2-NFE decoder; its own table lists 843 ms for CosyVoice 2 at 10 NFE arXiv 2606.09141
Qwen3-ASR 0.6B Average TTFT as low as 92 ms (ASR side) arXiv 2601.21337

Latency levers

Lever How it works
Causal, low-rate codec Fewer AR steps per second of audio, no future context needed
Chunk-aware causal flow CosyVoice 2 samples one of four attention masks (non-causal, full-causal, chunk-M, chunk-2M) uniformly in training, so one model serves streaming and offline (arXiv 2412.10117)
Look-ahead Kimi-Audio uses chunk-wise causal masking with a look-ahead mechanism to fix chunk-boundary issues (arXiv 2504.18425); CosyVoice 2 also uses a look-ahead pre-convolution (arXiv 2412.10117)
Few-step distillation ZipVoice flow distillation reduces sampling steps and removes the CFG overhead (arXiv 2506.13053); MeanFlow learns average velocity over an interval (arXiv 2505.13447); Int-MeanFlow distils for speech (arXiv 2510.07979); FlashTTS uses an X-pred mean-flow decoder at 2 NFE (arXiv 2606.09141)
Multi-token prediction VITA-Audio emits several audio tokens per forward pass (arXiv 2505.03739); FlashTTS adds parallel MTP modules
Sampling schedule F5-TTS's Sway Sampling is an inference-time flow-step strategy that needs no retraining (arXiv 2410.06885)

MeanFlow's headline FID 3.43 is an ImageNet one-step result (arXiv 2505.13447). IntMeanFlow reports 1-NFE token-to-spectrogram and 3-NFE text-to-spectrogram inference for speech (arXiv 2510.07979).

Inference:

For flow decoders, step distillation is the biggest latency lever. For AR models, lower token rate plus a causal codec is.

Say this in the interview:

"I budget first-packet latency per stage. For the renderer the lever is NFE, so I would distil to 2 steps. For the LM it is token rate and multi-token prediction."