跳到主要内容

语音识别(下) — 端到端网络,和把 99MB 压进 20MB

这一章讲三件事: 「端到端」到底替掉了传统管线的什么; 三大家族(CTC、RNN-T、注意力)怎么各自解决同一个难题; 以及原书那组压缩实验——99MB 压到 20MB 的代价与收益。 这组数字就是第 01 章主走查里那只入耳翻译机的「大脑」。

1. 端到端要替掉什么

上一章的管线有三个独立模块,接力处互相甩锅:声学模型认错的音素, 词典救不了;词典里没有的词,语言模型更没见过。端到端(end-to-end)的做法, 原书一句话:用一个神经网络替掉所有分离的模块1

具体怎么替:把网络分成一读一写两截接起来(行话叫序列到序列结构), 输入和输出都可以长短不一2

编码器(负责读的那一截)把输入特征串(第 03 章那串 40 维向量)消化成一串内部表示;

解码器(负责写的那一截)从左到右吐出输出串。

更激进的一步在建模单位。上一章花了整节论证音素为什么赢(22000 词对 20-60 音素)。 端到端网络把这笔账作废了:单位可以换成字符,甚至 BPE—— 把词拆成高频字块(比如英文里 ing、tion 这类「半个词」)3。 为什么可以这么奢侈?因为网络见得多、学得动「字母串怎么对应声音」, 于是发音词典整个消失——不再需要任何人工维护的读音表3

判断(我们的,不是书里的): 这一节藏着一个换尺子的瞬间—— 传统管线比的是「谁的词典、发音规则做得细」,端到端比的是「谁的数据多、网络大」。 竞争从语言学家手里移到了数据和算力手里。这正是全行业转向大模型的缩影。 如果错,会错在: 如果某些低资源场景(词典好建、数据难收)其实词典路线更省, 那这个「换尺子」只在数据充裕处成立——第 6 节会看到原书正是这么说的。

2. 三大家族:CTC、RNN-T、注意力

端到端不是一种架构,是一族。 分歧来自一个躲不开的物理事实: 输入和输出没对齐——一秒钟音频有约 100 帧特征,「bonjour」却只有 4 个音素、7 个字符, 哪几帧属于哪个字符,事先没人知道。三大家族就是三种答案4:

家族年份对「没对齐」的处理
CTC(连接时序分类)2006引入一个「空白」符号,让网络自己学出「这帧保持、这帧输出、这帧空白」的路径
RNN-Transducer2012给 CTC 式的输出再配一个循环网络当「语言模型搭档」,边听边猜下一个词
注意力解码器回头给所有输入帧打相关度分、按分数加权取信息,对齐是学出来的副产品

CTC 的「空白符号」展开一句:它给输出表加了一个不发声的占位符, 网络输出一长串「字符/空白」的序列,再把连续重复折叠、删掉空白,剩下的才是词—— 对齐不再需要人工标注(事先告诉机器正确答案的那些材料),是训练逼出来的5。 注意力那条值得点破:它就是机器翻译里那套「打分再加权」机制搬到语音上—— 想细看机制的,我们自己的拆解(《神经网络与深度学习(第二版)》注意力章)讲得更透6; RNN-T 则是给 CTC 加一个循环语言模型组件,出自 Graves 等人 2012 年的论文7

原书对三者的总结只给了一句:这页图把三种模型的工作方式放在一起对照—— 细节在图里,文字只留了结论。

3. Transformer 与 Conformer 进场

2018 年前后,机器翻译里的 Transformer——一种以自注意力(序列里每个位置给其他位置打分、按分数加权取信息)为主层的网络,本库拆解见《神经网络与深度学习(第二版)》Transformer 章8——被搬进语音识别, 成为编码器-解码器的新骨架9

语音界随后加了一个小改动,得到 Conformer: 在 Transformer 里加一个卷积(拿一个小窗在数据上滑动、每处做同样的局部运算)模块——它擅长抓「相邻几帧的局部模式」, 正好补上注意力「看得远但看不清局部细节」的短板10

