1.2 语音识别系统基本架构


1.2 语音识别系统基本架构

一条从波形到文字的流水线,可以切成五段看:把声音数字化、切成可分析的短帧、提成紧凑的特征、交给声学模型与语言模型各自打分、再由解码器归拢出最终文字。本节把每一段的输入输出摆上桌,画出一条完整的系统架构图,并指出哪几段是"管道"、哪几段是真正"干活"的机器。

学习目标

  1. 能按顺序说出语音识别系统的五大功能段,并能指认输入端与出口。
  2. 能区分"前端特征提取"这类管道环节与"声学模型、语言模型"这类核心环节。
  3. 能说明发音词典在流水线中的位置:它把文字转成音素,是解码器的必需品。
  4. 知道每条支路(音频、词典、文本语料)各自供给哪个环节。

一、别把管道和机器混为一谈

很多人第一次画 ASR 架构,往往把这个系统当成"一个黑盒识别模型"。可一旦拆开,会发现大部分环节根本不"懂"语音,它们只是搬运工。真正参与判断的,只有声学模型、语言模型这两台发动机,以及负责最后归拢的解码器。把"管道"和"发动机"分清,是看懂整套架构的第一步,也是日后排错的钥匙:特征算错了,锅在管道;候选挑错了,锅多半在发动机。

二、五大功能段逐一看

整个系统的骨架可以这样排列。第一段,波形进入:模拟声音先经采样、量化变成数字语音,通常用 16kHz 采样率保存。第二段,分帧与特征提取:语音是非平稳的,但它在一小段(比如 25 毫秒)内近似平稳,于是切成相互重叠的短帧,每帧再算出一组梅尔倒谱系数 MFCC 之类的特征向量。第三段,声学模型打分:拿每一帧特征对着建模单元(通常是音素状态)算一个"像不像"的得分。第四段,语言模型打分:对每一条候选词序列,按语言先验算一个"像不像话"的得分。第五段,解码:在发音词典给定的候选网络里搜索,把声学得分与语言得分加权合并,输出概率最高的一句文字。

上面把这个五段流水画出来了。注意两条进料支路:发音词典是一条旁路,直接供解码器;语言模型是一条并行支路,它的打分也汇到解码器。

三、发音词典:被低估的一环

先别急着说"现在是端到端时代,词典早没用了"。在传统的 HMM 框架里,解码器面对的候选词网络,就是由发音词典铺出来的:词典存着每个词的读音序列,比如把"北京"记成对应音素的接连串。没有它,解码器连"下一步能接哪个词"都不知道。到了端到端模型,词典的作用被隐式吸收,但理解它仍然是读懂整条流水最省力的捷径。发音词典负责的是"发音层",语言模型负责的是"语法层",两者的关系经常被初学者混淆。

四、为什么特征要这么做

特征提取看起来只是"搬运",其实藏着两个目标:把原始波形里与识别相关的东西留住,把与识别无关的东西丢掉。语音波形里塞满了说话人音色、语速、环境噪声,这些对"说的是哪几个字"毫无帮助。MFCC 这类特征按人耳的非线性感知把频谱压缩、去相关,就是为了在砍掉冗余的同时保留住声道的形状——正是这形状区分了不同音素。更详细的过程,我们会在第 2 章把它完完整整地拆开。

五、出错了,去哪找锅

把架构图记牢,最大的实惠是学会了"出错定位"。同样一句"识别错了",锅可能落在这五段里的任何一段,而新手往往一口咬定"是模型的问题"。比如背景有持续风扇声,上手就怀疑声学模型不行——其实多半是特征提取段对噪声过敏,加了预加重或做倒谱均值归一化就明显改观。再看一个:系统老是"我"和"你"、"的"和"地"换来换去,这常常不是耳朵的问题,而是语言模型架得太平,词与词的搭配先验给不出力度。

排错时先问三个问题,能帮你把犯罪嫌疑人圈到一段:这句话是录音没进去,还是进了却分不清音?如果是分不清,是单个音素就听岔,还是两个候选词明明都说得通?如果是后者,多半就是词典或语言先验没帮上忙。用这套问法,介于"秃瓢锅"和"模型锅"之间,定位就快了一大截。下面这张表把"症状→多半在哪段→初步动作"列出来:

症状 最可能在哪个环节 初步动作
声音没进系统 / 整段空白 波形进入段 查采样与电平,是不是压根没录到
频繁出现同音字 / 结构相似错 语言模型段 查语言先验权重 λ,看词搭配合不合理
特定口音 / 特定音素必错 声学模型段 查特征对该音素是否有区分度
两个候选都说得通时摇摆 词典 + 解码段 查发音词典收录、beam 宽度是否过窄

六、让一句声音真走一遍流水

把五段串成一次完整的运转,比单看每段更有体感。设输入一句"帮我订明天到上海的高铁票"。录音段先把它变成约两秒的数字波形,按 25 毫秒帧长切成上百个相互重叠的帧;特征提取把每帧炼成一个六七十维的特征向量,于是整句话变成一张上百行的特征表。声学模型对着这张表逐帧说出"这里更像 ao、更像 b、更像停顿",吐出的大量候选落在词典能铺的词上;语言模型则在一旁给"帮、我、订、明天、到、上海、的、高铁票"这条候选极高的分,而给同音却不通的"明天到市场"之类组合较低的分。解码器把两者一加权,挑出总分最高的那一句放行。走完这一遍你就明白:特征管"有没有听清",语言管"像不像话",解码管"哪句最像整句真话"。三者的取舍,正是本书接下来各章要一层层铺开的地方。

也正因为五段各司其职,才会出现"单看哪一段都对、合起来就错"的怪象。比如特征、声学、语言样样健康,识别却慢得离谱——那多半是解码搜索量太大,束宽默认值太小反而漏了真相,或 λ 没调平让次优路线抢了先。这类问题单换任何一段都找不到根源,只有钻到架构图正中间、盯着"谁在给谁加权"才能圈出来。所以请你把这张五段图当成账户总表:哪一段花了多少"预算"、收获多少"分数",都是可查的,而不是一团浆糊。能对每个环节张口报出"它在干嘛、贡献什么、能怎么调",才算真正把这台流水看懂了。

本节要点回顾

  • 五段骨架:波形进入、分帧特征、声学打分、语言打分、解码输出。
  • 管道与发动机:特征提取是管道,声学模型与语言模型是发动机,解码器做归拢。
  • 词典旁路:发音词典把词转成音素序列,直接喂给解码器。
  • 两条支路:音频走声学模型,文本语料走语言模型,在解码器汇合。
  • 特征目标:留识别相关、丢无关噪声,是特征设计的唯一宗旨。

准备好了吗?下一节我们把两台发动机之一——声学模型与语言模型的数学分工,正式讲清楚。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U