跳到主要内容

语音识别(上) — 传统管线:从波形到文字的三级接力

这一章讲三件事: 一段录音里除了文字还藏着什么;人声是怎么产生、 又怎么被机器「瘦身」成小数据的;以及三个模块怎么接力把声音变成文字。 主走查是一个词的转写全程,从麦克风波形走到最终文本。 这条管线是原书用一半篇幅讲的对象,也是下一章「端到端革命」要拆掉的旧房子。

1. 先给这门手艺定个标尺

为什么值得为一台入耳耳机专门学语音识别?原书开篇给了一组对比: 说话是人与人之间最高效的交流方式——语速能到每分钟 150 个词, 而键盘打字只有每分钟 20-50 个1。对一只「翻译耳机」来说, 语音输入不是锦上添花,是唯一现实的入口。

还要先划清一件事:「识别文字」只是语音信号里的一层信息。 原书列的同一段录音里能读出的信息有:谁在说(说话人身份)、说了什么(内容)、 用的什么语言,以及说话人的状态——高兴、愤怒,乃至病理迹象2。 本章只取「说了什么」这一层,但你要知道剩下的层还在信号里—— 这也是为什么后面第 08 章的「语义通信」敢说:很多信息接收方其实不需要。

2. 人怎么发声:声源-滤波器模型

识别的第一步不是认识词,是理解声音怎么来的。 原书用人体讲了一遍: 肺产出气流,经气管上行;声带在喉部振动,振动的频率决定你听到的音高 ——这个频率叫基频(F0);气流再进入声道——咽腔、口腔、鼻腔组成的一根 可变形状的「管子」,它像共鸣箱一样放大某些频率、压低另一些3

声道形状由发音器官(舌、唇、下颌)调节,形状一变,被放大的频率就变。 频谱上这些被放大的峰,叫共振峰(formant);共振峰落在哪些频率上, 基本决定了你听到的是哪个音4。这张对应表记一下,马上要用:

肺供气 → 声带定音高(F0)→ 声道选频率(共振峰)→ 你听到的音

3. 最早的机器怎么听,以及它们的死穴

语音识别不是神经网络时代才有的。 原书的历史线:1950 年代贝尔实验室的 「Audrey」,一台纯模拟设备,能认 10 个数字;1956 年 IBM 的「Shoebox」能认 16 个词 还会做简单算术;1970 年代美国国防部立项资助,结出 CMU 的 Hearsay 等几个系统5

Audrey 们用的正是第 2 节那张对应表: 用信号处理把前两个共振峰的频率抠出来, 不同数字的共振峰落点不同,按落点区分6。这条路在一个前提下成立: 同一个人、用同样的方式念

人一换、语速一变就露馅,于是 1970 年代出现了动态时间规整(DTW): 把两段长短不一的录音在时间轴上非线性(不成比例地、时快时慢地)拉伸压缩后再比对, 以此容忍「同一个人快念慢念」「不同的人念同一个词」7

死穴在哪: 这类系统认一个词,就得让这个人把这个词录一遍;换一个人,重录一遍。 原书总结得干脆:加新词要录新词,加新说话人要为每个词再录一遍—— 只能撑起简单的口令控制,永远到不了「听写」8

4. 连续语音为什么难:连词的边界都找不到

1980 年代的突破——一套叫作马尔可夫模型的数学工具(把过程拆成几个「状态」,按可能性在状态之间跳转;语音识别用的是它的加强版「隐马尔可夫模型」,下一节讲)——之所以是突破, 是因为它第一次让「连续说话」变得可处理。而连续说话难在哪, 原书给了一个很谦卑的观察:在真实的连续语流里,连词与词的边界都划不出来—— 信号是一条连续的带子,没有「词之间的空格」这种物理事实9

这一句值得停一下。它意味着连续语音识别不可能走「先切段、再逐段认词」的路, 必须让机器在不知道边界在哪的前提下,自己找出最合理的词序列。 这就是为什么需要概率模型,而不只是信号处理。

5. 给声音瘦身:频谱图与 Mel 刻度

从这一节起开始走主走查。 我们用一个词当样本:说话人念出「bonjour」 (法语「你好」——入耳翻译机的母题)。麦克风录到的是一条振幅随时间抖动的波形, 波形没法直接用:信息都摊在每秒几万个采样(每隔一小格记一次波形的值)点上,而且换了麦克风、换了房间就变样。