卷积:拿一个小窗口在数据上滑动、每处做同样的局部运算,是图像识别的主力结构, 在语音里管「这一小段声音的形状」。

记住两个事实就够后面用了:Conformer 基线(压缩前的原始成绩)错误率更低,但模型更大11; 以及——它接下来会在压缩实验里露出软肋。

4. 主走查:把 99MB 的模型压进 20MB

现在把第 01 章欠的那组数字还上。 入耳翻译机装不下 99MB 的模型, 原书团队(Leïla Ben Letaifa 与 Jean-Luc Rouas——原书转码作 Leia、Jean-Loo,EUSIPCO 2022 论文)用两条朴素手段压它12:

量化:把网络里每个参数存成更「粗」的数(高精度小数 → 低比特整数), 原书点名它的好处:不需要重新训练13剪枝:把不重要的参数直接置零——原书实测,剪掉 30% 的权重(网络里每个连接的强度值), 错误率没有明显恶化14。团队专攻这两条,正是因为它们免重训, 而重训「相当耗时」13

主走查(原书表格,四语言完整数据)[^15]:

语言数据集 初始体积 → 压缩后 错误率 WER 变化
Libritrans(英) 99MB → 20MB(4.9倍) 6.6% → 7.2%
Ester(法) 318MB → 68MB(4.6倍) 14.1% → 15.6%
Voxforge(意) 124MB → 20MB(6.2倍) 9.1% → 10.1%
Vivos(越) 80MB → 15MB(5.3倍) 14.7% → 16.1%

图说:平均约 5 倍体积缩减,代价是 WER 涨 0.6-1.5 个百分点。
对照第 03 章的参照:Libritrans 未压缩时 6.6%,本就远好于业界最优的 15.1%。

读这张表: 四个语言、四个不同起点,结论一致——5 倍左右的压缩,换 1 个点上下的错误率。 对入耳设备来说这笔交易成立:20MB 装得下,7.2% 的识别错误可用。 这就是第 01 章主走查里「99MB→20MB」的出处。

5. 反直觉:更好的架构更怕剪

同一篇后续实验把 Conformer 也拉进来压,得到原书最有意思的一个发现15。 先交代表头:「可调数」=模型里可以调的数有多少个(单位 M,即百万);「压缩前」=没压缩时的原始成绩,行话叫基线。

模型可调数(M)压缩前 WER量化后+30% 剪枝后
Conformer-L116.41M2.8(最好)3.949.6(崩了)
Conformer46.90M3.16.1>70
Transformer97.27M3.43.74.5(几乎没事)
Transformer-L31.01M4.04.37.0

怎么读: Conformer 基线明显更好(2.8 对 3.4),可一剪枝就从 2.8 跳到 49.6—— 错误率接近翻二十倍,句子基本全错;Transformer 同样剪 30%,只从 3.4 走到 4.5。 原书的结论:Conformer 对压缩远比 Transformer 敏感15

判断(我们的,不是书里的): 这张表是「更贵的模型更好」这句话的第一张 反例发票。选模型不能只看基线分数,要看目标部署环境下的分数—— 对边缘设备,「压缩后 WER」比「原生 WER」更接近真实成绩。 如果错,会错在: 如果后来者发明了「按结构感知」的剪枝法 (剪哪里由架构重要性决定,而不是全局均匀剪),Conformer 的脆弱可能被修复; 原书用的剪法没有做这种适配。

6. 账单与边界:端到端的代价

原书的结论一页把账算得很清醒16:

  • 数据充足时端到端完胜传统 HMM;数据不足时优势消失——数据少的语言(比如书里的越南语 Vivos,14.7%)绝对错误率仍不低,只是好于业界最优(16.7%)17;
  • 免掉语言学知识的同时,要求懂神经网络架构:参数选择「多半靠经验」;
  • 训练贵:GPU(专做神经网络数学的芯片)的投入 + 以「几周」计的时间16;
  • 模型很大,搬到手机/设备端仍是挑战,而且第 5 节刚证明:不是每个架构都压得动。

