上一节画好了流水线,这一节正要给两台发动机接线。它们的分工只有三行数学:所谓"识别",就是找到让后验概率最大的词序列;贝叶斯把它拆成声学似然与语言先验两个部分;于是声学模型负责前者、语言模型负责后者。本节把这个拆解讲透,并用几个真实例子说明为何必须两者兼得。
机器没法"感觉"文字,它只能算分数。ASR 的答案就是一个候选空间里的最值:在所有的词序列里,选出可能性最大的那一个。我们用 W 表示任一候选词序列,用 O 表示实际听到的声学观测,任务就写成求后验概率的最大者。在读这一节时请记住,O 是我们已经听到的事实,是固定的;要看的是谁能让"这句话最像真的在说它"。
很多资料在这里直接抛后验公式,让人一头雾水。其实关键在于:我们手里没有"给定这句话为何会产生这段声音"的直接样本,但可以把它反过来拆开,这就是贝叶斯的用武之地。它把后验转化成两个更可测的量相乘:一个是"这句话真的的话,声音像不像"的似然,一个是"这句话本身像不像真话"的先验。
写出后验最大化之后,用贝叶斯定理把它展开。分母 P(O) 只与听到的声音有关,与候选文字无关,因此在所有候选里它是同一个数,求最大时可以直接忽略。于是最终目标收敛为:让"声学似然"与"语言先验"的乘积最大。
一个狠典型的场景能点醒这件事。把"我说的是你"和"我说的是你吗"念出来,前面的声音大体相似,若要仅靠声音分辨语气词,声学模型就会犯难。更经典的还有英文的"我这座山"和"我一座山头",声学上几乎不可分;此时谁在人话里更常见,就直接决定了答案。这正是声学模型的短板,也正是语言模型存在的理由:它用词与词的组合规律,替声学上打平的候选一锤定音。
反过来,语言模型单独也撑不起识别。没有声学模型,它看哪个句子都"像话",根本无法用这句话来证明哪一句话是被听到的。这就好比一个只懂语法的裁判,他分不出刚才那个音到底来自"你"还是"吕",还是要靠一个耳朵好的声学评委先给出候选,再由语法评委定夺。
真正落地时,这两项不会五五开,而是由一个语言模型权重 λ 加权求最大。λ 太大,机器会死守语言先验,遇到口音或生造词就翻车;λ 太小,机器光认声音,同音错乱立刻回归。选取 λ 是第 4 章的重点,这里先记住结论:这是整套流水里少数几个必须按验证集手工调的数之一,值得认真对待。
纸上谈兵总差口气,这里把乘积真的算一遍。假设某句话有两种候选,都说得通:"请把门关上"与"请把门撞上"。声学模型听这段声音,觉得前者更贴合、给的声学似然是 0.9,后者只有 0.1——单看耳朵前表述占优。可语言模型拿海量语料来衡量,"撞上"在这类句式里更常见,给前者的先验是 0.2、给后者是 0.8。若不加权直接相乘,前者 0.9×0.2 = 0.18,后者 0.1×0.8 = 0.08,最终还是选前者。
现在把语言权重视为可调旋钮。给整个语言项加一个指数权重 λ,λ 取 2 时,前者的语言贡献变成 0.2 的平方、后者的语言贡献变成 0.8 的平方,两者重算后劣势方可能翻盘。这不是玄学,而是告诉你:同一句声音,同样的两台模型,只凭 λ 一个数,最终答案就可以不同。读第 4 章时,你要反复回来体会这层"乘法里藏权重"的关系。
两台发动机的分工,用一次"报数变错"的真实场景最能钉死。设系统把一句"今天二十八号"听成了"今天二十八事",单看声音,数字"四"、手脚的"手"和时间的"时"在部分口音里声学上很接近。若给语言先验的权重偏弱,声学挠说"更像手",机器就真信了,结果多出一个字;反过来若语言权重强到把任何少见组合都压死,又会把确实会口语化的说法硬掰回规范。看出门道了吗——同一段波形,声学模型给的是"像不像这些音"的分布,语言模型给的是"这些词凑不凑得成话"的先验,最终落哪一个字,取决于两者乘积被推向哪一边。
| 候选 | 声学似然 | 语言先验 | 偏向谁 | 结论 |
|---|---|---|---|---|
| 二十八号 | 高 | 中(常见日期表述) | 两票都稳 | 安稳胜出 |
| 二十八事 | 中高 | 极低(不成话) | 语言拽回 | 压掉 |
| 二十八手 | 高(音近) | 低(少见) | 看 λ | 权重定生死 |
这张表把"乘法里藏权重"落到每一列上:前三列是两台发动机各自给出的分,最后一列才是解码器真正拍板的地方。这也顺带解释了评测集上同一批数据、只改一个 λ,WER 就能明显波动——不是模型能力变了,而是两台发动机的发言权被重新分配了。弄懂这一层,第 4 章所有关于 λ 与搜索的讨论,就都有了落脚点。
第 1 章的全局坐标到此齐了。下一章我们钻进声学侧,先把声音炼成特征这条路走到底。