第一步瘦身:频谱图。 做法是拿一个短窗(几十毫秒)在波形上滑动, 对窗里的那段波做傅里叶变换——把它拆成「由哪些频率、各占多少」的配方; 每个窗位置得到一列频率强度,竖着排起来,横轴时间、纵轴频率、深浅表强度, 就是频谱图10。原书指出:元音的谐波(基频的整数倍)在图上呈平行条纹,很好认; 但这一步之后维度(要记的数的个数)还是太高——一个窗就能产出几百个数,原书举的量级是 512 个系数10

第二步瘦身:Mel 刻度。 引入一组三角形的 Mel 滤波器:按人耳的感知规律 (对低频的变化敏感,对高频迟钝)非均匀地铺在频率轴上,把 512 个系数压到 40 个11

主走查第 ① 步:「bonjour」的波形
→ 滑窗傅里叶:每个窗 512 个频率系数(数太大)
→ Mel 三角滤波器:压成 40 个数
→ 每约 10 毫秒一组,整段话变成一串「40 维」的小向量

图说:501 毫秒的音频 ≈ 50 组特征;50×40 = 2000 个数,替代了几万个采样点。
501 毫秒、50 组这些数是为演示编的;512→40 与「约 10 毫秒一窗」的口径来自原书。

到这里,「声音」已经变成了一串小向量(一排按位排好的数)。后面所有模块吃的都是这 40 个数,不是声音本身。

6. 音素:为什么按「声音的最小单位」建模

机器接下来要回答「这串特征(从声音里提炼出来、代替原声的一组数)对应哪些音」。建模单位选什么? 原书做了一道算术题:如果按词建模,一门语言的词典有多大一门语言就得建多少模型—— 书里给的口径是法语常用词约 22000 个;而按音素(phoneme,能分辨两个词不同的最小声音单位, 比如「爸/怕」靠第一个辅音区分)建模,一门语言只需要 20-60 个音素就能拼出全部词12。 音素有一套国际通写(IPA,国际音标),跨语言通用12

顺带一个原书给的冷知识:统计 451 种语言的数据库(UPSID)里, 人类总共用着 900 多种音素,平均每种语言 25 个(最少 11、最多 119)13

22000 对 20-60——差三个数量级,这就是音素赢了的原因。主走查里, 「bonjour」按音标切成 /b/、/ɔ̃/、/ʒ/、/u/ 四个音素(切法为演示), 机器的任务变成:从那串 40 维特征里,认出这四个音素的先后。

7. 声学模型:给每个音素配一台小机器

认音素的机器叫声学模型,它内部是隐马尔可夫模型(HMM)。 先讲 HMM 解决什么问题:同一个音素,每次发音的时长、特征都在漂—— 快念慢念、前面接的音不同,特征序列都会变。HMM 的做法是把一个音素拆成几段状态 (原书口径:通常 3 个状态,比如「起始-稳定-收尾」),机器在每个状态里停留一段随机长度的时间, 再随机跳到下一状态;而每个状态会按各自的习惯「吐出」特征——原书说,这个习惯 用**高斯混合模型(GMM)**描写:把「这个状态的 40 维特征长什么样」记成几团概率云14

HMM(GMM)这两个名字在这里只需要各带走一句话:HMM 管「状态怎么跳」, GMM 管「每个状态吐出什么样的特征」。它们的数学细节原书没展开,我们也不需要。

所以声学模型的用法是:拿「bonjour」的每组特征去问每个音素机器 「你们吐这组特征的可能性各多大」,像给每段音频帧在 20-60 台机器之间做指认。

8. 三个模块接力:找出最可能的句子

声学模型只完成三分之一。 原书给出的完整公式是一个概率最大化问题: 在所有可能的词序列里,找「出现概率 × 声学上最像」的那一个。 这背后的数学是贝叶斯——把「音频像它」与「它本身常见」两个可能性相乘、得到「是它」的可能性——的拆分:P(词序列|音频) 正比于 P(音频|词序列) × P(词序列) ——前者由声学模型负责,后者由语言模型负责(「哪些词序列像人话」), 中间还要过一道发音词典(把音素串对应到词,一个词允许多种读音)15

语言模型的原料是海量文本:原书举的口径是在亿词级的报纸文本上训练(给机器喂例子、让它自己调参数的过程), 让「机械 在 运动」这类常见搭配压过「运动 在 机械」。三者接力的全貌:

主走查第 ② 步:40 维特征串
→ [声学模型 HMM-GMM] 每帧打分:更像 /b/ 还是 /ɔ̃/?
→ [发音词典] 音素串 → 候选词:「bonjour」的 /b-ɔ̃-ʒ-u/ 对上词典里的词条
→ [语言模型] 候选句打「像不像人话」的分
→ 取综合分最高的句子输出:"bonjour"

