序列模型与注意力机制(四)语音识别和触发字检测 LP。应用在深度学习里它是专门用来进行文本与序列信息建模的模型和技术本质上是在全连接网络与统计语言模型基础上的一次“结构化特化”也是人工智能中最贴近人类思维表达方式的重要研究方向之一。这一整节课同样涉及大量需要反复消化的内容横跨机器学习、概率统计、线性代数以及语言学直觉。语言不像图像那样“直观可见”更多是抽象符号与上下文关系的组合因此理解门槛反而更高。因此我同样会尽量补足必要的背景知识尽可能用比喻和实例降低理解难度。本周的内容关于序列模型和注意力机制这里的序列模型其实是指多对多非等长模型这类模型往往更加复杂其应用领域也更加贴近工业和实际自然也会衍生相关的模型和技术。而注意力机制则让模型在长序列中学会主动分配信息权重而不是被动地一路传递。二者结合为 Transformer 等现代架构奠定了基础。本篇的内容关于语音识别和触发字检测是 seq2seq 模型在音频数据上的应用。1. 音频数据Audio data#音频数据虽然和文本数据同样都为序列数据但是如果我们希望实现相关的应用所寻找到的数据集样本往往都是一段段连续的录音无法直接输入模型。因此就像为文本数据构建词典一样在使用 seq2seq 模型完成在语音领域的任务时我们同样需要对音频数据进行预处理而这就涉及到音频数据本身的特点。1.1 音位Phoneme#在展开音频数据的预处理方式之前有必要先引入一个语言学中的概念音位phoneme。音位是一种抽象的语音单位其定义并非基于声学相似性而是基于是否能够区分词义。在某一语言中如果两个发音单元的替换会导致词义变化它们就属于不同的音位反之即使在物理发音上存在差异只要不影响词义它们仍被视为同一音位。换句话说音位关心的是语言系统内部能区分意义的功能而不是具体的发音表现。通过大量对比语言学家逐步归纳出某一语言的音位系统。在英语中音位通常借助音标来表示但音标与音位又并不等同音标只是描述发音的工具而音位是一种功能性分类结果。同一个音位在不同语音环境中可能呈现略有不同的实际发音形式如口音差异但只要这些差异不承担区分语义的功能它们仍被视为同一音位的不同实现。这便是音位的基本概念到这里一个自然而然的想法就是把音频数据处理为连续的音位序列就像文本数据一样进行处理输入模型。然而我们刚刚也提到了音位虽然可以代表语义但是这是我们人为归纳的特征而不是音频本身的属性。因此在实验中音位并不是可以直接从连续的音频波形中观测得到的量。其获取过程高度依赖人工标注、规则设计或复杂的对齐模型这也在实践中限制了其作为模型直接输入的可行性。这一现实直接推动了后续更偏向信号层面的语音表示方法的发展也为声谱图等特征形式的广泛应用奠定了背景。1.2 声谱图Spectrogram#由于音位是人为抽象的单位无法直接从连续的音频波形中观测得到因此在实际语音处理与建模中我们更倾向于使用信号层面的连续特征表示其中最常用的表示方式之一就是声谱图spectrogram。声谱图是一种将音频信号在时间与频率域上进行表示的二维图像。简单来说它将连续的音频波形分割为短时片段并对每个片段计算频谱能量从而得到时间-频率矩阵矩阵中的每个值反映该时刻该频率成分的强度就像这样通过这种方式原本连续的波形被转换为一组能够揭示语音细节的特征既保留了声音的动态变化也便于计算机处理。在计算机处理时声谱图的每一列包含该时间片段所有频率的能量值可以看作一个多维向量。因此我们通常把声谱图的每一列视为一个时间步的输入向量。这样原本二维的时间-频率矩阵就被转化为时间序列的特征向量序列与文本序列类似使模型能够在连续语音中捕捉语义和声学模式。声谱图的关键优势在于无需人工标注音位的同时保留了丰富的声学信息并且其二维矩阵形式可以直接作为模型输入实现端到端语音识别、声学建模或语音生成。了解了对音频数据的基本处理逻辑后现在就来看看其应用2. 语音识别Speech Recognition#对音频数据最常见的应用领域就是语音识别。生活中我们最常用的例子可能是微信的语音转文字也包括语音助手、电话客服的语音输入等。语音识别的核心任务是将连续的音频信号映射为文字序列。由于音频本身是连续信号而文字序列是离散符号序列因此这一任务本质上也是一个seq2seq 问题。一个主流且常见的训练方式就是应用我们刚刚介绍的带注意力机制的编码解码框架此外还存在一种独特的技术我们称为CTCConnectionist Temporal Classification。CTC 是一种专门用于处理输入输出长度不匹配的序列学习方法非常适合语音识别这样的任务。它的核心思想是允许模型在连续的时间步上输出“空白”或重复符号从而自动对齐输入序列与输出序列。它提出于 06 年的一篇论文Connectionist Temporal Classification: Labelling Unsegmented Sequence Data with Recurrent Neural Networks可以发现CTC 的提出较早因此也并没有使用编码解码框架而是等长多对多模型框架。不过如今 CTC 也并没有被完全淘汰它仍常见于一些混合方案中。我们简单展开如下再复述一下其核心思想 CTC 通过引入blank空白符号和重复合并规则来对齐输入与输出来实现端到端训练无需在标签中人工对齐每一帧。当然你也会发现它对长距离依赖建模能力有限对长句子性能很大可能不如注意力机制了解即可。3. 触发字检测Trigger Word Detection / Keyword Spotting#对于触发字检测我们也并不陌生生活中最常见的例子包括语音助手的唤醒词“Hey Siri”“小爱同学”“Alexa”只有检测到这些触发词后设备才会进入完整语音识别流程。不同于语音识别触发字检测任务更为精简它在建模中关注的问题是在连续语音流中判断某个特定关键词是否被说出以及它出现的大致时间位置。因此一个关键点在于触发字检测模型因其实时性更适合多对多等长模型模型每个时间帧预测一个触发概率或二分类信号表示当前帧是否属于触发词的一部分。简单展开如下