音频课程文档
Seq2Seq 架构
并获取增强的文档体验
开始使用
Seq2Seq 架构
前一节讨论的 CTC 模型仅使用了 transformer 架构的编码器部分。当我们添加解码器以创建编码器-解码器模型时,这被称为序列到序列模型,简称 seq2seq。该模型将一种数据序列映射到另一种数据序列。
对于仅编码器的 transformer 模型,编码器对输入序列中的每个元素进行预测。因此,输入和输出序列始终具有相同的长度。在 CTC 模型(如 Wav2Vec2)中,输入波形首先被下采样,但音频每 20 毫秒仍然有一个预测。
对于 seq2seq 模型,不存在这种一对一的对应关系,输入和输出序列可以具有不同的长度。这使得 seq2seq 模型适用于 NLP 任务,例如文本摘要或不同语言之间的翻译,也适用于音频任务,例如语音识别。
解码器的架构与编码器的架构非常相似,两者都使用类似的层,并将自注意力作为主要特征。但是,解码器执行的任务与编码器不同。为了了解其工作原理,让我们研究一下 seq2seq 模型如何进行自动语音识别。
自动语音识别
Whisper 的架构如下(图片由 OpenAI Whisper 博客提供)
这看起来应该很熟悉。左侧是 transformer 编码器。它以 log-mel 频谱图作为输入,并对该频谱图进行编码,以形成一个编码器隐藏状态序列,该序列从口语中提取重要特征。这个隐藏状态张量代表了整个输入序列,并有效地编码了输入语音的“含义”。
然后,编码器的输出使用一种称为交叉注意力的机制传递到右侧所示的 transformer 解码器中。这类似于自注意力,但关注的是编码器的输出。从这时起,不再需要编码器。
解码器以自回归方式预测文本标记序列,一次预测一个标记,从仅包含“开始”标记的初始序列开始(在 Whisper 的情况下为 SOT
)。在随后的每个时间步,先前的输出序列被反馈到解码器中,作为新的输入序列。通过这种方式,解码器一次发射一个新标记,稳步增长输出序列,直到它预测到“结束”标记或达到最大时间步数。
虽然解码器的架构与编码器的架构基本相同,但有两个主要区别
- 解码器具有交叉注意力机制,使其能够查看编码器对输入序列的表示
- 解码器的注意力是因果的 — 解码器不允许查看未来。
在这种设计中,解码器扮演着语言模型的角色,处理来自编码器的隐藏状态表示,并生成相应的文本转录。这是一种比 CTC 更强大的方法,即使 CTC 模型与外部语言模型相结合也是如此,因为 seq2seq 系统可以使用相同的训练数据和损失函数进行端到端训练,从而提供更大的灵活性和通常更优越的性能。
seq2seq ASR 模型的典型损失函数是交叉熵损失,因为模型的最后一层预测可能标记上的概率分布。这通常与诸如 集束搜索以生成最终序列 等技术相结合。语音识别的指标是 WER 或词错误率,它衡量将预测文本转换为目标文本所需的替换、插入和删除的数量 — 数量越少,得分越好。
文本到语音
您可能不会感到惊讶:用于 TTS 的 seq2seq 模型的工作原理与上述基本相同,但输入和输出互换了!transformer 编码器接收文本标记序列,并提取表示输入文本的隐藏状态序列。transformer 解码器将交叉注意力应用于编码器输出,并预测频谱图。
对于 ASR 模型,解码器使用仅包含特殊“开始”标记的序列启动。对于 TTS 模型,我们可以使用长度为 1 且全为零的频谱图开始解码,该频谱图充当“开始标记”。给定此初始频谱图以及编码器隐藏状态表示上的交叉注意力,解码器然后预测此频谱图的下一个时间切片,从而一次一个时间步地稳步增长频谱图。

但是解码器如何知道何时停止?在 SpeechT5 模型中,这通过使解码器预测第二个序列来处理。这包含当前时间步是最后一个时间步的概率。在推理时生成音频时,如果此概率超过某个阈值(例如 0.5),则解码器指示频谱图已完成,应结束生成循环。
解码完成后,我们得到了包含频谱图的输出序列,SpeechT5 使用所谓的 post-net,它由几个卷积层组成,用于细化频谱图。
在 TTS 模型的训练期间,目标也是频谱图,损失是 L1 或 MSE。在推理时,我们希望将输出频谱图转换为音频波形,以便我们可以实际收听它。为此,使用了一个外部模型,即 声码器。此声码器不是 seq2seq 架构的一部分,而是单独训练的。
使 TTS 困难的是它是一个一对多的映射。对于语音到文本,只有一个正确的输出文本与输入语音相对应,但对于文本到语音,输入文本可以映射到许多可能的语音。例如,不同的说话者可能会选择强调句子的不同部分。这使得 TTS 模型难以评估。因此,L1 或 MSE 损失值实际上意义不大 — 有多种方法可以将相同的文本表示为频谱图。这就是为什么 TTS 模型通常由人类听众评估,使用称为 MOS 或平均意见得分的指标。
结论
seq2seq 方法比仅编码器模型更强大。通过将输入序列的编码与输出序列的解码分离,音频和文本的对齐问题减少了。
然而,编码器-解码器模型也更慢,因为解码过程一次发生一步,而不是一次全部发生。序列越长,预测速度越慢。自回归模型也可能陷入重复或跳过单词。诸如集束搜索之类的技术可以帮助提高预测质量,但也会使解码速度更慢。
< > 在 GitHub 上更新