图说:三个模块独立训练、独立工作,接力处会出错——这正是下一章「端到端」要动刀的地方。
词典词条匹配为演示;流程与分工来自原书[^15]。

9. 训练数据与成绩单:WER

这套管线的胃口很大。 原书给的数字:声学模型要吃150 小时带精确转写的语音 ——而且转写要细到呼吸、犹豫、噪声条件都标出来(折合 200 万词以上); 语言模型要吃14 亿词的报纸文本。这类数据有专门机构(LDC、ELRA)收集和出售16

给系统打分用一条公式:词错误率 WER = (替换数 + 删除数 + 插入数) ÷ 参考转写的词数。 拿一个演示算一遍(数为编的):参考答案 10 个词,机器认错 1 个、漏 1 个、多出 1 个, 则 WER = (1+1+1)/10 = 30%17。注意这条公式的刻薄之处:插错一个「的」和认错整个人名, 罚分一样。原书还给了一张性能图:同一套技术,朗读体最好,广播次之, 对话和会议语音明显更差——数字在图里,趋势是文字给定的18

10. 可带走的

  1. 语音输入对设备端是硬需求:说话每分钟 150 词,键盘只有 20-50;
  2. 一段录音里有身份、语言、情绪等多层信息,识别文字只取一层;
  3. 发声=声源+滤波器:声带定音高,声道选共振峰,共振峰定「听到的是哪个音」;
  4. 1950s 就能认数字(共振峰法),DTW 解决语速;但换人加词要重录是死穴;
  5. 连续语音的墙:信号里没有词边界这个物理事实,必须靠概率模型猜;
  6. 声音先「瘦身」:滑窗傅里叶 512 系数 → Mel 滤波器压到 40;
  7. 单位选音素:22000 词 vs 20-60 音素,差三个数量级;
  8. 传统管线三模块:声学模型(HMM+GMM)→ 发音词典 → 语言模型,贝叶斯公式把它们拼成「找最可能的句子」;
  9. 训练要 150 小时精标语音 + 14 亿词文本;打分用 WER,插错删错同罚。

11. 原文地图

主题原书章原文位置
语速对比(150 对 20-50)Introduction to Automatic Speech Recognitiontext/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:37(搜「150 words」)
录音里的多层信息Introduction to Automatic Speech Recognitiontext/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:63(搜「speaker identity」)
发声机制Introduction to Automatic Speech Recognitiontext/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:79(搜「vocal folds」)
共振峰Introduction to Automatic Speech Recognitiontext/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:121(搜「formants」)
Audrey 与 ShoeboxIntroduction to Automatic Speech Recognitiontext/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:10(搜「Audrey」)
共振峰区分数字Introduction to Automatic Speech Recognitiontext/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:128(搜「two first formants」)
DTWIntroduction to Automatic Speech Recognitiontext/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:12(搜「Dynamic Time Warping」)
加词加人要重录Introduction to Automatic Speech Recognitiontext/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:149(搜「vocal command」)
词边界难划Introduction to Automatic Speech Recognitiontext/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:167(搜「hard to recognise」)
频谱图与 512 系数Introduction to Automatic Speech Recognitiontext/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:175(搜「Fourier Transform」)
Mel 滤波器 512→40Introduction to Automatic Speech Recognitiontext/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:181(搜「Mel-scale filters」)
音素与 20-60Introduction to Automatic Speech Recognitiontext/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:231(搜「20 to 60 phonemes」)
UPSID 统计Introduction to Automatic Speech Recognitiontext/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:226(搜「UPSID」)
HMM 三状态与 GMMIntroduction to Automatic Speech Recognitiontext/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:249(搜「Gaussian Mixture」)
三模块与语言模型Introduction to Automatic Speech Recognitiontext/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:191(搜「acoustic HMM models」)
150 小时与 14 亿词Introduction to Automatic Speech Recognitiontext/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:263(搜「150h of speech」)
WER 公式Introduction to Automatic Speech Recognitiontext/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:270(搜「word error rate」)
性能随条件恶化Introduction to Automatic Speech Recognitiontext/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:289(搜「read speech」)

