深度学习方法在语音识别中的全面解析

语音识别:不同深度学习方法的综述

人类主要通过使用相同语言的语音进行交流。语音识别可以定义为理解说话者所说的口语单词的能力。

自动语音识别(ASR)指的是识别人类语音并将其转换为文本的任务。过去几十年,这一研究领域受到了广泛关注。它是人机通信的一个重要研究领域。早期的方法侧重于手动特征提取和传统技术,如高斯混合模型(GMM)、动态时间规整(DTW)算法和隐马尔可夫模型(HMM)。

最近,神经网络如循环神经网络(RNN)、卷积神经网络(CNN)以及近年来兴起的 Transformer,已被应用于 ASR 并取得了优异的性能。

如何构建自动语音识别(ASR)系统?

ASR 的总体流程可以表示如下:

ASR 系统的主要目标是将一个具有特定长度 T 的音频输入信号 x = (x₁, x₂, … xₜ) 转换为一系列单词或字符(即标签) y = (y₁, y₂, …, yₙ)yₙ ∈ V,其中 V 是词汇表。标签可以是字符级标签(即字母)或单词级标签(即单词)。

最可能的输出序列由下式给出:

ŷ = arg max_{y ∈ V} p(y|x)

一个典型的 ASR 系统包含以下处理步骤:

  • 预处理
  • 特征提取
  • 分类
  • 语言建模

预处理步骤旨在通过降低信噪比、减少噪声和过滤信号来改善音频信号。

一般来说,用于 ASR 的特征是通过对输入应用各种方法生成的具有特定数值或系数的特征。考虑到诸如噪声或回声效应等各种质量因素,此步骤必须稳健。

大多数 ASR 方法采用以下特征提取技术:

  • 梅尔频率倒谱系数(MFCC)
  • 离散小波变换(DWT)

分类模型旨在找出输入信号中包含的说话文本。它接收从预处理步骤中提取的特征,并生成输出文本。

语言模型(LM)是一个重要的模块,因为它捕获了语言的语法规则或语义信息。语言模型对于从分类模型中识别输出标记以及对输出文本进行纠错非常重要。

用于 ASR 的数据集

来自有声读物、对话和谈话的文本已被记录下来形成了各种数据库。

CallHome 英语、西班牙语和德语数据库包含大量词汇表中没有的词汇的对话数据。它们是具有外语词和电话信道失真的挑战性数据库。英语 CallHome 数据库包含 120 个英语母语人士之间的自发英语电话对话。训练集有 80 段对话,约 15 小时语音,而测试集和开发集各包含 20 段对话,各有 1.8 小时的音频文件。

此外,CallHome 西班牙语数据库包含 120 段母语人士之间的电话对话。训练部分有 16 小时语音,其测试集有 20 段对话,共 2 小时语音。最后,CallHome 德语数据库包含 100 段德语母语人士之间的电话对话,训练集有 15 小时语音,测试集有 3.7 小时语音。

TIMIT 是一个包含美式英语宽带录音的大型数据集,每个说话者读出 10 个语法丰富的句子。TIMIT 包含经过时间对齐、校正的音频信号,可用于字符或单词识别。音频文件以 16 位编码。训练集总共包含来自 462 个说话者的大量音频,而验证集有来自 50 个说话者的音频,测试集有来自 24 个说话者的音频。

用于 ASR 的特征提取

梅尔频率倒谱系数是提取语音特征最常用的方法。人耳在感知音频信号方面是一个非线性系统。为了应对频率的变化,人们开发了梅尔标度来建立人类听觉系统的线性模型。只有 [0,1] kHz 范围内的频率可以转换到梅尔标度,而其余频率被视为是对数关系的。梅尔标度频率的计算公式为:

f_{mel} = 1000 / log(2) [1 + f_{Hz} / 1000]

其中 f_{Hz} 是原始信号的频率。

