如果您一直在尝试自动语音识别(“ASR”)领域,那么您很有可能遇到过 Meta AI Research 的wav2vec 2.0(“wav2vec2”) 。有一些优秀的技术资源,其中最重要的是原始 wav2vec2 论文本身,它描述了机器学习(“ML”)模型的工作原理。此外,Meta AI 研究团队在其网站上对 wav2vec2 进行了很好的概述。
我鼓励您看一下它,因为它提供了学术论文的精彩摘要,并且本文中的 wav2vec2 模型插图来自该页面。考虑到前面的内容,似乎没有很多文章用“简单的英语”解释 wav2vec2。我试图通过这篇文章来做到这一点。
本文假设您了解一些基本的 ML 概念,并且您有兴趣了解 wav2vec2 在高层次上的工作原理,而不是“深入了解”。
因此,后续部分尝试避免大量技术细节,转而在适当的时候进行简单的解释和有用的类比。
话虽如此,尽早了解 wav2vec2 由 3 个主要组件组成是有帮助的:特征编码器、量化模块和转换器。
每个问题都将在开始讨论的过程中讨论一些基本想法,同时建立更复杂(但仍然易于理解)的观点。请记住,wav2vec2 还可用于 ASR 之外的其他用途。
话虽这么说,接下来的内容将在 ASR 特定的上下文中讨论该模型。
wav2vec2 在 2020 年推出时,为构建 ASR 系统提供了一种新颖的框架。它有什么特别之处?在 wav2vec2 之前,ASR 系统通常使用标记数据进行训练。也就是说,先前的模型是在许多语音音频示例上进行训练的,其中每个示例都有关联的转录。为了解释这个想法,请考虑以下波形:
仅看这个波形并不完全清楚它代表什么。但是,如果您被告知生成此音频的说话者说了“hello world”,您可能可以对波形的哪些部分与代表它的文本相对应做出一些明智的猜测。
您可能正确地猜测波形的第一段与单词“hello”相关。同样,ASR 模型可以学习如何在口头音频波形片段和书面文本之间建立关联。
然而,正如 wav2vec2 最初的研究人员在他们的论文中指出的那样, “[许多]语音识别系统需要数千小时的转录语音才能达到可接受的性能,而这对于全球近 7,000 种语言中的绝大多数来说是无法实现的。”
因此,wav2vec2 研究人员发明了一种新模型,不需要“数千小时的转录语音”来训练系统。他们引用了一个有用的人类类比:婴儿不会通过听到一个单词,然后立即看到该单词的文本表示来学习说话。
他们通过聆听环境中的人(例如,他们的父母、兄弟姐妹等)来学习言语表征。 wav2vec2 以类似的方式学习:先听。
当然,如何实现这一点是本文讨论的重点。请记住,wav2vec2 的广泛设计是为了完成两件事:
了解应向哪些语音单元提供未标记的音频样本。
预测正确的语音单元。
此时,您不需要完全理解这些点的含义。下面将对其进行解释。暂时将它们放在脑后即可。
想象一下,您有一个巨大的音频样本数据集——比如一些说英语的人。即使没有正式的语音学背景,您也可能直观地理解英语是使用一组“串在一起”形成单词、句子等的基本声音来发声的。
当然,如果您是说英语的人,您就不会考虑以这种方式说话,并且您或多或少会自动发声说出您想说的内容!但是,重点是英语口语——实际上是任何口语——都可以分解为更基本、离散的声音。
如果我们能够以某种方式引导 ASR 模型“提取”这些基本声音,那么我们就可以使用它们对口语的任何音频样本进行编码。这就是 wav2vec2 通过对音频数据进行预训练所做的事情。
在这种情况下,预训练意味着模型训练的第一部分是自我监督的,因为它没有明确“告知”给定音频数据集的基本声音应该是什么。
再深入一点,系统会被“输入”大量纯音频示例,并且能够从这些示例中学习一组基本语音单元。
因此,每个音频示例实际上都是由这些语音单元的某种组合组成的;就像您可以将口语音频样本分解为一系列音素一样。
重要的是,wav2vec2 学习的基本语音单元比音素短,长度为 25 毫秒。
此时出现的问题是:wav2vec2 如何仅从音频中学习这些语音单元?
学习语音单元的过程从特征编码器开始。 wav2vec2 “通过多层卷积神经网络对语音音频进行编码。”
卷积神经网络(CNN)是一种模型,允许我们从给定的输入中学习特征,而无需事先明确识别这些特征。
CNN 的每一层都可以被认为是从输入中提取特征,随着向上移动到更高的层,这些特征变得越来越复杂。
对于音频数据,您可能会想象 CNN 中的第一层检查音频信息窗口并提取低级特征,例如原始声音。
同一 CNN 中的后续层利用早期层中提取的较低级别的特征,对较高级别的特征进行编码,例如近似音素的声音。
遵循这个想法,wav2vec2 可以通过将每个音频示例的时间切片传递到特征编码器并生成每个切片的潜在表示来开始“学习应该向语音单元提供未标记音频样本的内容” 。
然而,潜在表示的集合并不代表离散的语音单元。这些表示必须以某种方式离散化。这是通过将特征编码器的输出传递到量化模块来完成的。
实际上,量化模块采用特征编码器生成的所有不同音频表示,并将它们简化为一组有限的语音单元。此时值得一问的是,wav2vec2 是否应该在单一语言或多种语言上进行预训练。
逻辑告诉我们,在设计可跨多种语言使用的 ASR 系统时,捕获代表多种语言的语音单元可能比捕获单一语言更有用。
为此,使用精选的多语言音频样本对 wav2vec2 进行预训练,使模型能够生成实际上捕获多种语言的语音单元。
wav2vec2 的研究人员注意到了这种方法背后的价值,因为“对于某些语言来说,甚至[音频]数据也是有限的。”他们最初的发现确定“某些单位仅用于特定语言,而其他单位则用于相似的语言,有时甚至用于不太相似的语言。”
语音单元清单是能够对口语音频样本进行编码的第一步。但是,我们真正想要实现的是训练 wav2vec2 这些单元如何相互关联。
换句话说,我们想要了解哪些语音单元可能出现在相同的上下文中。 wav2vec2 通过 Transformer 层处理此任务。
Transformer 本质上允许 wav2vec2 从统计意义上学习语音单元如何在各种音频示例中分布。这种理解有助于对模型在预训练后“看到”的音频样本进行编码。
最终,ASR 系统需要能够为它以前没有“见过”的给定音频序列生成文本转录。通过上述步骤进行预训练后,wav2vec2 为此目的进行了微调。这次,模型明确显示了音频样本及其相关转录的示例。
此时,模型能够利用在预训练期间学到的知识将音频样本编码为语音单元序列,并将这些语音单元序列映射到表示转录的词汇表中的各个字母(即字母“a”到“ z”(如果是英语)。
微调过程中的学习完成了 wav2vec2 模型的训练,并允许其预测微调过程中不属于其训练一部分的新音频示例的文本。
当然,wav2vec2 的底层机制比上面介绍的要复杂得多。不过,需要重申的是,本文的目的是让您对模型的工作原理和训练方式有一个简单的概念性理解。
wav2vec2 是一个非常强大的机器学习框架,用于构建 ASR 系统,其于 2021 年末推出的XLS-R变体接受了 128 种语言的训练,从而为跨多种语言设计 ASR 模型提供了一个改进的平台。
正如简介中提到的,有许多优秀的技术资源可以帮助您了解更多信息。特别是,您可能会发现Hugging Face提供的那些特别有用。