语音识别 2019 指南

《A 2019 Guide for Automatic Speech Recognition》

基于计算机的语音处理和识别被称为语音识别。它可用于对某些系统中的用户进行身份验证,以及向智能设备(如Google Assistant,Siri或Cortana)提供说明。

本质上,它通过存储人类语音并训练自动语音识别系统以识别该语音中的词汇和语音模式来工作。在本文中,我们将介绍一些旨在通过机器和深度学习解决此问题的论文。

Deep Speech 1: Scaling up end-to-end Speech Recognition

本文作者来自百度研究公司的硅谷AI实验室。Deep Speech1不需要音素字典phoneme dictionary,但它使用的是经过优化的RNN训练系统,该系统采用了多个GPU。该模型在Switchboard 2000 Hub5数据集上实现了16%的error。使用GPU是因为使用数千小时的数据来训练模型。该模型还可以有效处理嘈杂的环境。

Deep Speech的主要组成部分是循环神经网络,经过训练可以提取语音频谱图并生成英语文本转录。RNN的目的是将输入序列转换为字符概率序列进行转录。

RNN具有五层隐藏单元,前三层不设置为循环(recurrent)的。在每个时间步,非循环层都对独立数据起作用。第四层是具有两组隐藏单元的双向循环层(bi-directional recurrent layer)。一组具有forward recurrence,而另一组具有backward recurrence。预测之后,将 Connectionist Temporal Classification(CTC)loss 以测量预测误差。使用Nesterov的“加速梯度”方法(Nesterov’s Accelerated gradient method)进行训练。

为了减少训练期间的variance,作者在前馈(feedforward)层中添加了5%到10%之间的dropout。但是,这不适用于recurrent hidden activations。他们还将N-gram语言模型集成到他们的系统中,因为N-gram模型易于从庞大的未标记文本语料库中进行训练。下图显示了RNN的转录示例。

与其他模型相比,此模型的性能如下:

Deep Speech 2: End-to-End Speech Recognition in English and Mandarin

在“Deep Speech”的第二次迭代中,作者使用端到端深度学习方法来识别汉语普通话和英语语音。提出的模型能够处理不同的语言和口音以及嘈杂的环境。作者使用高性能计算(HPC: high-performance computing)技术将其先前模型DeepSpeech1的速度提高了7倍。在他们的数据中心,他们使用GPU进行Batch Dispatch。

英语语音系统的训练时间为11,940小时,而普通话系统的训练时间为9,400小时。在训练期间,作者使用数据合成来扩充数据。

此模型中使用的体系结构具有多达11个层,这些层由双向递归层和卷积层组成。该模型的计算能力比Deep Speech 1 快8倍。作者使用Batch Normalization 进行优化。

对于激活功能,它们使用 clipped rectified linear(ReLU)函数。从本质上讲,该体系结构类似于Deep Speech 1。该体系结构是循环神经网络,经过训练可以输入语音频谱图并输出文本转录。使用CTC loss 函数训练模型。

下面是各种卷积层排列的Word Error Rate比较。

Deep Speech 1和Deep Speech 2的单词错误率的比较如下所示。Deep Speech 2的字错误率要低得多。

作者在《Wall Street Journal》新闻文章集(WSJ)的两个测试数据集上对该系统进行了基准测试。该模型在单词错误率方面的表现,在四分之三的情况下,均优于人类。该LibriSpeech语料库也被使用。

First-Pass Large Vocabulary Continuous Speech Recognition using Bi-Directional Recurrent DNNs

本文的作者来自 斯坦福大学。在本文中,他们提出了一种使用语言模型和神经网络执行first-pass 大词汇量语音识别的技术。

使用connectionist temporal classification(CTC)loss 函数来训练神经网络。CTC使作者能够训练一个神经网络,该网络预测字符错误率(CER)低于10%的《Wall Street Journal》 LVCSR语料库上的测试话语的字符序列。