MFCC 特征提取技术基本上包括以下步骤:

  1. 对信号加窗
  2. 应用离散傅里叶变换
  3. 取幅度的对数
  4. 转换到梅尔标度
  5. 应用逆离散余弦变换(DCT)

用于 ASR 的深度神经网络

在深度学习时代,神经网络在语音识别任务中显示出显著的改进。已经应用了各种方法,例如卷积神经网络(CNN)、循环神经网络(RNN),而最近 Transformer 网络也取得了优异的性能。

循环神经网络

RNN 在时间序列上进行计算,因为它们当前的隐藏状态依赖于所有先前的隐藏状态。更具体地说,它们被设计用于对时间序列信号进行建模,以及捕获输入不同时间步之间的长期和短期依赖关系。

关于语音识别应用,输入信号 x = (x₁, x₂, … xₜ) 通过 RNN 传递以计算隐藏序列 h = (h₁, h₂, … hₙ) 和输出序列 y = (y₁, y₂, … yₙ)。简单形式 RNN 的一个主要缺点是它仅基于先前的上下文生成下一个输出。

RNN 将隐藏向量序列 h 计算为:

h_t = H (W_{xh}x_t + W_{hh}h_{t-1} + b_{h})
y_t = W_{hy}h_t + b_{y}

其中 W 是权重,b 是偏置向量,H 是非线性函数。

RNN 的局限性和解决方案

然而,在语音识别中,通常未来上下文的信息与过去上下文的信息同等重要。这就是为什么通常选择双向 RNN(BiRNN)来弥补这一不足。BiRNN 在两个方向上处理输入向量,即前向和后向,并为每个方向保留隐藏状态向量,如上图所示。

神经网络,无论是前馈神经网络还是循环神经网络,都只能用于输入音频的逐帧分类。这个问题可以通过以下方式解决:

  • 使用隐马尔可夫模型(HMM) 来获取输入音频与其转录输出之间的对齐。
  • 使用连接时序分类(CTC)损失,这是最常见的技术。

CTC 是一个计算输入语音信号与单词输出序列之间对齐的损失函数。CTC 使用一个空白标签来表示静音时间步(即人不说话),或表示单词或音素之间的过渡。给定输入 x 和单词或字符的输出概率序列 y,对齐路径 α 的概率计算如下:

P(α|x) = Π_{t=1}^{T} P(α_t|x)

其中 α_t 是时间步 t 的单个对齐。

对于一个给定的转录序列,由于标签可以以不同的方式与空白分隔,存在多种可能的对齐方式。例如,对齐 (a, -, b, c, -,-)(-, -, a, -, b, c)(其中 - 是空白符号)都对应于字符序列 (a, b, c)

最后,所有路径的总概率计算为:

P(y|x) = ∑ P(α|x)

CTC 旨在最大化正确对齐的总概率,以获得正确的输出单词序列。CTC 的一个主要好处是它不需要对数据进行先前的分割或对齐。DNN 可以直接用于对特征进行建模,并在语音识别任务中取得优异的性能。

解码

解码过程用于使用 CTC 从训练好的模型中生成预测。有几种解码算法。最常见的步骤是最佳路径解码算法,其中每个时间步都使用最大概率。由于该模型假设在逐帧情况下,给定网络输出时潜在符号是独立的,因此在每个时间步获得最高概率的输出:

ŷ = arg max P(y|x)

波束搜索也已用于 CTC 解码。使用从左到右的时间步和少量(B 个)部分假设来搜索最可能的翻译。每个假设实际上是输出序列的前缀,而在每个时间步,它都会用词汇表中每个可能的单词在波束中扩展。

RNN-Transducer

在其他工作中,一种通常被称为 RNN-Transducer 的架构也被用于 ASR。该方法将 RNN 与 CTC 以及一个给定先前输出预测下一个输出的独立 RNN 相结合。它为输入的每个时间步 t 和输出的每个时间步 u 确定第 k 个输出元素 y 的单独概率分布 P(y_k | t, u)

