(IS 19)wav2vec: Unsupervised Pre-training for Speech Recognition

会议:INTERSPEECH 2019
论文:wav2vec: Unsupervised Pre-training for Speech Recognition
作者:Steffen Schneider, Alexei Baevski, Ronan Collobert, Michael Auli

Abstract

我们通过学习原始音频的表示,探索语音识别的无监督预训练。 在大量未标记的音频数据上对wav2vec进行训练,然后将所得表示形式用于改进声学模型训练。 我们预训练了通过噪声对比二进制分类任务优化的简单多层卷积神经网络。 当只有几个小时的转录数据可用时,我们在WSJ上进行的实验将基于字符的强大log-mel滤波器组基线的WER降低多达36%。 我们的方法在nov92测试集上达到了2.43%的WER。 这优于“深度语音2”(Deep Speech 2),后者是文献中报道最多的基于字符的系统,同时使用的标签训练数据少了三个数量级。

5. Conclusions

我们介绍了wav2vec,这是无监督预训练在具有完全卷积模型的语音识别中的首次应用。 我们的方法在WSJ的测试集上达到了2.43%的WER,其结果优于文献[1]中的下一个最著名的基于字符的语音识别模型,同时使用的转录数据少了三个数量级。 我们表明,更多的预训练数据可以提高性能,并且这种方法不仅可以改善资源匮乏的设置,还可以改善使用所有WSJ训练数据的设置。 在以后的工作中,我们将研究可能会进一步提高性能的不同体系结构。

1. Introduction

当前用于语音识别的最新模型需要大量的转录音频数据才能获得良好的性能[1]。最近,神经网络的预训练已成为一种有效的技术,可用于设置缺少标记数据的环境。关键思想是在有大量标记或未标记数据可用的设置中学习常规表示,并利用学习的表示来改善数据量受限的下游任务的性能。对于需要大量工作来获取标记数据的任务(例如语音识别),这尤其有趣。

在计算机视觉中,已证明ImageNet [2]和COCO [3]的表示形式对于初始化诸如图像字幕[4]或姿态估计[5]等任务的模型很有用。对计算机视觉的无监督预训练也显示出了希望[6,7]。在自然语言处理(NLP)中,语言模型的无监督预训练[8,9,10]改善了许多任务,例如文本分类,短语结构解析和机器翻译[11,12]。在语音处理中,预训练的重点是情感识别[13],说话人识别[14],音素识别[15、16]以及将ASR表示从一种语言转移到另一种语言[17]。在语音的无监督学习方面已经开展了工作,但是结果表示尚未用于改善有监督的语音识别[18,19,20,21,22]。

在本文中,我们应用无监督的预训练来改善有监督的语音识别。这样可以利用未标记的音频数据,该数据比标记的数据更容易收集。我们的模型wav2vec是一个卷积神经网络,它将原始音频作为输入并计算可以输入到语音识别系统的一般表示。目标是对比损失,需要将真实的未来音频样本与底片区分开来[23、24、16]。与以前的工作[16]不同,我们超越了逐帧音素分类,并应用学习的表示法来改进强大的监督ASR系统。 wav2vec依赖于完全卷积的体系结构,与先前工作中使用的循环模型相比,该体系很容易随时间在现代硬件上并行化(第2节)。

《华尔街日报》基准测试的实验结果表明,对大约1,000小时未标记语音进行预训练后的表征可以大大改善基于字符的ASR系统,并且胜过文献中《深度语音2》中基于字符的最佳结果,WER从3.1%提高至2.43%。在TIMIT上,预训练使我们能够匹配文献中报告的最佳结果。在仅录制八个小时的音频数据的模拟低资源设置中,与仅依赖标记数据的基准模型(§3,§4)相比,wav2vec最多可将WER降低36%。

2. Pre-training Approach

在给定音频信号作为输入的情况下,我们优化模型(第2.1节),以根据给定的信号上下文预测未来的采样。 这些方法的共同问题是需要对数据分布p(x)进行精确建模,这是一个挑战。 通过首先以较低的时间频率将原始语音样本x编码为特征表示z,然后隐式地模拟密度比p(zi + k | zi ... zi-r)/ p(zi + k),我们避免了这个问题 至[16]。

2.1. Model
我们的模型将原始音频信号作为输入,然后应用两个网络。 编码器网络将音频信号嵌入到一个潜在的空间中,上下文网络将编码器的多个时间步组合在一起以获得上下文表示(图1)。 然后将两个网络都用于计算目标函数(第2.2节)
在这里插入图片描述
给定原始音频样本xi∈X,我们应用编码器网络f:X 7→Z参数化为五层卷积网络[16]。或者,可以使用其他体系结构,例如[25]的可训练前端。编码器层具有内核大小(10,8,4,4,4)和步幅(5,4,2,2,2)。编码器的输出是低频特征表示zi∈Z,它对大约30ms的16kHz音频进行编码,并且每隔10ms的步长结果就会生成表示zi。