他们将n-gram语言模型与经过CTC训练的神经网络集成在一起。该模型的体系结构是 Reaction-diffusion neural networks(RDNN)。使用rectifier nonlinearity(ReLu)的修改版本,该修改版本会裁剪大的激活值以防止在网络训练期间发散。这是RDNN获得的字符错误率结果。

English Conversational Telephone Speech Recognition by Humans and Machines

IBM Research的作者提出本论文的目的是验证语音识别技术是否已达到人类的性能。他们还提出了一套声学和语言建模技术。

声学方面有三种模型:一种具有多个功能输入的LSTM,另一种经过speaker-adversarial 多任务学习训练的LSTM,以及第三种具有25个卷积层的残差网络。

语言模型使用character LSTM和卷积WaveNet-Style语言模型。作者的英语会话电话LVCSR系统在总机 / 回拨子集(SWB / CH)上的单词错误率是5.5%/ 10.3%。

本文使用的体系结构由4-6个双向bidirectional层(每层1024个单元),一个线性bottleneck层(具有256个单元)和一个输出层(具有32K个单元)组成。训练包含14次交叉熵 cross-entropy训练,然后使用增强型MMI(Maximum Mutual Information)标准进行1次随机梯度下降(SGD)序列训练。

通过添加交叉熵损失的比例梯度,可以平滑此过程。LSTM是在Torch中使用CuDNN 5.0版后端实现的。每个模型的交叉熵训练都是在单个Nvidia K80 GPU设备上完成的,每个时期花费700万个样本花费了大约两周的时间。

对于卷积网络声学建模,作者训练了残差网络。下表显示了几种ResNet架构及其在测试数据上的性能。

下图显示了残差网络如何进行声学建模。该网络具有12个残差块residual block,30个权重层和67.1M参数。使用Nesterov加速梯度进行训练,学习速率为0.03,动量为0.99。CNN也使用cuDNN v5.0后端在Torch上实现。使用Nvidia K80 GPU(每个GPU的批处理大小为64),对15亿个样本进行了80天的交叉熵训练。

现在让我们看一下LSTM和ResNet的单词错误率:

作者还尝试了四种LSTM语言模型,即WordLSTM,Char-LSTM,Word-LSTM-MTL和Char-LSTM-MTL。下图显示了它们的体系结构。

Word-LSTM具有一个word-embedding 层,两个LSTM层,一个完全连接层和一个softmax层。Char-LSTM具有LSTM层,可根据字符序列估计word embeddings 。Word-LSTM和Char-LSTM都使用交叉熵损失来预测下一个单词。Word-LSTM-MTL和Char-LSTM-MTL中引入了多任务学习(MTL:Multi-task learning)。

WordDCC由word embeddings层,带扩张的因果卷积(causal convolution)层,卷积层,完全连接的层,softmax层和残差连接组成。

Wav2Letter++: The Fastest Open-source Speech Recognition System

Facebook AI Research的作者提出了Wav2Letter,这是一种开源深度学习语音识别框架。它是用C ++编写的,并使用ArrayFire张量库。

之所以使用ArrayFire张量库,是因为它可以在多个后端(例如CUDA GPU后端和CPU后端)上执行,从而可以更快地执行。与其他C ++张量库相比,在ArrayFire中构造和使用数组也容易得多。左图显示了如何构建和训练具有二进制交叉熵损失的多层MLP(多层感知器)。

该模型在《Wall Street Journal》(WSJ)数据集上进行了评估。使用两种类型的神经网络体系结构来评估训练时间:具有3000万个参数的递归和具有1亿个参数的纯卷积。下图显示了在LibriSpeech上获得的字错误率。

SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition

Google Brain的作者预设了一种用于语音识别的简单数据增强方法,称为SpecAugment。该方法对输入音频的对数梅尔声谱图进行操作。