编码器网络将时间步 t 的声学特征 x_t 转换为表示 he_t = f_enc(x_t)。此外,预测网络接收先前的标签 y_{u-1} 并生成新的表示 hp_t = f_p(y_{u-1})。联合网络是一个全连接层,它结合了这两种表示并生成后验概率 P(y | t, u) = f_joint(he_t : hp_t)。这样,RNN-Transducer 可以通过使用来自编码器和基于预测标签是空白还是非空白标签的预测网络的信息来生成下一个符号或单词。当在最后一个时间步发出空白标签时,推理过程停止。

Graves 等人使用不同层数和隐藏状态数量的常规 RNN 与 CTC 以及 RNN-Transducer 在 TIMIT 数据库上进行了测试。特征提取采用具有 40 个系数的傅里叶变换滤波器组方法,这些系数在对数梅尔标度上分布,并与第一和第二时间导数连接。在下表中,显示具有 3 层、每层 250 个隐藏状态的 RNN-T 具有 17.7% 音素错误率(PER)的最佳性能,而简单的 RNN-CTC 模型性能较差,PER > 18.4%。

使用 RNN-Transducer(RNN-T)的端到端 ASR

Rao 等人提出了一种编码器-解码器 RNN。所提出的方法采用由多个 LSTM 层块组成的编码器网络,这些层使用以音素、字素和单词为输出的 CTC 进行预训练。此外,1D-CNN 使用特定的核步长和大小将时间序列的长度 T 减少了 3 倍。

解码器网络是一个与 LSTM 语言模型一起训练的 RNN-T 模型,该语言模型也预测单词。网络的目标是序列中的下一个标签,并用于交叉熵损失中以优化网络。关于特征提取,每 10 毫秒计算 80 维梅尔标度特征,并每 30 毫秒堆叠成单个 240 维声学特征向量。

该方法在从某中心美国英语语音流量中提取的 2200 万手动转录音频记录数据集上进行训练,相当于 18,000 小时的训练数据。这些包括语音搜索和语音听写话语。语言模型是在从数据集中获得的文本句子上进行预训练的。该方法使用不同的配置进行了测试。当编码器包含 12 层 700 个隐藏单元和解码器包含 2 层 1000 个隐藏单元时,它在这个大型数据集上实现了 5.2% 的词错误率(WER)。

适用于移动设备的流式端到端语音识别

RNN-Transducer 也被用于实时语音识别。在这项工作中,该模型由 8 层单向 LSTM 单元组成,而编码器中使用了时间缩减层以加速训练和推理。还使用了内存缓存技术来避免对相同预测历史进行冗余计算。这节省了大约 50-60% 的预测网络计算。此外,使用不同的线程来处理编码器和预测网络,以实现流水线化并节省大量时间。

编码器推理过程被拆分到两个线程上,分别对应于时间缩减层之前和之后的组件,这平衡了两个编码器组件和预测网络之间的计算,与单线程执行相比,速度提升了 28%。此外,参数从 32 位浮点精度量化为 8 位,以减少磁盘和运行时的内存消耗,并优化模型的实时执行。

该算法在一个包含 3500 万英语话语(大小为 27,500 小时)的数据集上进行训练。训练话语是手动转录的,来自某中心的语音搜索和听写流量,并通过使用房间模拟器人工破坏干净的话语而创建。报告的结果在从某中心流量助理中提取的 14800 个语音搜索(VS)样本以及 15700 个语音命令样本(表示为 IME 测试集)上进行评估。特征提取步骤创建每 25 毫秒计算的 80 维梅尔标度特征。结果以推理速度除以音频持续时间(RT90)和 WER 报告。采用对称量化的 RNN-T 模型在语音搜索集上实现了 7.3% 的 WER,在 IME 集上实现了 4.2% 的 WER。

用于 ASR 的快速准确循环神经网络声学模型