Footnotes

  1. 出处:「Introduction to Automatic Speech Recognition」第 37 段(text/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:37,搜「150 words」)。原文:说话是最自然的交流方式,每分钟 150 词,对比键盘每分钟 20-50 词。

  2. 出处:「Introduction to Automatic Speech Recognition」第 63 段(text/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:63,搜「speaker identity」)。原文列出说话人身份、内容、语言、情绪与病理状态等信息,并声明本次讲座只关注「说了什么」。

  3. 出处:「Introduction to Automatic Speech Recognition」第 79 段(text/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:79,搜「vocal folds」)。原文:肺产气流,声带振动定基频(音高),声道(咽、口、鼻腔)像共振器一样被发音器官改变形状。

  4. 出处:「Introduction to Automatic Speech Recognition」第 121 段(text/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:121,搜「formants」)。原文:频谱上共振器放大的峰叫共振峰,共振峰的频率区分不同声音。

  5. 出处:「Introduction to Automatic Speech Recognition」第 10 段(text/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:10,搜「Audrey」)、第 97 段(搜「Shoebox」)与第 104 段(搜「Department of Defense」)。Audrey:1950 年代贝尔实验室、纯模拟、认 10 个数字;Shoebox:IBM 1956、16 个词、能做简单运算;1970 年代国防部资助多个实验室,结题时有三个系统可用(Hearsay 出自 CMU)。

  6. 出处:「Introduction to Automatic Speech Recognition」第 128 段(text/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:128,搜「two first formants」)。原文:最早的系统用信号处理分离前两个共振峰的频率来区分数字。

  7. 出处:「Introduction to Automatic Speech Recognition」第 12 段(text/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:12,搜「Dynamic Time Warping」)。原文:DTW 刻画不同说话方式(不同说话人、同一人快慢念)造成的信号非线性变换。

  8. 出处:「Introduction to Automatic Speech Recognition」第 149 段(text/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:149,搜「vocal command」)。原文:加新词要说话人重录该词,加说话人要每个词多录一遍;只能用于简单语音口令。

  9. 出处:「Introduction to Automatic Speech Recognition」第 167 段(text/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:167,搜「hard to recognise」)。原文:连续语音难得多,图示上连词边界都难以辨认。

  10. 出处:「Introduction to Automatic Speech Recognition」第 175 段(text/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:175,搜「Fourier Transform」)。原文:用滑动窗做傅里叶变换得时-频-幅度表示,元音谐波呈平行条纹;但傅里叶输出维度仍太高(512)。 2

  11. 出处:「Introduction to Automatic Speech Recognition」第 181 段(text/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:181,搜「Mel-scale filters」)。原文:Mel 三角滤波器计算快,把傅里叶的 512 个系数减到 40,且滤波器频率按人耳感知刻度排布。

  12. 出处:「Introduction to Automatic Speech Recognition」第 231 段(text/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:231,搜「20 to 60 phonemes」)与第 233 段(搜「IPA」)。原文:音素是最小单位,约 20-60 个即可拼出一门语言全部词汇;法语词典约 22000 常用词(第 220 段,搜「22000」);IPA 为通用表示。 2

  13. 出处:「Introduction to Automatic Speech Recognition」第 228 段(text/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:228,搜「451 languages」)。原文:UPSID 数据库 451 种语言、900 多个音素、平均 25(11-119)。

  14. 出处:「Introduction to Automatic Speech Recognition」第 247 段(text/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:247,搜「3 states」)。原文:每个音素视为一个 HMM,通常数个状态(如 3 个),每个状态由高斯混合模型(GMM)建模。

  15. 出处:「Introduction to Automatic Speech Recognition」第 191 段(text/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:191,搜「acoustic HMM models」)、第 199 段(搜「argmax」)与第 253 段(搜「phonetic lexicon」)。原文:声学 HMM 认音素,发音词典做音素-词对应(一词多读音),语言模型按大规模文本(如报纸)纠正词序列;公式为 argmax P(W|O) 的贝叶斯展开。

  16. 出处:「Introduction to Automatic Speech Recognition」第 263 段(text/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:263,搜「150h of speech」)。原文:150 小时带精确同步转写的语音(含呼吸、犹豫、声学条件、说话人,超 200 万词)+ 14 亿词报纸文本;LDC、ELRA 专营此道。

  17. 出处:「Introduction to Automatic Speech Recognition」第 270 段(text/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:270,搜「word error rate」)。原文:WER=(S+D+I)/N,S 替换、D 删除、I 插入、C 正确,N 为参考词数(N=S+D+C)。演示中的 10 词、30% 为编的数。

  18. 出处:「Introduction to Automatic Speech Recognition」第 289 段(text/07-ch02-chapter-2-introduction-to-automatic-speech-recog.txt:289,搜「read speech」)。原文:同一图内对比朗读(黑线)、广播(蓝线)、对话(红线)、会议(粉线)四类语音条件,具体数字在图中。