接下来,我们将上下文网络g:Z 7→C应用于编码器网络的输出,以将多个潜在表示zi … zi-v混合到单个上下文张量ci = g(zi … zi-v)中上下文网络有9个层,内核大小为3,跨度为1。上下文网络的总接收场约为210毫秒。

编码器网络和上下文网络中的层由具有512个通道的因果卷积,组归一化层和ReLU非线性组成。我们对每个样本的特征和时间维度进行归一化,这等效于使用单个归一化组进行的归一化[26]。我们发现选择对输入的缩放和偏移不变的标准化方案非常重要。这种选择导致了可以很好地概括数据集的表示形式。

为了在较大的数据集上进行训练,我们还考虑了容量增加的模型变体(“ wav2vec large”),在编码器中使用了两个附加的线性变换,并使用了由十二层组成的,具有更大内核尺寸(2,3,)的相当大的上下文网络。 …,13)。我们发现在这种情况下在聚合器中引入跳过连接以帮助收敛很重要。因此,最后一个上下文网络层中的总接收场增加到大约810毫秒。

2.2. Objective
我们通过最小化每一步的对比损失来训练模型,以区分未来的k步的样本zi + k与从提案分布pn提取的干扰项样本〜z
在这里插入图片描述
其中,s表示sigmoidσ(x)= 1 /(1 + exp(-x)),其中zi + k是真实样本的概率。 我们考虑针对每个步骤k的特定于步骤的仿射变换hk(ci)= Wkci + bk,将其应用于ci [16]。
我们优化损耗,对不同步长求和(1)。 在实践中,我们通过从每个音频序列中均匀选择干扰因子来采样十个否定样本来近似期望值,即pn(z)= T1,其中T是序列长度,并将λ设置为否定数目。

训练后,我们将上下文网络ci生成的表示形式输入到声学模型中,而不是使用log-mel滤波器组特征。

3. Experimental Setup

3.1. Data
我们考虑以下语料库:对于TIMIT [27]上的音素识别,我们使用标准的train,dev和test split,其中训练数据仅包含三个小时以上的音频数据。 《华尔街日报》(《华尔街日报》; [28,29])包含约81小时的转录音频数据。我们在si284上进行培训,在nov93dev上进行验证,在nov92上进行测试。 Librispeech [30]总共包含960个小时的干净嘈杂的语音训练。对于预训练,我们可以使用WSJ语料库的完整81小时,干净的Librispeech的80小时子集,完整的960小时Librispeech训练集,或全部使用。

为了训练基线声学模型,我们为步长为10ms的25ms滑动窗口计算了80个log-mel滤波器组系数。最终模型根据单词错误率(WER)和字母错误率(LER)进行评估。

3.2. Acoustic Models
我们使用wav2letter ++工具包来训练和评估声学模型[31]。对于TIMIT任务,我们遵循[25]的基于字符的wav2letter ++设置,该设置使用七个连续的卷积块(内核大小5,具有1,000个通道),然后是PReLU非线性和丢包率为0.7。最终的表示被投影为39维音素的概率。使用具有动量的SGD的自动细分标准(ASG; Collobert等,2016)训练模型。

WSJ基准的基线是[33]中描述的wav2letter ++设置,这是一个带有门控卷积的[17]层模型[34]。该模型预测31种字素的概率,包括标准英语字母,单引号和句号,两个重复字符(例如单词ann被转录为an1)以及用作单词边界的沉默令牌(|)。

使用fairseq和wav2letter ++的分布式训练实现,在8个NVIDIA V100 GPU上训练了所有声学模型。当在WSJ上训练声学模型时,我们使用学习率5.6的普通SGD以及梯度裁剪[33],并针对1,000个时期进行训练,总批量大小为64个音频序列。在使用4克语言模型评估检查点之后,我们使用早期停止并基于验证WER选择模型。对于TIMIT,我们使用学习率0.12,动量0.9,并在8个GPU上训练1,000个纪元,批处理大小为16个音频序列。

3.3. Decoding
为了解码声学模型中的发射,我们使用词典以及仅根据WSJ语言建模数据训练的单独语言模型。我们考虑4克KenLM语言模型[37],基于单词的卷积语言模型[33]和基于字符的卷积语言模型[39]。我们使用[33]的波束搜索解码器,通过最大化上下文网络c或log-mel滤波器组的输出来解码单词序列y在这里插入图片描述
其中,fAM是声学模型,pLM是语言模型,π=π1,…,πL是y的字符。 超参数α,β和γ是语言模型,单词惩罚和静默惩罚的权重。

为了解码WSJ,我们使用随机搜索调整超参数α,β和γ。 最后,我们对具有最佳参数设置的α,β和γ的声学模型的发射进行解码。 对于基于单词的语言模型,我们使用4000的波束大小和250的波束分数阈值,对于基于字符的语言模型,使用1500的波束大小与波束分数阈值40。

