原始音频信号被转换为干净、信息丰富的特征向量,例如MFCC或对数梅尔频谱图。要解释这些特征并将其转换为文本,需要一个模型。这是声学模型的主要职责。它充当已处理音频信号与其所代表的语言内容之间的桥梁。声学模型的基本任务是将声学特征的输入序列映射到一组字符或音素的概率序列。可以把它看作是“听取”特征,并猜测在每个时间点正在发出什么声音的组件。声学模型在自动语音识别流程中的位置为了理解它的作用,让我们直观地了解声学模型在完整ASR系统中的位置。它接收特征提取阶段的输出,并将其输出馈送给解码阶段,解码阶段负责整合最终的文本转录。digraph G { rankdir=TB; splines=ortho; node [shape=box, style="rounded,filled", fontname="Arial", margin="0.2,0.1"]; edge [fontname="Arial"]; subgraph cluster_0 { label="ASR系统流程"; style=filled; color="#e9ecef"; bgcolor="#f8f9fa"; Audio [label="原始音频波形", fillcolor="#a5d8ff"]; Features [label="特征提取\n(例如,MFCC)", fillcolor="#96f2d7"]; AcousticModel [label="声学模型\n(神经网络)", fillcolor="#ffc9c9", style="rounded,filled,bold", color="#f03e3e"]; Decoding [label="解码\n(例如,Beam Search)", fillcolor="#b2f2bb"]; Text [label="最终文本", fillcolor="#ffd8a8"]; Audio -> Features; Features -> AcousticModel; AcousticModel -> Decoding; Decoding -> Text; } }ASR流程图显示声学模型的位置。它处理特征向量,并将其输出传递给解码器。从特征序列到概率分布声学模型的输入是我们生成的特征向量序列,我们可以将其表示为 $X$。$$ X = (x_1, x_2, \dots, x_T) $$在这里,$T$ 是音频中总的时间步或帧数,并且每个 $x_t$ 是该时间步的特征向量(例如,一个包含40个MFCC的向量)。模型的输出是一个概率分布序列,每个时间步对应一个。如果我们的目标词汇包含所有小写字母(从“a”到“z”)、一个空格字符和一个撇号,模型将在每个时间步输出一个包含28个概率的向量。每个概率,$P(c|x_t)$,表示模型对于字符 $c$ 在对应于特征向量 $x_t$ 的时间间隔内被说出的置信度。核心难题:对齐问题一个显著的难题是输入序列长度 $T$ 几乎从不与输出文本序列长度 $N$ 相同。例如,一个说“hello”的一秒钟音频片段可能由100个特征向量表示($T=100$),但目标转录只有5个字符($N=5$)。这种长度不匹配造成了对齐问题:我们如何将100个输入向量映射到5个输出字符?哪些具体的特征向量对应“h”、“e”、“l”、“l”和“o”的声音?此外,口语字符的持续时间不同;“hello”中的“l”音比“h”音长。在较旧的ASR系统中,这通过复杂技术进行处理,这些技术要求预先创建“强制对齐”,这个过程通常脆弱且计算成本高昂。这是现代深度学习方法出色的地方。通过使用RNN等架构并结合Connectionist Temporal Classification (CTC)等专门的损失函数,模型可以自动学习这种对齐。该网络可以对音频特征和文本转录对进行训练,而无需任何关于特定时间点出现特定声音的明确信息。它学习输出一个概率流,解码器随后可以处理该概率流以找到最可能的文本序列。在接下来的章节中,我们将构建这种类型的模型,从天然适合处理语音等序列数据的循环架构开始。