回看主走查那组数,边界就清楚:LibriSpeech 上 2.6%(与业界最优持平)靠的是 960 小时级公开数据;越南语 14.7% 说明数据少的语言还在半山腰—— 入耳翻译机想覆盖的语言,恰恰多半在半山腰。

7. 可带走的

  1. 端到端=单网络替掉三级接力,发音词典整个消失;建模单位可换成字符或 BPE;
  2. 竞争的尺子换了:从「词典做得细」换成「数据多、网络大」;
  3. 三大家族分歧全在「帧与字符没对齐」:CTC 用空白符号学对齐,RNN-T 加循环语言模型,注意力直接打分加权;
  4. Transformer 2018 年进语音;Conformer = Transformer + 卷积模块,基线更强但更大;
  5. 主走查:量化+剪枝,99MB→20MB,WER 6.6%→7.2%,四语言平均 5 倍——压缩 30% 是实测安全线;
  6. 更好的架构更怕剪:Conformer 剪 30% 后 49.6%,Transformer 同条件下 4.5%;
  7. 边界:数据不足端到端翻车,训练以周计,设备端部署仍是开放难题。

8. 原文地图

主题原书章原文位置
端到端的定义Introduction to Automatic Speech Recognitiontext/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:318(搜「replacing all the complex separate」)
seq2seq 编解码Introduction to Automatic Speech Recognitiontext/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:324(搜「encoder-decoder」)
单位与 BPE、去发音模块Introduction to Automatic Speech Recognitiontext/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:329(搜「BPE」)
三大家族Introduction to Automatic Speech Recognitiontext/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:334(搜「three major」)
CTC 2006Introduction to Automatic Speech Recognitiontext/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:339(搜「proposed in 2006」)
CTC 对齐示例Introduction to Automatic Speech Recognitiontext/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:346(搜「alignement」)
RNN-T(Graves 2012)Introduction to Automatic Speech Recognitiontext/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:349(搜「Graves」)
注意力加权Introduction to Automatic Speech Recognitiontext/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:354(搜「attention mechanism」)
Transformer 2018Introduction to Automatic Speech Recognitiontext/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:369(搜「2018」)
Conformer=+卷积Introduction to Automatic Speech Recognitiontext/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:374(搜「convolution module」)
FVLLMONTI 目标Introduction to Automatic Speech Recognitiontext/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:404(搜「in-ear device」)
五语言基线表Introduction to Automatic Speech Recognitiontext/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:413(搜「LibriSpeech」)
压缩技术与免重训Introduction to Automatic Speech Recognitiontext/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:425(搜「Quantization」)
剪枝 30%Introduction to Automatic Speech Recognitiontext/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:445(搜「30% of the weights」)
5 倍压缩表Introduction to Automatic Speech Recognitiontext/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:449(搜「5X size reduction」)
Conformer 基线更强Introduction to Automatic Speech Recognitiontext/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:373(搜「conformer architecture」)
压缩鲁棒性表Introduction to Automatic Speech Recognitiontext/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:486(搜「116.41」)
结论(代价与边界)Introduction to Automatic Speech Recognitiontext/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:17(搜「low-resource」)

