本文主要梳理Facebook AI Research 从2019年开始的发表的wav2vec系列工作,主要包括了Wav2vec、Wav2vec 2.0
1. Wav2vec: Unsupervised Pre-training for Speech Recognition
1.1 Introduction
wav2vec 是Interspeech 2019 收录的文章,论文中,作者用无监督预训练的卷积神经网络来改善语音识别任务,提出了一种噪声对比学习二分类任务(noise contrastive binary classification task),从而使得wav2vec可以在大量未标注的数据上进行训练。实验结果表明wav2vec预训练得到的speech representation超越了帧级别的音素分类任务并且可以显著提升ASR模型的表现,同时,完全卷积架构与使用的递归模型相比,可以在硬件上并行计算。
在机器学习特别是深度学习的相关领域中,通过无标注数据得到好的数据表示来提升某个任务的表现是很常见且有效的方法。对CV或是NLP有了解的同学肯定对embedding这个概念非常熟悉,所谓embedding就是一种数据的低维度representation。比如在CV中我们可以使用训练完的ResNet的最后一个全连接层的输出作为图象的representation;又比如在NLP中我们可以使用早期的word2vec或是近期很火的BERT作为单词的representation。当我们需要做一个具体的NLP中的任务,比如机器翻译,我们就可以使用训练好的BERT模型来fine-tuning机器翻译模型。这个其实可以被视为一种迁移学习的方法。
实际上在语音中也有很多基于无监督算法来获得representation的工作,这里的representation不仅可以是speech的表示,也可以是speaker的表示,比如我之前介绍的通过speaker verification来获得speaker embedding进而提升Multi-speaker TTS表现的工作就是一个典型的例子。
1.2 Method & Model
1.3 loss function
1.4 experiment & result
论文中使用的数据集为:TIMIT、WSJ、Librispeech,然后在si284上进行训练,在nov93dev上进行验证,并在上进行测试nov92。 对比实验使用的是80维的log-mel filterbank ,步幅为10 ms。
实验结果显示用wav2vec作为输入的模型比使用传统log mel filterbank的模型最高有30%左右的提升。同样作者验证了在labeled data数据有限的情况下,wav2vec相比baseline会有更多的收益。
2. Wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations
Wav2vec 2.0作者给出的解释是学习了用于解决自监督任务的基本语音单元。对模型进行训练,以预测语音中用于拟合目标的语音单元,同时学习到用于任务学习的语音建模单元应该是什么。
wav2vec 2.0只需转录10分钟的语音和53,000小时的未标记语音,就可以在LibriSpeech上达到8.6%的含噪语音词错率(WER)和5.2%的纯净语音词错率(WER)。同时,还为方言和细分领域的语音识别任务打开了大门,这些模型以前需要更多的音频数据才能达到可接受的性能。第二,作者还开发了一种跨语言方法,称为XLSR,可以学习几种语言通用的语音单元。当只有少量未标记的语音样本时,此方法会有所收益。
像BERT一样,wav2vec是通过预测语音被掩盖部分(masked parts)的语音单元来完成建模任务的。主要区别在于语音音频是连续信号,可以捕获音频的许多方面,并没有清晰地分割为单词或其他语音单位。Wav2vec 2.0通过学习25ms左右的上下文表示来解决此问题。这些单元然后用于表征不同的语音样本。这使我们能够在训练数据不充分的情况下构建更具鲁棒性的语音识别系统。
2.1 学习离散的潜在语音单元
传统的语音识别模型主要在有标注的语音样本上进行训练。成熟的系统往往需要大量有标注的数据。自监督学习提供了一种利用未标注的数据来构建更好的系统。
其他用于语音的自监督方法尝试重建音频信号,这需要模型捕获语音的多个方面,包括录音环境,噪声和说话人特征。
wav2vec 2.0 通过拟合一组比音素短的ASR建模单元来表征语音音频序列。由于此集合是有限的,因此该模型无法表示所有的差异,例如背景噪声。取而代之的是,这些建模单元将鼓励模型将注意力集中在代表语音音频的最重要因素上。在实验中,此方法比LibriSpeech 的benchmark 测试中的方法表现更好。
wav2vec 2.0 模型首先使用多层卷积神经网络处理语音音频的原始波形,以获得每个25ms的潜在音频表示。这些表征向量被喂到量化器(quantizer)和transformer中。量化器从学习的单元清单(inventory of learned units)中选择一个语音单元作为潜在音频表征向量。大约一半的音频表示在被馈送到transformer之前被隐蔽掉(masked)。transformer从整个音频序列中添加信息,输出用于计算loss function。模型需要通过掩盖位置(masked positions)识别正确的量化语音单位。
通过跨语言培训,wav2vec 2.0可以学习多种语言使用的语音单元。
2.2 语言无关的训练
获取有标注的数据代价昂贵,为了解决这个问题,同时在多种语言上预训练单个模型,可以获得比在单一语言上训练更好的表征向量。这对于自然语言处理特别有效。使用这种方法可以极大的降低资源不足的问题,因为它们可以从相关的语言中受益。
2.3 benchmark 的性能
作者从960小时的无标注的语音数据中训练了wav2vec。经过预训练后,在100小时,1小时或仅10分钟的有标注数据上对模型进行了语音识别的finetune操作。结果显示,在100小时的有标注数据(Noisy Student training)上,wav2vec 2.0的性能有巨大的提升。而且,即使使用少100倍的数据或仅使用一个小时,它仍显示出比以前的最佳结果有所改进。
对比实验中增加无标注的数据量,作者用LibriVox数据集中的10分钟有标记数据进行微调。结果是该模型的WER仍达到8.6%。这表明,wav2vec 2.0可以为几乎没有标签的训练数据的提供语音识别模型的建模单元。
为了评估跨语言能力,wav2vec 2.0进行了12种语言的无标注数据训练,表明与仅使用单一语言的培训相比,跨语言培训显着提高了资源匮乏语言的性能。同时,作者还测量了每种语言使用学习的语音单位的频率,并在2D图中可视化了结果。此图说明相关语言倾向于使用相似的单位,这证实了模型学习跨语言单位。
根据音素错误率(PER)在Common Voice基准测试中得出的结果,将每种语言的训练(XLSR-Mono)与所有10种语言的训练(XLSR-10)进行了比较。
图显示了每种语言使用的语音建模单元。距离近的语言,例如英语和德语或巴斯克语和加泰罗尼亚语,往往使用更相似的建模单元。
3. 总结
wav2vec模型是一种AR(AutoRegression)机制的模型,所以在预训练阶段的wav2vec的模型更像是以原始音频为输入的语言模型,而随着训练数据的加大,wav2vec的作用也在渐渐弱化;另外,至于自主选择语音识别的建模单元的说法类似与于HMM状态自旋和跳转的转移概率。只不过是用了表达能力更强的模型刻画出了非线性的关系。
总体来说,自主选择表征特征的深度学习时代也已经来到了语音识别领域,或许能够为语音识别打开一扇新的大门,或许只是ASR发展历程中的一朵小浪花都需要时间和实践的认证,但是从论文中的结果来看,值得期待此方向更多的work,关于论文的解读和看法,欢迎评论区讨论。
参考
Wav2vec——无监督的Speech Representation预训练模型
作者:无易
文章来源:知乎
推荐阅读
更多芯擎AI开发板干货请关注芯擎AI开发板专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。