Overview
Sparse autoencoders (SAEs) have become a standard tool for interpreting text LLMs, but the mechanistic interpretability of generative text-to-speech (TTS) models has remained almost unexplored. This post summarizes a paper (Koriagin et al., arXiv:2606.10029) that, for the first time, inserts SAEs into the full backbone of a TTS language model — CosyVoice3, built on Qwen2.5-0.5B — and shows the learned features are not just interpretable but usable as causal control knobs.
Experimental setup
- Backbone: CosyVoice3 with Qwen2.5-0.5B (hidden dim 896, 28 layers, layers 0–23 analyzed); BPE text tokenizer; 25 Hz discrete speech tokens; autoregressive generation followed by DiT flow matching and HiFi-GAN vocoding.
- Sequence layout:
[sos | instruct | text | task | speech], where a single specialtasktoken marks the text-to-speech boundary. - SAE: BatchTopK variant, dictionary size 16,384, 50 active features per token, trained on ~250M tokens from the Emilia dataset with reconstruction, sparsity, and auxiliary dead-feature losses. Full-layer scan plus detailed qualitative analysis at layer 20.
- Layers 0–14: Mixed and audio features dominate; mixed features peak at 47.3% around layer 12; text-modal features are only 12–33%.
- Layers 16–20 ('audio commitment zone'): Audio features reach 74–76%, mixed features collapse from 40.9% to 4.1% — the model 'decides' the acoustics of the utterance here. Reconstruction quality is worst at layer 20 (explained variance 0.82), indicating maximally compact information.
- Layer 23 ('text regression'): Text-modal features rebound abruptly to 83.1% as the residual stream re-projects into a text-vocabulary-aligned subspace for the output head.
- Linear probes decode laughter, emotion, and accent with ROC-AUC > 0.99 from layer 8 onward — in both raw residuals and SAE latents.
- Top-1 single-feature probing alone achieves ROC-AUC ~0.93 (laughter 0.929, emotion 0.928, accent 0.925), showing each concept concentrates in a few interpretable dictionary directions.
- Laughter (feature 14834): mean laughter probability rises from 0.015 to 0.791 — a 53x increase.
- Gender (feature 11402): P(male) flips from 0.629 baseline to 0.944 (α = −50) or 0.063 (α = +50), regardless of prompt speaker.
- Speech rate (feature 3024): voiced duration stretches from 3.96 s to 10.57 s (2.67x) or shortens to 2.75 s — while the spoken content is preserved; the acoustic properties of tokens change rather than token count.
Key findings
1. A surprising three-stage layer trajectory
2. Modal-aware auto-labeling
Features are classified by activation location (text / audio / mixed) and labeled by Gemini 3.0 Pro using text context, 1-second audio clips, or both. Detection-based evaluation yields AUROC 0.921 for text features, 0.653 for audio, and 0.558 for mixed. Example features include 'British' accent, the substring 'ang', the phoneme /k/, human laughter, screaming and heavy breathing, and hesitation markers spanning transcript and audio.
3. Concepts are localizable, not just distributed
4. Causal steering works
By encoding residual vectors at selected speech token positions, perturbing one feature, and decoding back (without touching the input text):
Stated limitations
The paper lists six: single-model scope (CosyVoice3-0.5B only), circular evaluation (both labeling and scoring use Gemini), partial layer coverage for interpretation scores, inability to localize sub-token (40 ms) acoustic onsets at 25 Hz, negative sampling that tests label specificity but not neighborhood confusion, and unexplored bounds of the steering coefficient α.
Takeaway
SAE features in TTS models are simultaneously interpretability objects and practical control directions. Unlike prompt-based control ('say it cheerfully'), residual-stream feature steering is precise, quantifiable, and pluggable — a step toward product-level real-time control of emotion, accent, pitch, and pacing in TTS systems.
Reference: Koriagin et al., "Interpreting and Steering a Text-to-Speech Language Model with Sparse Autoencoders", arXiv:2606.10029. Models: CosyVoice3 (Qwen2.5-0.5B); data: Emilia (~250M tokens), VocalSound, ESD, VCTK, LJSpeech.