Footnotes

  1. 出处:「Introduction to Automatic Speech Recognition」第 318 段(text/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:318,搜「replacing all the complex separate」)。原文:端到端语音识别旨在用单一神经网络替掉传统识别里所有复杂的分离模块。

  2. 出处:「Introduction to Automatic Speech Recognition」第 324 段(text/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:324,搜「encoder-decoder」)。原文:语音识别用的神经网络走序列到序列范式、编码器-解码器架构,输入输出序列均可变长。

  3. 出处:「Introduction to Automatic Speech Recognition」第 329 段(text/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:329,搜「BPE」)。原文:单位可用音素、字符、词或词块(BPE);采用正字法表示能完全去掉发音词典一类的模块。 2

  4. 出处:「Introduction to Automatic Speech Recognition」第 334 段(text/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:334,搜「three major」)。原文:语音识别三大端到端路线在此页描述;CTC 第 338 段、RNN-T 第 349 段、注意力第 353 段。

  5. 出处:「Introduction to Automatic Speech Recognition」第 339 段(text/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:339,搜「proposed in 2006」)与第 346 段(搜「alignement」)。原文:CTC 是 2006 年提出的简洁架构;对齐示例在图中。「空白符号折叠」的机制是通用知识补充(不在书里,来自通用知识):CTC 输出含 blank 占位符,重复折叠并删 blank 后得最终序列。

  6. 补充(不在书里,依据本库自己的拆解):注意力机制的结构是「给每个输入位置打相关度分,再按分数加权取回信息」。依据: shelf=ai-book-reference/nndl-2e#20-attention.md 事实=该章把注意力概括为「打分再加权」,含四种打分函数与自注意力等机制。

  7. 出处:「Introduction to Automatic Speech Recognition」第 349 段(text/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:349,搜「Graves」)。原文:RNN Transducer 由 Graves 等人 2012 年提出,给 CTC 类模型加一个循环语言模型组件。

  8. 补充(不在书里,依据本库自己的拆解):Transformer 以自注意力为主层、可大规模并行训练。依据: shelf=ai-book-reference/nndl-2e#21-transformer.md 事实=该章专讲 Transformer 结构(自注意力、多头、位置编码)。

  9. 出处:「Introduction to Automatic Speech Recognition」第 369 段(text/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:369,搜「2018」)。原文:作为编码器-解码器架构的改进,Transformer 于 2018 年被提出(指进入语音识别语境)。

  10. 出处:「Introduction to Automatic Speech Recognition」第 374 段(text/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:374,搜「convolution module」)。原文:Conformer 是在 Transformer 上加卷积模块的改进架构。

  11. 出处:「Introduction to Automatic Speech Recognition」第 373 段(text/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:373,搜「conformer architecture」)。原文:Conformer 能达到比 Transformer 更好的性能,代价是模型略大;LibriSpeech 上的 WER 证实这一趋势。

  12. 出处:「Introduction to Automatic Speech Recognition」第 449 段(text/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:449,搜「5X size reduction」)。压缩实验的署名论文(EUSIPCO 2022,贝尔格莱德)在该段脚注处给出。

  13. 出处:「Introduction to Automatic Speech Recognition」第 425 段(text/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:425,搜「Quantization」)。原文:量化无需重训;团队聚焦量化与剪枝,因为它们不需要耗时的重新训练。 2

  14. 出处:「Introduction to Automatic Speech Recognition」第 445 段(text/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:445,搜「30% of the weights」)。原文:剪枝可高效用到 30%——30% 的权重置零,WER 不受大影响。

  15. 出处:「Introduction to Automatic Speech Recognition」第 486 段(text/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:486,搜「116.41」)。表格数据:Conformer-L 116.41M/WER 2.8/量化 3.9/+30% 剪枝 49.6;Conformer 46.90M/3.1/6.1/>70;Transformer 97.27M/3.4/3.7/4.5;Transformer-L 31.01M/4.0/4.3/7.0。结论「Conformer 对压缩远更敏感」见第 493 段(搜「more sensitive」)。 2

  16. 出处:「Introduction to Automatic Speech Recognition」第 17 段(text/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:17,搜「low-resource」)。原文结论页:端到端数据充足时胜过 HMM、低资源扩展性差;单位灵活免语言学知识但要网络架构知识(参数选择多半凭经验);训练成本更高——GPU 投入与数周时间。 2

  17. 出处:「Introduction to Automatic Speech Recognition」第 417 段(text/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:417,搜「Vivos」)。表:LibriSpeech 2.6 对 SOA 2.6;Libritrans 6.6 对 15.1;Ester 14.1 对 15.7;Voxforge 9.1 对 9.6;Vivos 14.7 对 16.7。