Seq2Seq 架构
在上一节中讨论的 CTC 模型仅使用了 Transformer 架构的编码器部分。当我们也添加解码器以创建编码器-解码器模型时,这被称为**序列到序列**模型或简称 seq2seq。该模型将一种类型的数据序列映射到另一种类型的数据序列。
对于仅编码器的 Transformer 模型,编码器对输入序列中的每个元素进行预测。因此,输入和输出序列的长度始终相同。在 CTC 模型(例如 Wav2Vec2)中,输入波形首先被下采样,但每 20 毫秒的音频仍然有一个预测。
使用 seq2seq 模型,没有这种一对一的对应关系,并且输入和输出序列可以具有不同的长度。这使得 seq2seq 模型适用于自然语言处理任务(例如文本摘要或不同语言之间的翻译),也适用于语音识别等音频任务。
解码器的架构与编码器的架构非常相似,两者都使用类似的层,其中自注意力是主要特征。但是,解码器执行的任务与编码器不同。为了了解它是如何工作的,让我们检查一下 seq2seq 模型如何进行自动语音识别。
自动语音识别
**Whisper** 的架构如下(图片由OpenAI Whisper 博客提供)
这看起来应该很熟悉。左侧是**Transformer 编码器**。它以对数梅尔谱图作为输入,并对该谱图进行编码以形成一系列编码器隐藏状态,这些状态从口语语音中提取重要特征。这个隐藏状态张量代表了整个输入序列,并有效地编码了输入语音的“含义”。
然后,编码器的输出通过称为**交叉注意力**的机制传递到右侧所示的**Transformer 解码器**。这类似于自注意力,但关注编码器输出。从这一点开始,不再需要编码器。
解码器以**自回归**的方式预测一系列文本标记,一次一个标记,从仅包含“开始”标记的初始序列开始(在 Whisper 的情况下为SOT
)。在每个后续时间步长,将先前的输出序列反馈到解码器作为新的输入序列。通过这种方式,解码器一次发出一个新标记,稳步增长输出序列,直到预测“结束”标记或达到最大时间步长。
虽然解码器的架构与编码器的架构基本相同,但有两个主要区别
- 解码器具有交叉注意力机制,允许它查看编码器对输入序列的表示
- 解码器的注意力是因果的——解码器不允许查看未来。
在此设计中,解码器充当**语言模型**的角色,处理来自编码器的隐藏状态表示并生成相应的文本转录。即使 CTC 模型与外部语言模型相结合,这仍然比 CTC 更强大的方法,因为 seq2seq 系统可以使用相同的训练数据和损失函数进行端到端训练,从而提供更大的灵活性并通常具有更好的性能。
seq2seq ASR 模型的典型损失函数是交叉熵损失,因为模型的最后一层预测了可能的标记上的概率分布。这通常与诸如束搜索生成最终序列之类的技术相结合。语音识别的指标是 WER 或单词错误率,它衡量将预测文本转换为目标文本(即正确的文本)需要多少替换、插入和删除——越少,分数越好。
文本到语音
这可能并不奇怪:用于 TTS 的 seq2seq 模型的工作原理与上面描述的基本上相同,但输入和输出交换了!Transformer 编码器接收一系列文本标记,并提取一系列隐藏状态,这些状态表示输入文本。Transformer 解码器将交叉注意力应用于编码器输出并预测谱图。
在 ASR 模型中,解码器使用仅包含特殊“开始”标记的序列启动。对于 TTS 模型,我们可以使用长度为 1 且全为零的谱图作为“开始标记”来启动解码。给定此初始谱图以及对编码器隐藏状态表示的交叉注意力,解码器然后预测此谱图的下一个时间片,一次一个时间片地稳步增长谱图。
但是解码器如何知道何时停止呢?在**SpeechT5** 模型中,这是通过使解码器预测第二个序列来处理的。此序列包含当前时间步长是最后一个时间步长的概率。在推理时生成音频时,如果此概率超过某个阈值(例如 0.5),则解码器表示谱图已完成,并且生成循环应结束。
解码完成后,我们得到了一个包含谱图的输出序列,SpeechT5 使用所谓的**后网络**(由几个卷积层组成)来细化谱图。
在 TTS 模型的训练过程中,目标也是谱图,损失为 L1 或 MSE。在推理时,我们希望将输出谱图转换为音频波形,以便我们可以实际听到它。为此,使用外部模型,即**声码器**。此声码器不是 seq2seq 架构的一部分,而是单独训练的。
TTS 难以实现的原因在于它是一种多对一的映射关系。对于语音识别,只有一个正确的输出文本与输入语音相对应,但对于文本转语音,输入文本可以映射到许多可能的语音声音。例如,不同的说话者可能会选择强调句子的不同部分。这使得 TTS 模型难以评估。正因为如此,L1 或 MSE 损失值实际上并没有多大意义——有多种方法可以将相同的文本表示为频谱图。这就是为什么 TTS 模型通常由人类听众进行评估,并使用称为 MOS 或平均意见得分(mean opinion score)的指标的原因。
结论
Seq2seq 方法比仅编码器模型更强大。通过将输入序列的编码与输出序列的解码分离,音频和文本的对齐问题就不那么突出了。
然而,编码器-解码器模型也更慢,因为解码过程一次只进行一步,而不是一次完成所有步骤。序列越长,预测速度越慢。自回归模型也可能陷入重复或跳过单词。诸如集束搜索(beam search)之类的技术可以帮助提高预测质量,但也使解码速度进一步降低。