当文本和语音token在同一个残差流里跳舞,你分得出谁在领舞吗?这篇论文把稀疏自编码器(SAE)第一次插进 TTS 语言模型的 backbone,发现了一条从「文本前缀」到「音频承诺」再到「文本回归」的奇异分层轨迹。
一、为什么需要解剖 TTS 大模型?
文本到语音(TTS)系统越来越依赖语言模型作为 backbone。CosyVoice3 用 Qwen2.5-0.5B 做骨干,把文本前缀和离散语音token塞进同一个自回归序列里,让模型逐 token 生成语音。
但这里有一个根本问题:文本和语音在同一个残差流里混合。模型到底在每一层编码了什么?是文本的句法语义?是语音的声学韵律?还是两者之间的某种映射关系?
在此之前,没有人系统回答过这个问题。稀疏自编码器(SAE)在文本 LLM 上的可解释性研究已经很多,但生成式 TTS 模型的 mechanistic interpretability 几乎是空白。
这篇由 T-Tech AI Foundation 的 Nikita Koriagin 等人完成的论文(arXiv:2606.10029),第一次把 SAE 插进了 CosyVoice3 的 24 层 backbone,做了全层扫描、自动标注、因果控制,把 TTS 模型的内部结构翻了个底朝天。
二、实验设置:BatchTopK SAE 插进 Qwen2.5-0.5B
2.1 基础模型:CosyVoice3
| 属性 | 规格 |
|---|---|
| LM 骨干 | Qwen2.5-0.5B |
| 隐藏维度 | 896 |
| 层数 | 28 层(分析 0-23 层) |
| 文本分词器 | BPE |
| 语音 token 速率 | 25 Hz(离散语音 token) |
| 生成方式 | 自回归 |
完整合成路径:
输入文本/语音 prompt → 分词器 → Qwen2.5 LLM → 离散语音 token → DiT 流匹配 → HiFi-GAN 声码器 → 波形
序列布局:[sos | instruct | text | task | speech],其中 task 是标记文本到语音转换点的单个特殊 token。
2.2 SAE 训练参数
| 参数 | 设置 |
|---|---|
| 字典大小 | 16,384 |
| 每 token 活跃特征数 | 50 |
| 训练数据 | Emilia 数据集,~2.5 亿 token |
| SAE 变体 | BatchTopK |
| 训练目标 | 重建 + 稀疏性 + 辅助死亡特征损失 |
| 分析层 | 全层扫描(0-23 层)+ 第 20 层详细定性分析 |
三、奇异的分层轨迹:从混合到音频再到文本
这是论文最核心、最反直觉的发现。
3.1 重建质量趋势
| 层 | 总体 EV | 文本-音频差距 |
|---|---|---|
| 0-8 | 0.97-0.99 | 音频 > 文本(-0.006) |
| 16 | - | 0.065(文本 > 音频) |
| 20 | 0.82(最低) | 0.080(最大差距) |
| 23 | 0.945(反弹) | 0.015(差距缩小) |
重建质量先下降后反弹。第 20 层是重建最困难的点——说明这里的信息最紧凑、最难压缩。到了最终层 23,EV 突然弹回 0.945。
3.2 特征模态组成:一条 U 型曲线
| 层 | 文本模态 | 音频模态 | 混合模态 |
|---|---|---|---|
| 0 | 12.3% | 45.1% | 42.6% |
| 12 | - | - | 47.3%(混合峰值) |
| 14 | - | - | 40.9% |
| 16 | - | 76.1% | - |
| 20 | - | 74.3% | 4.1% |
| 23 | 83.1% | 14.3% | 2.6% |
三层阶段:
-
早期和中期层(0-14):混合 + 音频主导。文本模态只占 12-33%,混合特征在 L12 达到峰值 47.3%。模型在这一阶段同时处理文本和语音信息。
-
晚期层(16-20):「音频承诺区」。音频模态从 76.1%(L16)到 74.3%(L20),混合特征从 40.9% 崩溃到 4.1%。模型在这里「下定决心」生成什么样的语音。
-
最终层(23):「文本回归」。文本模态从几乎消失急剧反弹到 83.1%,音频跌到 14.3%,混合仅 2.6%。最终残差流在输出头之前重新投影到与文本词汇对齐的子空间——因为输出头需要生成文本 token(包括语音 token 的离散表示)。
这像什么?像一个人先读稿(文本),然后酝酿情绪(混合),再开口说话(音频承诺),最后把说的话整理成文字记录(文本回归)。
四、模态感知自动标注:让 Gemini 3.0 Pro 当「解剖学教授」
训练完 SAE 后,有 16,384 个字典原子,每个都是一个特征方向。怎么知道它们代表什么?
4.1 模态分类
对每个特征,看它在哪些 token 位置激活最强:
- 文本模态:语音 token 占比 ≤ 0.2(主要在文本前缀激活)
- 音频模态:语音 token 占比 ≥ 0.8(主要在语音 token 激活)
- 混合模态:其他情况
4.2 模态感知标注策略
| 特征模态 | 提供的证据 | 标注内容 |
|---|---|---|
| 文本 | 文本上下文、token 位置、激活值 | 词汇、标点、语言、prompt 风格 |
| 音频 | 1 秒语音片段(以激活位置为中心) | 声学、语音、韵律属性 |
| 混合 | 文本示例 + 语音片段 | 跨模态关系 |
标注模型用 Gemini 3.0 Pro,要求单句简洁描述,不得提及模型或特征本身。
4.3 标注质量评估
用「检测式评估」验证:标注用 top-5 激活,评估用排名较低的激活(避免评分者看到相同示例)。评分量表 0-10,阈值 5。
| 模态 | L20 AUROC | 跨层范围 |
|---|---|---|
| 文本 | 0.921 | 0.90-0.94 |
| 音频 | 0.653 | 0.65-0.72 |
| 混合 | 0.558 | 0.53-0.69 |
文本特征最容易验证(AUROC 0.92),因为人类对文本概念的理解最直接。音频特征较弱(0.65),因为声学属性本身更难用语言描述。混合特征最难(0.56),因为它们经常是多语义的。
4.4 代表性特征示例
文本特征(精准得像字典):
- 1376:"British"(BAcc 1.0 / AUROC 1.0)
- 1443:子串 "ang"(如 angry, anger, hanging)(BAcc 1.0)
- 1305:描述说话者音调为 "shrill"(BAcc 1.0)
- 1330:四位数年份(2019, 1936)(BAcc 1.0)
音频特征(从音素到情绪):
- 233:人类笑声(BAcc 0.75)
- 288:尖叫、大喊和沉重呼吸(BAcc 0.917)
- 1225:清软腭塞音 /k/(BAcc 1.0)
- 1294:音素序列 /if/ 或 /ef/(BAcc 1.0)
混合特征(跨模态对应):
- 164:口吃、错误开始和犹豫标记(跨转录和音频)
- 661:文本和语音中的 "middle" 一词
- 5543:文本和语音中的音素序列 /ohl/
五、探测实验:概念在 L8 前就「暴露」了
研究团队用下游探测实验来验证:这些声学概念(笑声、情感、口音)在模型内部是「分布式」编码的,还是「局部化」在少量 SAE 特征上?
5.1 层-wise 可解码性
| 概念 | L0 | L4 | L8 | L12 | L16 | L20 | L23 |
|---|---|---|---|---|---|---|---|
| 笑声(原始残差) | 0.885 | 0.980 | 1.000 | 1.000 | 1.000 | 1.000 | 1.000 |
| 笑声(SAE 潜变量) | 0.866 | 0.948 | 0.998 | 1.000 | 1.000 | 1.000 | 0.999 |
| 情感(原始残差) | 0.966 | 0.998 | 1.000 | 1.000 | 1.000 | 1.000 | 1.000 |
| 口音(原始残差) | 0.896 | 0.986 | 0.998 | 1.000 | 1.000 | 1.000 | 1.000 |
所有三个概念在 L8 之前即可线性解码(ROC-AUC > 0.99)。从 L8 起,SAE 潜变量探测紧密跟踪原始残差探测——说明稀疏编码保留了相关语音风格信息,同时将其映射到字典坐标。
5.2 Top-1 单语义性测试
只用「最强的一个 SAE 特征」做探测,测试概念是否集中在单个字典原子上:
| 概念 | 峰值层 | 峰值 ROC-AUC |
|---|---|---|
| 笑声 | L12-16 | 0.929 |
| 情感 | L12-16 | 0.928 |
| 口音 | L8-12 | 0.925 |
单坐标足以分离概念与中性语音。这意味着 SAE 学到的特征不是「分布式」的——每个概念确实对应少数几个可解释的方向。
六、因果控制:不只是看懂,还能动手
论文最实用的一部分:证明这些 SAE 特征不仅能被解释,还能被用来因果控制生成结果。
干预方法:在生成过程中,对选定语音 token 位置的残差向量进行 SAE 编码→扰动特定特征激活值→解码回残差流。不修改输入文本或 prompt。
6.1 笑声控制(Feature 14834)
| 指标 | 基线 | α = +60 | 提升 |
|---|---|---|---|
| 平均笑声概率 | 0.015 | 0.791 | 53 倍 |
从几乎不可闻(1.5%)到几乎全是笑声(79.1%)。控制特征标签是 "Laughter-like vocal events",效果精准。
6.2 性别控制(Feature 11402)
| 条件 | P(male) |
|---|---|
| 基线 | 0.629 |
| α = -50(推向男性) | 0.944 |
| α = +50(推向女性) | 0.063 |
成功翻转感知说话者性别。无论 prompt 音是男是女,这个特征都能把生成结果推向目标性别。
6.3 语速控制(Feature 3024)
| 条件 | 有声时长 | 变化 |
|---|---|---|
| 基线 | 3.96 秒 | - |
| α = -50(变慢) | 10.57 秒 | 延长至 2.67 倍 |
| α = +50(变快) | 2.75 秒 | 缩短至 69% |
关键:保留说话内容不变。语速变了,但说的内容不变——不是简单地插入或删除语音 token,而是改变了语音 token 的声学属性。
七、六项局限:诚实比炫技重要
论文在 Section 7 明确列出了六项局限,这种诚实值得 Respect:
- 单一模型:结果仅针对 CosyVoice3-0.5B,可能无法迁移到更大 TTS 模型。
- 循环评估:标注器和评分器都用 Gemini,系统性幻觉会虚高分数——需要人工评估和评分器模型消融。
- 部分扫描:模态和重建统计跨层报告,但自动解释分数仅适用于已完成的部分层。
- 子词起始点:25Hz 语音 token 无法定位子 token(40ms)的声学起始点。
- 负采样:负样本从其他特征抽取,测试标签特异性但不测试对表示邻域混淆的鲁棒性。
- 操控范围:需要进一步探索 α 系数的有效范围和边界效应。
八、结语:可解释性不是终点,是控制的起点
这篇论文的价值不止于「看懂 TTS 模型内部发生了什么」。它证明了:SAE 特征既是可解释性对象,也是实用控制方向。
传统 TTS 控制靠修改 prompt 文本("用欢快的语气说"),但效果不可预测。SAE 控制直接在残差流上操作特定特征,精准、可量化、可插拔。
未来方向:
- 把这套方法扩展到更大 TTS 模型(如 GPT-SoTTS 等)
- 用人工评估替代循环评估,验证标注质量
- 探索更多可控制维度(情绪强度、口音强度、音高变化)
- 把 SAE 控制集成到产品级 TTS 系统的实时调节中
当文本和语音在同一个残差流里跳舞,SAE 给了我们一台慢动作摄影机——终于看清了谁在领舞,谁在和声,谁在打拍子。
参考
- 论文:Koriagin et al., "Interpreting and Steering a Text-to-Speech Language Model with Sparse Autoencoders", arXiv:2606.10029 (2026)
- 模型:CosyVoice3 (Qwen2.5-0.5B), 25Hz 离散语音 token
- 数据:Emilia 数据集 (~250M token), VocalSound, ESD, VCTK, LJSpeech
- 标注:Gemini 3.0 Pro
- 探测:二元逻辑回归 + 5 折交叉验证
#TTS #稀疏自编码器 #可解释性 #CosyVoice3 # mechanistic interpretability #语音生成 #多模态 #SAE #深度学习
讨论回复
0 条回复还没有人回复,快来发表你的看法吧!
推荐
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。