Sak 等人采用长短期记忆(LSTM)网络进行大词汇量语音识别。他们的方法使用滑动窗口技术,通过梅尔滤波器组提取高维特征。此外,他们结合了上下文相关状态,进一步提高了模型的性能。该方法在来自某中心真实语音搜索流量的手动转录音频记录上进行了评估。训练集有 300 万话语,平均持续时间为 4 秒。结果显示在下表中:

基于注意力的模型

其他工作采用了 RNN 的注意力编码器-解码器结构,该结构直接计算给定输入序列的输出序列的条件概率,而不假设固定的对齐。编码器-解码器方法使用一种注意力机制,该机制不需要数据的预分割对齐。基于注意力的模型使用单个解码器,根据先前预测的完整序列和输入音频,生成在标签上的分布。通过注意力,它可以隐式学习输入和输出序列之间的软对齐,这解决了语音识别的一个大问题。

该模型在长输入序列上仍然可以有很好的效果,因此这样的模型也有可能处理各种长度的语音输入。更具体地说,该模型计算输出概率密度 P(y|x),其中输入和输出的长度不同。编码器将输入映射到每个输出 y_i 的上下文向量 c_i。解码器计算:

P(y|x) = Π_{i=1}^{I} P(y_i | y₁, …, y_{i-1}|c_i)

条件是先前的 I 个输出和上下文 c_i

符号 y_i 的后验概率计算如下:

P(y_i | y₁, …, y_{i-1}|c_i) = g(y_{i-1}, s_i, c_i)
s_i = f(y_{i-1}, s_{i-1}, c_i)

其中 s_i 是循环层 f 的输出,g 是 softmax 函数。

上下文是从所有时间步的隐藏状态的加权平均值中获得的:

c_i = ∑_{t=1}^{T} a_{i,t} h_t
a_{i,t} = exp(e_t) / ∑_{t=1}^{T} exp(e_t)

其中 a_{i,t} ∈ [0, 1]∑_{t=1}^{T} a_{i,t} = 1

注意力机制选择输入序列上的时间位置,这些位置应用于更新 RNN 的隐藏状态并预测下一个输出值。它通过分配注意力权重 a_{i,t} 来计算输入和输出之间的相关性分数。

基于注意力的循环序列生成器

Chorowski 等人采用了基于注意力的循环序列生成器(ARSG),该生成器可以从由任何类型的编码器建模的语音特征 h = (h₁, h₂, hₜ) 生成输出单词序列。ARSG 通过关注相关特征来生成输出 y_i

a_i = attend(s_{i-1}, a_{i-1}, h)
g_i = ∑_{j=1}^{L} a_{i,j} h_j
y_i = generate(s_{i-1}, g_i)

其中 s_i 是 RNN 的第 i 个状态,a_i 是注意力权重。

新状态的生成方式为:s_i = recurrency(s_{i-1}, g_i, y_i)

更详细地说,评分机制的工作原理如下:

e_{i,j} = score (s_{i-1}, h_i)
a_{i,j} = exp(e_{i,j}) / ∑_{j=1}^{L} exp(e_{i,j})

ARSG 在 TIMIT 数据集上进行了评估,并在验证集和测试集上分别实现了 15.8% 和 17.6% 的 WER。

听-注意-拼写(LAS)

在 Chan 等人和 Chiu 等人的工作中,开发了听-注意-拼写(LAS) 方法。编码器(即“听”)接收输入音频 x 并生成表示 h。更具体地说,它使用具有金字塔结构的双向长短期记忆(BLSTM)模块,其中每一层的时间分辨率都会降低。第 j 层、第 i 个时间步的输出计算为:

h = listen (x)
h_i^j = BSLTM (h_{i-1}^{j}, h_i^{j-1})

解码器(即“注意-拼写”)是一个基于注意力的模块,它关注表示 h 并产生输出概率 P(y|x)。更详细地说,一个基于注意力的 LSTM 换能器基于先前的输出产生下一个字符:

