ASR 基本问题1. 核心概念1.1 ASR 到底在解决什么问题Automatic Speech Recognition,ASR,本质任务可以概括成:给定一段随时间变化的语音信号,输出与其对应的文本序列。最抽象地写,就是:X→Y X \rightarrow YX→Y其中:XXX:输入语音序列YYY:输出文本序列但这个表达还不够准确。因为 ASR 不是普通的“一个输入对应一个类别”的分类问题,而是:一个长度可变的连续输入序列,映射成另一个长度可变的离散输出序列。因此更准确的数学形式是:X=(x1,x2,…,xT) X=(x_1,x_2,\dots,x_T)X=(x1,x2,…,xT)Y=(y1,y2,…,yU) Y=(y_1,y_2,\dots,y_U)Y=(y1,y2,…,yU)这里:TTT:输入语音的时间步数UUU:输出 token 数量xtx_txt:第ttt个声学时间步yuy_uyu:第uuu个文本 token通常情况下:T≫U T \gg UT≫U例如一段 1 秒语音,经过 10 ms 左右的 frame shift 后可能产生约 100 个声学帧,但最终中文文本可能只有十几个字符,英文则可能只有几个 subword/token。所以 ASR 从第一性原理上就和图像分类、文本分类这种固定长度输入输出的问题不同。1.2 Speech-to-Text 与 Sequence Modeling 的关系ASR 可以看作一种sequence-to-sequence / sequence transduction问题。它不是:语音 → 一个类别而是:语音序列 → 文本序列所以 ASR 的核心问题不是单纯“识别每一帧是什么”,而是:如何表示一段时间连续变化的语音;如何利用前后时间上下文理解当前声音;如何把长输入压缩成更短的文本输出;如何决定输入时间轴和输出 token 之间的对应关系;如何建模不同 token 之间的依赖关系。这几个问题共同构成了 ASR 的Sequence Modeling。1.3 Acoustic Modeling 是什么Acoustic Modeling,声学建模,解决的是:语音声学信号中包含什么语言信息。例如输入语音中存在:音素信息;音节信息;发音变化;音素间协同发音;说话速度变化;音量变化;噪声和声学环境变化。声学模型需要从这些连续的声学观测中提取出与语言内容相关的信息。传统 ASR 中,“Acoustic Model”通常具有非常明确的含义:输入声学特征,预测 HMM state / senone 等声学状态的概率。而在现代端到端 ASR 中,这个边界变得模糊。例如 Zipformer、Conformer、Whisper 的 Encoder 并不是简单地输出“音素概率”,而是学习:从原始/预处理后的声学输入中提取对后续文本预测有用的时序表示。所以现代 ASR 中更准确的理解是:Acoustic Encoder 学习声学表示,后续模块再利用这些表示完成 token 预测。因此不要把:Acoustic Modeling = “每一帧分类”作为现代 ASR 的完整定义。它更接近一个历史上形成的概念。在 HMM-DNN 时代边界更清晰,而在 CTC / RNN-T / Attention Encoder-Decoder 中,声学建模、序列建模和语言建模在很大程度上已经被联合优化。1.4 Sequence Modeling 又解决什么问题Acoustic Modeling 更关注:“这段声音里有什么声学证据?”Sequence Modeling 更关注:“这些时间上的信息如何组织成有顺序、有依赖关系的输出序列?”例如听到:“人工智能”并不能简单地把三个汉字分别独立识别。当前声音到底对应哪个 token,往往需要结合:前面的语音;后面的语音;当前上下文;token 之间的语言约束;发音歧义。因此一个 ASR 模型通常需要同时处理两个时间尺度:声学时间轴x1,x2,…,xT x_1,x_2,\dots,x_Tx1,x2,…,xT以及:文本 token 时间轴y1,y2,…,yU y_1,y_2,\dots,y_Uy1,y2,…,yUASR 的真正困难之一,就是:这两条时间轴长度不同,而且中间没有天然给出的逐点对应关系。这就引出了 ASR 最核心的问题之一:Alignment Problem。2. 为什么需要2.1 为什么 ASR 不能像普通分类一样做图像分类通常可以抽象为:x→c x \rightarrow cx→c输入一张图像,输出一个类别。但 ASR 是:(x1,x2,…,xT)→(y1,y2,…,yU) (x_1,x_2,\dots,x_T) \rightarrow (y_1,y_2,\dots,y_U)(x1,x2,…,xT)→(y1,y2,…,yU)输出甚至连长度UUU都是不固定的。假设两段语音分别是:“你好”“你好,请问在吗?”它们对应的文本长度不同。同样,即使文本完全相同:“你好”不同的人说话时长也可以完全不同。所以 ASR 同时存在:输入长度可变;输出长度可变;输入输出长度通常不同;同一个 token 可以持续多个声学帧。这意味着不能简单定义:第 1 帧 → 第 1 个字第 2 帧 → 第 2 个字这种映射在物理上就不成立。2.2 为什么要建模时间上下文语音不是一系列相互独立的采样点。例如一个音素真正的声学特征可能分布在几十毫秒甚至更长的时间范围内,而且还存在明显的上下文依赖。同一个音素在不同上下文中,其声学表现并不完全相同。因此模型不能只看:xt x_txt而需要利用:xt−k,…,xt,…,xt+k x_{t-k},\dots,x_t,\dots,x_{t+k}xt−k,…,xt,…,x