3.4. Pre-training Models
预培训模型是在Fairseq工具包[40]中的PyTorch中实现的。我们用Adam [41]和余弦学习速率表[42]对WSJ和干净的Librispeech训练数据集进行了超过40k的更新步骤,对整个Librispeech进行了40万以上的步骤,对余弦学习率进度表进行了优化。我们以1×10−7的学习率开始,然后逐渐将其预热500次更新,直至5×10−3,然后按照余弦曲线直至1×10−6衰减。为了计算目标,我们为K = 12个任务中的每一个采样了十个负数。

我们在8个GPU上训练了第一个wav2vec变体,并在每个GPU上放置了多达150万帧的音频序列。序列按长度分组,我们将每个序列裁剪为最大15万帧的大小,或批处理中最短序列的长度,以较小者为准。裁剪会从序列的开头或结尾中删除语音信号,我们随机决定每个样本的裁剪偏移量;我们会在每个时期重新采样。这是数据扩充的一种形式,但也可确保GPU上所有序列的长度相等,并平均删除25%的训练数据。裁剪后,整个GPU的总有效批量大小约为556秒。对于大型模型,我们在16个GPU上进行训练,使有效批次大小增加了一倍。

4. Results

与[16]不同,我们直接在下游语音识别任务上评估了预训练的表示形式。我们在WSJ基准上测量语音识别性能,并模拟各种低资源设置(第4.1节)。我们还将评估TIMIT音素识别任务(第4.2节),并消除各种建模选择(第4.3节)。

4.1. Pre-training for the WSJ benchmark
我们考虑对WSJ的音频数据(无标签),干净Librispeech的一部分(大约80h)和完整Librispeech以及所有数据集的组合(第3.1节)进行预训练。对于预训练实验,我们将上下文网络的输出提供给声学模型,而不是使用log-mel滤波器组功能。
在这里插入图片描述
表1显示了对更多数据进行的预训练可以提高WSJ基准的准确性。预先训练的表示形式可以大大提高我们基于字符的基线的性能,该基线基于对数-mel滤波器组功能进行训练。这表明在nov92上,对未标记音频数据进行的预训练可以比基于最佳字符的方法Deep Deep 2 [1]提高0.67 WER。与[35]相比,wav2vec的性能与基于音素的模型一样好,而wav2vec的性能比其wer2高出0.37 WER。 [36]的基于音素的方法会在标签版本的Librispeech上进行预训练,然后在WSJ上进行微调。尽管基线模型较弱且未使用Librispeech转录,但wav2vec大号仍优于[36]。

预先转录的数据较少的预训练表示有什么影响?为了更好地理解这一点,我们使用不同数量的标记训练数据来训练声学模型,并在有和没有预训练表示(对数梅尔滤波器组)的情况下测量准确性。预训练的表示形式在完整的Librispeech语料库上进行训练,当我们使用4克语言模型进行解码时,我们会根据WER来衡量准确性。图2显示,只有大约8个小时的转录数据可用时,预训练可以使nov92的WER降低36%。与更大的Librispeech(wav2vec Libri)相比,仅对WSJ的音频数据(wav2vec WSJ)进行预训练的效果较差。这进一步证实,对更多数据进行预训练对于获得良好性能至关重要。与[7]类似,我们注意到微调嵌入网络并不能有效地提高性能,而会大大增加声学模型的训练时间。
在这里插入图片描述
4.2. Pre-training for TIMIT
在这里插入图片描述
在TIMIT任务中,我们使用7层wav2letter ++模型,该模型具有较高的辍学率(第3节; [18])。 表2显示了对Librispeech和WSJ音频数据进行的wav2vec预训练可以导致与现有技术相匹配的结果。 随着更多的预训练数据,精度稳步提高,并且通过最大量的预训练数据实现了最佳精度。

4.3. Ablations
在这里插入图片描述
在本节中,我们分析了为wav2vec做出的一些设计选择。 我们对80天的干净Librispeech进行预训练,并评估TIMIT。 表3显示,增加阴性样品的数量最多只能帮助十个样品。 此后,在训练时间增加的同时,性能达到稳定状态。 我们怀疑这是因为来自阳性样本的训练信号会随着阴性样本数量的增加而减少。 在此实验中,除负样本数量外,其他所有条件均保持相等。
在这里插入图片描述
接下来,我们通过裁剪音频序列来分析数据增强的效果(第3.4节)。 创建批次时,我们将序列裁剪为预定义的最大长度。 表4显示了150k帧的农作物大小可获得最佳性能。 不限制最大长度(无)会产生约207k帧的平均序列长度,并导致最差的精度。 这很可能是因为该设置提供的数据扩充量最少。

表4还显示,预测未来提前超过12步不会提高性能,增加步数会增加训练时间。

发布了83 篇原创文章 · 获赞 11 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/Pandade520/article/details/105540395
今日推荐