c_i = AttentionContext (s_i, h)
s_i = LSTM (s_{i-1}, y_{i-1}, c_{i-1})
P(y_i|x) = FC (s_i, c_i)

其中 s_ic_i 分别是解码器状态和上下文向量。

LAS 在 300 万某中心语音搜索话语(2000 小时语音)上进行了评估,其中随机选择 10 小时话语进行验证。还使用房间模拟器噪声以及添加其他类型的噪声和混响对训练数据集进行了数据增强。它能够实现优异的识别率,在干净和嘈杂环境下的 WER 分别为 10.3% 和 12.0%。

基于单词 RNN 语言模型和注意力的端到端语音识别

Hori 等人采用了一个使用 CTC、注意力解码器和 RNN 语言模型的联合解码器。CNN 编码器网络接收输入音频 x 并输出在解码器模块之间共享的隐藏序列 h。解码器网络基于隐藏序列迭代地预测 0 标签序列 c。联合解码器利用 CTC、注意力和语言模型来加强输入和输出之间更好的对齐,并找到更好的输出序列。该网络被训练以最大化以下联合函数:

L = λ log p_CTC(c|x) + (1-λ) log p_Att(c|x)

在推理过程中,为了找到最可能的单词序列 ĉ,解码器找到最可能的单词:

ĉ = argmax [ p_CTC(c|x) + (1-λ) log p_Att(c|x) + γ log p_LM(c) ]

其中也使用了语言模型概率。

该方法在华尔街日报(WSJ)和 LibriSpeech 数据集上进行了评估。

WSJ 是一个著名的英语干净语音数据库,包含大约 80 小时语音。LibriSpeech 是一个包含有声读物朗读语音的大型数据集,包含 1000 小时的音频和转录文本。所提出方法在 WSJ 和 LibriSpeech 上的实验结果分别显示在下表中。

卷积模型

卷积神经网络最初是为计算机视觉(CV)任务而实现的。近年来,由于 CNN 具有良好的生成和区分能力,它们也被广泛应用于自然语言处理(NLP)领域。

一个非常典型的 CNN 架构由多个卷积层和池化层以及用于分类的全连接层组成。卷积层由与输入卷积的内核组成。卷积核将输入信号分成更小的部分,即该核的感受野。此外,卷积操作是通过将内核与感受野内的输入对应部分相乘来执行的。卷积方法可以分为一维和二维网络。

2D-CNN 从声学信号构建二维特征图。与图像类似,它们将声学特征(如 MFCC 特征)组织在二维特征图中,其中一个轴代表频域,另一个代表时域。相比之下,1D-CNN 直接接受声学特征作为输入。

在用于语音识别的 1D-CNN 中,每个输入特征图 X = (X₁, …, X_I) 连接到许多特征图 O = (O₁, …, O_J)。卷积运算可以写为:

O_j = σ(∑_{i=1}^{I} X_i w_{i,j}), j ∈ [1, J]

其中 w 是局部权重。在 1D-CNN 中:wO 是向量;在 2D-CNN 中它们是矩阵。

Abdel 等人是第一批将 CNN 应用于语音识别的人。他们的方法采用两种类型的卷积层。第一种采用全权重共享(FWS),权重跨所有位置共享。这种技术在用于图像识别的 CNN 中很常见,因为相同的特征可能出现在图像的任何位置。然而,在语音识别中,信号在不同频率上变化,并且在不同的滤波器中有不同的特征模式。为了解决这个问题,使用了有限权重共享(LWS),其中只有连接到相同池化过滤器的卷积过滤器共享相同的权重。

语音输入使用 25 毫秒汉明窗和固定的 10 毫秒帧率进行分析。更具体地说,特征向量是通过基于傅里叶变换的滤波器组分析生成的,其中包括分布在梅尔标度上的 40 个对数能量系数,以及它们的第一和第二时间导数。所有语音数据都经过归一化处理,使每个向量维度具有零均值和单位方差。