在LibriSpeech测试其他集上,作者在没有语言模型的情况下达到了6.8%的WER(单词错误率),在有语言模型的情况下达到了5.8%的WER。对于Switchboard,他们在Switchboard/ CallHome上分别达到7.2%/ 14.6%。

使用此方法,作者可以训练称为“ Listen, Attend and Spell (LAS)”的端到端ASR(自动语音识别)网络。所使用的数据增强策略涉及时间扭曲,频率屏蔽和时间屏蔽。

在LAS网络中,输入对数mel频谱图以2的步幅传递到2层卷积神经网络(CNN)。此CNN的输出通过编码器encoder传递,该编码器具有d个堆叠的双向(bi-directional )LSTM,其cell size w产生一系列注意力向量。

注意力向量(attention vectors)被馈送到单元尺寸为w的2层RNN解码器decoder中。这将输出the tokens for the transcript。使用LibriSpeech词汇表的Word Piece Model为16k,对于Switchboard的Word Piece Model为1k,可以完成文本的标记化。最终transcripts是通过beam size为8的beam search获得的。

这是LAS + SpecAugment的字错误率性能。

Wav2Vec: Unsupervised Pre-training for Speech Recognition

Facebook AI Research的作者通过学习原始音频的表示(representations),探索了语音识别的无监督预训练。结果产生了Wav2Vec,该模型在庞大的未标记音频数据集上进行了训练。

从中获得的representations然后用于改善声学模型训练。通过noise contrastive二分类任务对简单的多层卷积神经网络进行了预训练和优化。在nov92测试集上,Wav2Vec的 WER为2.43%。

预训练中使用的方法是优化模型,以从单个上下文中预测将来的样本。该模型将原始音频信号作为输入,然后应用编码器网络(encoder network)和上下文网络(context network)。

编码器网络将音频信号嵌入到潜在空间(latent space)中,上下文网络将编码器的多个时间步组合在一起,以获得已被上下文化的表示。然后从两个网络计算目标函数。

编码器和上下文网络中的层由具有512个通道的因果卷积,group normalization 层和ReLU非线性激活函数组成。在训练期间由上下文网络产生的表示(representations)被馈送到声学模型。声学模型的训练和评估是使用wav2letter ++工具包完成的。对于解码,使用在WSJ语言建模数据集上训练的词典lexicon 和单独的语言模型。

这是该模型与其他语音识别模型相比的单词错误率。

Scalable Multi Corpora Neural Language Models for ASR

在本文中,Amazon Alexa的作者提供了针对在大型ASR系统中使用神经语言模型(NLM:Neural Language Models )时遇到的一些挑战的解决方案。

作者试图解决的挑战是:

  • 在多个异类(heterogenous)语料库上训练NLM
  • 通过将类别(例如联系人姓名)的biases从first-pass模型传递给NLM,来个性化神经语言模型(NLM)
  • 将NLM整合到ASR系统中,同时限制对延迟的影响

对于从异构语料库中学习的任务,使用随机梯度下降的变体来估计神经网络的参数。此方法取决于每个小批量是要从中学习的分布的独立且相同(iid)样本。通过从每个语料库中根据其相关性概率抽取样本来随机构建Minibatches。从每个数据源构造n元语法模型并在开发集上优化其线性插值权重可用于相关性权重。

通过从NLM采样一个大型文本语料库并从该语料库估计一个n-gram模型来构造NLM的n-gram近似值,从而为first-pass LM 生成合成数据。subword NLM用于生成合成数据,以确保生成的语料库不限于ASR系统当前版本的词汇表。模型中使用的书面文本语料库总共包含500亿个单词。NLM体系结构由两个 Long Short-Term Memory Projection Recurrent Neural Network(LSTMP)层组成,每个层都包含1024个隐藏单元,这些隐藏单元投影到512维度。这些层之间存在残差连接。

这是从该模型获得的一些结果。它通过从NLM生成综合数据来获得1.6%的相对WERR。

发布于 2019-11-15

文章被以下专栏收录