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

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