他们的 CNN 架构的构建块包括卷积层和池化层。输入特征被组织成几个特征图。随着应用更多的卷积和池化操作,特征图的大小(分辨率)在上层变得更小,如下图所示。通常,在最终 CNN 层之上添加一个或多个全连接隐藏层,以在馈送到输出层之前组合所有频带的特征。他们对不同的 CNN 配置进行了全面研究,并在 TIMIT 上取得了优异的结果,如下表所示。他们最好的模型仅采用 LWS 层,并实现了 20.23% 的 WER。

残差 CNN

Wang 等人采用带有 CTC 损失的残差 2D-CNN(RCNN)进行语音识别。残差块使用先前层和下一层之间的直接连接,如下所示:

x_{i+1} = f (x_i, W) + x_i

其中 f 是非线性函数。这有助于网络更快收敛,而无需使用额外参数。所提出的架构如下图所示。残差 CNN-CTC 方法采用 4 组具有小 3×3 滤波器的残差块。每个残差组有 N 个具有 2 层的卷积块。每个残差组也有不同的步幅,以降低计算成本并对具有不同上下文的时序依赖关系进行建模。在每个层上应用批量归一化和 ReLU 激活。

RCNN 在 WSJ 上使用标准配置(si284 集用于训练,eval92 集用于验证,dev93 集用于测试)进行评估。此外,它还在某中心聊天数据集上进行了评估,该数据集包含约 1400 小时的训练语音数据和独立的 2000 个句子用于测试。实验结果证明了残差卷积神经网络的有效性。RCNN 在 WSJ 的验证集和测试集上实现了 4.29%/7.65% 的 WER,在某中心聊天数据集上实现了 13.33% 的 WER。

Jasper

Li 等人实现了一个具有密集块和残差块的残差 1D-CNN,如下所示。该网络使用梅尔滤波器组提取特征,并使用包含批量归一化和 dropout 层的残差块以实现更快的收敛和更好的泛化。输入由使用 20 毫秒窗口和 10 毫秒重叠获得的梅尔滤波器组特征构建。该网络已使用不同类型的归一化和激活函数进行了测试,同时每个块都经过优化以适应单个 GPU 内核以实现更快的推理。Jasper 在 LibriSpeech 上使用不同的配置设置进行了评估。最佳模型有 10 个块,每块 4 层,使用 BatchNorm + ReLU,分别在干净集和嘈杂集上实现了 6.15% 和 17.38% 的验证 WER。

全卷积网络

Zeghidour 等人实现了一个具有 3 个主要模块的全卷积网络(FCN)。卷积前端是一个 CNN,具有低通滤波器、类似于滤波器组的卷积过滤器以及用于提取特征的算法函数。第二个模块是一个卷积声学模型,具有多个卷积层、GELU 激活函数、dropout 和权重正则化,并从输入中预测字母。最后,还有一个具有 14 个卷积残差块和瓶颈层的卷积语言模型。该模块用于使用波束搜索解码器评估声学模型的候选转录。FCN 在 WSJ 和 LibriSpeech 数据集上进行了评估。他们最好的配置采用具有 80 个滤波器的可训练卷积前端和一个卷积语言模型。FCN 在 WSJ 的验证集和测试集上分别实现了 6.8% 和 3.5% 的 WER,而在 LibriSpeech 上,它分别在干净集和嘈杂集上实现了 3.08%/9.94% 的验证 WER,在干净集和嘈杂集上实现了 3.26%/10.47% 的测试 WER。

时间深度可分离卷积(TDS)

与其他工作不同,Hannum 等人使用具有有限参数数量的时间可分离卷积网络,因为时间可分离 CNN 泛化能力更好且效率更高。编码器使用 2D 深度卷积以及层归一化。编码器从输入序列 x 输出两个向量,键 k = k₁, k₂, … k_T 和值 v = v₁, v₂, … v_T

