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.
| 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).
"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 () 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.
VQ-VAE: the base recipe
The encoder output is replaced by its nearest codebook vector , with , and the decoder reads (arXiv 1711.00937). The argmin has no gradient, so the decoder's gradient at is copied unchanged to (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.
Source: VQ-VAE, Eq. 3 (arXiv 1711.00937). Here 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 and reports little change for from 0.1 to 2.0. Its appendix describes an EMA update for the codebook instead of the second term (decay ), 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 quantizers, each coding what the previous ones missed (SoundStream, Algorithm 1; arXiv 2107.03312).
SoundStream (arXiv 2107.03312) trains this end to end with the following recipe.
- Quantizer dropout: for each example, sample uniformly in and use only the first 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 , , . 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 , each codebook has 1024 entries.
EnCodec keeps the recipe and changes the training signal (arXiv 2210.13438).
- It adds a commitment loss 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 . With weights , reference norm and the EMA of each gradient norm, it backpropagates the following. The commitment loss is excluded.
Source: EnCodec, Eq. 5 (arXiv 2210.13438), with and . 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 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 channels and rounds it to one of integer levels (arXiv 2309.15505).
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 . 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 and a decoder by maximising a variational lower bound (arXiv 1312.6114).
Source: Kingma and Welling, Eq. 3 (arXiv 1312.6114). The reparameterisation trick draws with , 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, (arXiv 1312.6114).
- Posterior: the encoder outputs a mean and standard deviation per latent dimension, so (arXiv 1312.6114).
- With both Gaussian, the KL term has a closed form and needs no sampling (Eq. 10, arXiv 1312.6114):
Sampling is made differentiable by moving the randomness into a parameter-free noise variable (Section 2.4, arXiv 1312.6114):
Now is a deterministic function of and , with and (derived), so reconstruction gradients flow back into the encoder. The KL pulls toward 0 and toward 1, keeping the latent space smooth and bounded.
Inference At generation time nothing samples from : 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 ; 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 . 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 | 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 | 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 ) | 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 |
"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 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 and codebook , are below.
Source: MusicGen, Eqs. 5 and 6 (arXiv 2306.05284). In the delay pattern, codebook is shifted by steps. Step therefore predicts codebook 1 of frame , codebook 2 of frame , and so on. Each token sees the lower codebooks of its own frame as context, and the sequence stays near steps long. Inference From Eq. 6, the delay pattern needs steps for 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).
| Pattern | Steps (per frame / total) | Dependency captured | Latency | Example |
|---|---|---|---|---|
| Flattening | / (6000 for 30 s, ) | Exact factorisation; MusicGen FAD 0.86, best | Highest; loses the codec's low frame rate | MusicLM-style (arXiv 2306.05284) |
| Parallel | 1 / (1500) | Ignores same-frame dependence; FAD 2.58 | Lowest | EnCodec's entropy LM (arXiv 2210.13438) |
| Delay | 1 / about (1500) | Lower codebooks seen first; FAD 0.96 | Near parallel, plus steps of start-up (Inference) | MusicGen (arXiv 2306.05284) |
| Coarse first | 2 / (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 to per level | VALL-E (arXiv 2301.02111) |
| Depth transformer | Temporal: 1; depth: up to / 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 steps and a smaller Depth Transformer over at most sub-tokens per step, instead of one model over 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 steps: and for . 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).
"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.
| 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.
- 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: streams per step with 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).
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).
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).
"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.
| 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, , 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 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.
"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.
Diffusion objective (DDPM)
The forward process mixes clean data with Gaussian noise . The network learns to predict that noise from the noisy input and the timestep .
Here is the cumulative noise schedule, so it fixes how much signal survives at step . 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, is noise and is data.
The target velocity 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:
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 by extrapolating away from an unconditional prediction . The guidance scale sets the strength.
The cost is two forward passes per sampling step, so CFG doubles inference compute. The same form applies to a diffusion network by swapping for .
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).
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
- 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).
"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: 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 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 |
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 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 and maps it to
which places more solver steps at small . 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 , 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.
"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.
"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.
First-packet numbers
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).
For flow decoders, step distillation is the biggest latency lever. For AR models, lower token rate plus a causal codec is.
"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."