使用扭曲语言模型修正语音识别错误
近年来,语言相关的机器学习应用取得了巨大进展,这部分归功于诸如BERT之类的掩码语言模型:在训练过程中,句子被输入模型时某些单词要么被掩码要么被随机替换,模型学习输出完整且修正后的句子。
掩码语言模型的成功催生了扭曲语言模型的开发,它们在可能的修改选项中增加了插入和删除操作。扭曲语言模型专门为解决自动语音识别中常见的错误类型而设计,因此可以作为ASR模型的基础。
在本次国际语音通信大会上发表的论文中,我们描述了如何将扭曲语言模型用于修正ASR输出——或用于修正训练ASR模型所用的人工语音转录文本。
这一新用途要求我们修改扭曲语言模型的设计,使其不仅能输出文本字符串,还能对输入字符串中的错误进行分类。根据这些信息,即使修正后文本的词数与输入不同,我们也能生成修正文本。
由于ASR模型输出的不是输入语音的单一转录结果,而是假设列表的排名,我们还尝试使用多个假设作为纠错模型的输入。对于人工转录文本,我们通过将转录语音输入ASR来生成假设。
我们发现多假设方法在修正人工转录错误方面具有特殊优势。该方法能将词错误率降低约11%。对于ASR输出,相同模型能将词错误率降低近6%。
扭曲语言模型
传统扭曲语言模型的架构中,每个输出标记恰好对应一个输入标记。扭曲语言模型为其每个输入词输出一个标记(可以是单词或特殊符号,如检测到虚假插入时的空白)。但这意味着它无法完全修正词语删除错误:必须在输出当前词位的删除词或输入词之间进行选择。
我们调整了扭曲语言模型的基本架构,使其对每个输入标记同时预测输出标记和扭曲操作。我们的模型仍为每个输入标记输出单个标记,但通过标记和扭曲操作的组合,简单的修正算法可以推断出原始输入。
例如,下图展示了我们的模型处理输入句子"I saying that table I [mask] apples place oranges.“的过程。中间行显示模型的输出:首先是操作名称,其次是输出标记。当模型将输入"saying"替换为输出"was"并将操作标记为"drop"时,修正算法推断句子开头应为"I was saying"而非"I saying”。
该图展示了模型处理训练扭曲语言模型所用的五种操作示例:保持(无修改)、删除、插入、掩码和随机替换。
掩码(和扭曲)语言模型的巨大优势在于它们是无监督的:掩码(和扭曲)操作可以自动执行,从而实现无限量的训练数据。我们的模型同样是无监督的:我们只需修改扭曲算法,使其在应用操作时同时用操作名称标记输出。
多假设方法
在英语文本语料库上训练我们的模型后,我们在另一组口语表达的ASR模型输出上对其进行了微调。对于每个表达,我们保留前五个ASR假设。
算法自动对齐假设的标记并标准化其长度,在必要时添加空白标记。我们将第二到第五个假设视为顶级假设的扭曲版本,自动计算将顶级假设转换为替代假设所需的最小扭曲操作数,并相应标记假设标记。
对于每个输入,我们的模型结合所有五个假设生成单个向量表示(嵌入),模型的解码器使用该表示生成输出字符串。
在训练过程中,模型为每个假设输出单独的预测集。这确保操作预测器和标记预测器都能得到微调,因为即使标记字符串相同,每个假设的操作分类也会不同。但在运行时,我们只保留与排名最高的ASR假设对应的输出。
未在ASR假设上微调时,我们的模型将ASR模型输出的词错误率降低了5%。但略微增加了语音人工转录的词错误率。这可能是因为人工转录的语音即使有错误,仍然在句法和语义上连贯,因此错误难以识别。然而,添加替代ASR假设使修正模型能够利用语音信号本身的额外信息,从而显著降低词错误率。