[k, v] = TSN (x)

至于解码器,使用一个简单的 RNN 并输出下一个标记 y_u

Q_u = RNN (y_{u-1}, Q_{u-1})
S_u = attend(Q_u, k, v)
y_u = softmax([S_u , Q_u])

其中 S_u 是摘要向量,Q_u 是查询向量。

TDS 在 LibriSpeech 上进行了评估,具有不同的感受野和内核大小,以找到时间可分离卷积层的最佳设置。最佳选项是 11 个时间可分离块,分别在开发干净集和其他集上实现了 5.04% 和 14.46% 的 WER。

ContextNet

ContextNet 是一个全卷积网络,它通过挤压和激励模块将全局上下文信息输入到各层。CNN 有 K 层并生成特征如下:

h = C_K (C_{K-1} (… ( C₁(x))))

其中 C 是一个卷积块,后面跟着批量归一化和激活函数。此外,挤压和激励块通过全局平均池化层生成全局通道权重 θ,该权重与输入 x 相乘:

x̄ = (1/T) ∑_{t=0}^{T} x_t
θ = fc (x̄)
SE(x) = θ * x

ContextNet 在 LibriSpeech 上使用 3 种不同的 ContextNet 配置(有或没有语言模型)进行了验证。这 3 种配置分别是 ContextNet(小型)、ContextNet(中型)和 ContextNet(大型),它们包含不同数量的层和过滤器。

Transformer

最近,随着 Transformer 网络的引入,机器翻译和语音识别取得了显著进步。为语音识别设计的 Transformer 模型通常基于类似于 seq2seq 模型的编码器-解码器架构。更具体地说,它们基于自注意力机制,而不是 RNN 采用的循环。自注意力可以关注序列的不同位置并提取有意义的表示。自注意力机制接受三个输入:查询、值和键。

让我们将查询表示为 Q ∈ R^{t_q × d_q},值 V ∈ R^{t_v × d_v} 和键 K ∈ R^{t_k × d_k},其中 t_* 是对应的维度。自注意力的输出计算如下:

Attention(Q, K, V) = softmax(QK^T / sqrt(d_k)) V

其中 1 / sqrt(d_k) 是一个缩放因子。然而,Transformer 采用多头注意力,该机制计算 h 次自注意力,每个头 i 一次。这样,每个注意力模块关注不同的部分并学习不同的表示。此外,多头注意力的计算方式如下:

MHA(Q, K, V) = concat(h₁, h₂, … h_h) W^0
h_i = Attention(Q W_i^Q, K W_i^K, V W_i^V)

其中 W_i^Q ∈ R^{d_model × d_q}, W_i^K ∈ R^{d_model × d_k}, W_i^V ∈ R^{d_model × d_v}, W^O ∈ R^{h d_v × d_model}d_model 是 Transformer 的维度。最后,使用一个前馈网络,该网络包含两个全连接网络和 ReLU 激活函数:

FFN(x) = ReLU(x W₁ + b₁) W₂ + b₂

其中 W₁ ∈ R^{d_model × d_ff}, W₂ ∈ R^{d_ff × d_model} 是权重,b₁ ∈ R^{d_ff}, b₂ ∈ R^{d_model} 是偏置。一般来说,为了使 Transformer 能够关注相对位置,我们采用添加到输入中的位置编码。最常见的技术是正弦编码,描述如下:

PE(j,i) = { sin(j / 10000^{2i/d_model}) if 0 ≤ i < d_model/2
          { cos(j / 10000^{2i/d_model}) if d_model/2 ≥ i < d_model

其中 ji 分别代表序列中的位置和第 i 个维度。最后,使用归一化层和残差连接来加速训练。

Speech-Transformer

Speech-Transformer 将语音特征序列转换为相应的字符序列。比输出字符序列更长的特征序列由具有时间和频率维度的二维频谱图构建。更具体地说,使用 CNN 来利用频谱图的结构局部性,并通过沿时间步长滑动来减轻长度不匹配。

在 Speech Transformer 中,使用 2D 注意力以同时关注频率和时间维度。查询、键和值从卷积神经网络中提取,并馈送到两个自注意力模块中。Speech Transformer 在 WSJ 数据集上进行了评估,并取得了具有竞争力的识别结果,WER 为 10.9%,而训练时间比传统的 RNN 或 CNN 减少了约 80%。

具有卷积上下文的 Transformer

Mohamed 等人采用了一个由 CNN 和 Transformer 组成的编码器-解码器模型,以学习语音信号的局部关系和上下文。对于编码器,使用具有层归一化和 ReLU 激活的 2D 卷积模块。此外,每个 2D 卷积模块由 K 个具有最大池化的卷积层组成。对于解码器,对过去预测单词的嵌入执行 1D 卷积。

Transformer-Transducer

类似于 RNN-Transducer,一个 Transformer-Transducer 模型也已开发用于语音识别。与 RNN-T 相比,该模型的联合网络结合了音频编码器 AE 在时间步 t_i 的输出和先前预测的标签序列 z_0^{i-1} = (z₁, …, z_{i-1}),该标签序列由前馈网络和 softmax 层产生,表示为 LE。

联合表示的产生方式为:

J = fc(AE(x))(t_i) + fc(LE(z_0^{i-1}))

其中 fc 是一个全连接层。

然后,在时间步 t_i 的对齐分布计算为:

P(z_i | x, t_i, z_0^{i-1}) = softmax(fc(J))

Conformer

Conformer 是原始 Transformer 的一种变体,它将 CNN 和 Transformer 结合起来,通过使用更高效的架构和更少的参数来对局部和全局语音依赖关系进行建模。Conformer 的模块包含两个前馈层(FFN)、一个卷积层(CNN)和一个多头注意力模块(MHA)。Conformer 的输出计算如下:

x₁ = x + FFN(x)
x₂ = x₁ + MHA(x₁)
x₃ = x₂ + CNN(x₂)
y = LN(x₃ + FFN(x₃))

这里,卷积模块采用高效的点卷积和深度卷积以及层归一化。

CTC 和语言模型也已与 Transformer 网络结合使用。

用于基于 Transformer 的 ASR 的语义掩码

Wang 等人根据相应的输出标记,利用输入语音的语义掩码,基于先前的上下文生成下一个单词。使用类似 VGG 的卷积层来从输入频谱图中生成短期依赖特征,然后由 Transformer 进行建模。在解码器网络上,位置编码被 1D 卷积层取代以提取局部特征。

用于基于 Transformer 的 ASR 的弱注意力抑制

Shi 等人提出了一个弱注意力模块来抑制语音信号的非信息部分,例如静音期间。弱注意力模块将小于阈值的注意力概率设置为零,并重新归一化其余注意力概率。

阈值基于以下内容确定:

θ_i = m_i - γ δ_i
θ_i = (1/L) - γ sqrt( ∑_{j=1}^{L} (a_{i,j} - (1/L))² / (L-1) )

然后,对新的注意力概率再次应用 softmax,以生成新的注意力矩阵。

结论

显然,深度架构已经对自动语音识别产生了重大影响。卷积神经网络、循环神经网络和 Transformer 都已被成功使用。当今的 SOTA 模型都基于上述技术的某种组合。你可以在 paperswithcode 上找到流行数据集的一些基准测试。

如果你觉得这篇文章有用,你可能也会对之前我们回顾最佳语音合成方法的文章感兴趣。一如既往,欢迎与你的朋友分享。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)或者 我的个人博客 https://blog.qife122.com/
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

公众号二维码

公众号二维码

posted @ 2025-12-11 22:20  CodeShare  阅读(1)  评论(0)    收藏  举报