自定义关键词检出又称为开集关键词检出 (Open-VocabularyKeyword Spotting),是一种从连续语音中检测用户自定义的关键词的技术。与传统的固定关键词检出相比,它支持用户的个性化定制,并且不需要大量包含特定词的训练数据。一种常见的自定义唤醒方法是使用语音识别模型得到声学后验后进行后处理,这种方法在模型上没有利用用户预设的关键词信息,并且完全基于语音识别的准则进行训练,和关键词检出任务存在不匹配问题。
近期,西工大音频语音与语言处理研究组(ASLP@NPU)和理想汽车合作论文“U2-KWS: Unified Two-pass Open-Vocabulary Keyword Spotting with Keyword Bias”被语音领域旗舰会议IEEE ASRU 2023接收。该论文提出了基于关键词偏置的两阶段自定义关键词检出方案U2-KWS,该方案在两级验证阶段基于注意力机制分别进行关键词偏置(bias),在内部数据集和AISHELL-1数据集上的实验表明,在0.25次误唤醒/小时的情况下,唤醒率相比基线系统相对提升41%。本文将对该文章进行简要的解读。
论文题目:U2-KWS: Unified Two-pass Open-vocabulary Keyword Spotting with Keyword Bias
作者列表:张奥,周盼,黄凯勋,邹勇,刘明,谢磊
合作单位:理想汽车
论文网址:https://arxiv.org/abs/2312.09760
图1 发表论文截图
图2 扫码直接看论文
背景动机
关键词检测(KWS)旨在连续音频中检测预设的关键词,该技术广泛应用于智能设备的语音唤醒等任务中。随着深度学习的发展,基于神经网络直接预测关键词的端到端检测方法成为主流[1],虽然这些系统可以在预设的关键词上达到很高的准确率,但需要大量包含这些预设关键词的特定训练数据。此外,在训练后关键词无法更改,限制了用户的个性化需求,为了解决这些限制,近年来,允许用户自由设定关键词的自定义关键词检出逐渐成为研究热点。一种常见的基于文本的自定义关键词检出方法是采用ASR中的声学模型将语音转换为音素的后验概率,然后使用后处理方法计算关键词出现的置信度和阈值比较[2]。在实际应用中,基于单一声学模型的系统会产生大量的误唤醒,因此,出现了采用多级模型来降低误唤醒的方法,这类方法一般采用一个轻量化的流式声学模型作为一级模型检出关键词候选,将候选片段送入后续的非流式模块进行验证[3]。尽管这种方法能够压制误唤醒,但仍然基于ASR的准则进行训练,而模型并没有利用关键词的信息,因此导致了模型在检出任务上的优化并不充分。因此将关键词信息融入模型,使模型充分利用关键词的先验信息是非常必要的。于是,很多研究者开始使用注意力机制将关键词信息融入模型,但是这些融合方式都存在一定的局限性。
本文提出了统一的两阶段自定义关键词检出框架U2-KWS。与前面提到的多阶段KWS方案不同,我们的方法特别针对检出任务改进两阶段模型,而不是依赖于面向ASR任务训练的声学模型。首先,我们采用基于注意力机制的关键词偏置方法来使模型偏向于用户定义的关键词,与使用单一类型注意力的方法不同,我们在框架内的一级模型中应用声学表征为查询的注意力,在二级模型中应用关键词为查询的注意力,这使我们可以利用每种方法的优点,兼具流式能力和准确性。此外,我们重新设计了两阶段模型的训练和推理流程。在二级模型中我们输入关键词和关键词对应的声学表征,使其专注于关键词候选的验证任务。在训练过程中,我们还使用从抄本采样的方法制造正负样本模拟自定义唤醒词。我们在AISHELL-1数据集和内部车载语音数据集上评估了U2-KWS框架,效果显著超越基线。
提出的方案

模型结构

U2-KWS的整体架构如图1所示,包含四个部分:共享声学编码器、偏置模块、CTC解码器和注意力解码器。图中的绿色部分是两阶段模型中的流式CTC分支,它作为一级模型用于检测音频中的潜在关键词候选;蓝色部分是两阶段模型中的非流式分支,它作为二级模型通过注意力解码器验证检测到的关键词候选做进一步判断来降低误唤醒。黄色部分代表关键词编码器,它用于获取关键词的高维表征。共享声学编码器由多个Conformer [4]层组成,并使用动态chunk策略进行训练从而能够在推理时自由选择chunk大小控制延迟。关键词编码器由一层单向LSTM组成。关键词偏置模块包含一个用于关键词偏置的多头注意力和一个用于维度转换的线性层。CTC解码器由一个线性层和一个log-softmax层组成,用于输出音素后验概率。注意力解码器由Transformer层构成,直接使用关键词序列作为输入,并与关键词对应的声学表征进行交叉注意力计算。
图1 U2-KWS 模型结构

关键词偏置

注意力机制是一种被广泛使用的建模跨模态关系的方法。在本文中,我们将交叉注意力机制表示为:   这里,  表示查询向量,  表示键向量,  表示值向量。我们现在来讨论基于注意力的关键词偏置方法。
声学-查询注意力方法采用声学表征  作为查询,关键词表征  作为键和值,可以表示为:
生成的注意力输出  与声学表征  维度一致代表与语音相关的关键词表征可以和ha结合用于识别音素,这种方法是完全支持流式的,但是一帧语音包含的信息较少,这也限制了这种方法的上限。关键词-查询注意力方法则使用关键词表示  作为查询,声学表示  作为键和值。得到token的注意力输出  是建模了语音和关键词的相关性,可以直接用于预测关键词的概率,该过程可以描述为:
这种方法能够得到全局的相关性并且使用关键词作为查询也更契合关键词检出任务,但是这种方法并不适合流式推理。
为了结合两种注意力机制的优点,我们按照图2的方式将这两种方法整合到两阶段模型的两个阶段中。首先,我们将声学-查询注意力应用到一级模型中,我们使用关键词编码器得到自定义关键词的高维表征,然后,我们利用声学-查询注意力得到声学和关键词的融合表征后将注意力模块的输出与原始的声学表征拼接后投影回原始维度作为后续CTC解码器和注意力解码器的输入。而对于关键词-查询注意力,我们在修改后的transformer解码器中使用它来偏置二级模型。我们保留原始的Transformer解码器结构,并将其输入固定为关键词,而不是流式分支的解码结果,从而使解码器成为一个专门的关键词重打分模块。在这种情况下,self-attention模块起到关键词编码器的作用计算关键词的高维表征,cross-attention则建模计算关键词和声学表征的对齐关系。解码器的输出是token级后验概率,我们在后验矩阵上计算关键词路径的后验概率作为第二阶段模型的得分。这种方法更充分的建模了关键词和语音之间的相关性,但也更耗费资源,因此我们只在非流式分支中使用这种结构。
图2 关键词偏置结构图

训练推理

一级模型训练 我们首先训练流式分支即一级模型。该模型使用CTC Loss进行优化,由于我们引入了关键词偏置模块,因此在训练过程中关键词作为输入,于是我们使用采样的方法来模拟用户定义的关键词生成正负样本。具体来说,对于给定语音,我们随机选择其抄本中的一个连续词序列作为关键词从而生成正样本,而负样本方面,我们随机组合词典中没有出现在该语音抄本中的词作为负样本。为了加强模型对关键词信息的利用,加强关键词相关模块的梯度,我们在采样的关键词后面添加了一个<eok>标记,这类似于中热词增强语音识别常用的用于上下文偏置的标签增强方法。为了更清晰的描述这个过程,我们以“Call you Jarvis”为例。生成的正负样本如表1所示。为了简洁起见,我们使用单词作为示例来说明,实际上在训练和推理过程中我们会将单词转换为音素。
表1 关键词采样样例
二级模型训练 在训练一级模型之后,我们使用attention loss和CTC Loss共同优化整个两阶段模型。在训练阶段,我们采用与之前相同的方法生成正负样本。解码器训练的整体前向和损失函数计算与ASR任务中的注意力解码器相同,但我们对输入token和训练标签进行了修改。具体来说,我们将解码器的输入固定为“<sos>+关键词”。对于正样本,训练标签为“关键词+<eok>”,而对于负样本,训练标签为和输入序列等长的“<eos>”序列,如表1所示。通过这种方式,解码器在训练过程中专注于关键词序列的预测,并且对于<eos>和<eok>也让他具备了对关键词的分类能力。受两阶段ASR模型中使用的端到端切分方法[5]的启发,我们使用一级模型的时间戳信息裁剪编码器输出后送给二级模型。这样,解码器的交叉注意力只会关注包含关键词的声学表示。这样我们可以降低解码器任务的难度,让解码专注于建模关键词和声学表征的对齐。为了实现对编码器输出的裁剪,我们需要关键词的开始和结束时间。利用一级模型中的<eok>标记,可以将<eok>概率最高的帧作为结束帧,开始帧方面,我们使用类似于spike trigger CTC 的方法[6],将任何非blank token的后验概率超过预设阈值的帧看作spike,从结束帧开始计算spike的数量,当spike的数量超过关键词序列的长度时,将最后一个的spike视为开始帧。与基于CTC后验概率的对齐方法相比,该方法不需要额外的对齐信息,并且不管正负样本都可以输出稳定的长度。整个两阶段模型的联合损失函数可以表示为: 
其中  和  分别表示CTC Loss和注意力解码器的CE Loss。
推理流程 在初始化阶段,关键词编码器生成用户输入的定制关键词的高维表征即图1中的黄色部分。图1中的绿色部分对应一级模型,该部分按chunk持续处理音频流输出音素的后验概率,我们在后验概率上计算关键词路径的得分作为第一阶段的得分。如果得分超过一级模型的阈值,我们就会基于<eok>标记和CTC的spike裁剪声学表征。之后我们按照重打分的方式将关键词序列按token依次送入解码器计算关键词序列的得分,将该得分与二级模型的阈值进行比较。由于编码器是使用动态chunk训练,因此编码器可以在一级模型触发后使用full-chunk模式进行推理,更充分地利用上下文。具体来说,我们将第一阶段检测到的包含关键词候选的音频片段再次送回给编码器以full-chunk模式推理,以获得信息更丰富的声学表征,用于二级模型的关键词验证,在只引入了很小的延迟来进一步提高性能。
实验验证

实验数据与设置

内部数据 使用1000小时在混动汽车上采集的中文语音ASR语料库作为训练和校验。为了评估模型的唤醒率,我们在与训练集相同的环境中录制正样本测试集,该测试集包含30个由两到四个汉字组成不同的关键词,每个词包含200个样本,总共6000个正样本。为了评估误唤醒,我们使用一个相同环境下的音频集合作为负样本测试集,包含60小时真实驾驶场景下的聊天、指令和广播等。上述所有数据,包括训练集、校验集、正样本测试集和负样本测试集都是经过匿名化处理手工转录的。
AISHELL-1 我们还在公开中文普通话语音语料库AISHELL-1 上进行了实验。对于训练和校验,我们使用AISHELL-1的训练集和校验集。在测试方面我们采用和训练一致的关键词采样方法对AISHELL-1测试集进行采样,每条测试音频分别构造一个正样本和一个负样本,最终构造了一个由7176对正负样本组成的测试集。

实验设置 我们的模型使用了80维的log Mel滤波器组特征作为输入,帧长为25ms,帧移为10ms。为了提升鲁棒性我们还使用了谱增强(SpecAugment)。编码器前面使用两层卷积网络进行下采样,卷积核大小为3*3,步长为2。

我们使用的基线CTC模型由12层conformer组成,输入为128维,4个自注意头,256个线性单元。我们还额外搭建了一个大参数量的基线模型,该模型将输入维度扩展为256,线性单元数量扩展为2048,比基线模型大9倍。关键词偏置模块包括一个嵌入层和一个128维的LSTM层。偏置模块是一个具有128个隐藏状态和4个注意头的多头注意力层。对于解码器分支,我们使用2个具有512个线性单元的transformer层作为解码器。所有模型都是使用动态chunk进行训练,并以320ms为一个chunk进行推理。
输出单元包括210个上下文无关(CI)音素,一个<sos/eos>符号和一个<eok>符号。模型由多个组件组成,各自具有不同的参数大小。编码器的大小为3.75M,CTC解码器的大小为0.2M,注意力解码器的大小为0.6M,关键词编码器的大小为0.16M,偏置模块的大小为0.04 M。总体而言,该模型参数量为4.75M。值得注意的是,关键词编码器仅用于系统初始化,解码器仅在流式分支检测到关键词候选时激活。这使得两阶段模型相比基线模型仅多出0.04M的参数量始终处于激活状态的参数,使其适用于部署在边缘设备上。

实验结果

性能对比 图3和表2展示了本文提出模型和基线模型在内部测试集上的实验结果。基线系统由CTC训练的声学编码器组成。一级模型则是在基线的基础上增加关键词偏置,与基线模型相比,一级模型在每小时0.5个误唤的条件下,唤醒率提高了20%,这表明通过注意力机制进行关键词偏置是一种非常有效的自定义关键词检出方法,在此基础上增加关键词验证的解码器我们就得到了二级模型,二级模型可以进一步降低误唤醒,提升低误唤醒率下的唤醒表现。从图中可以看到因果解码器利用流式编码器的输出进行重打分,更好地利用上下文信息,在每小时0.5个误唤的条件下,唤醒率提高了6%。如果采用编码器的非流式表征进行重打分则可以在每小时0.25个误报的条件下提高10%的唤醒率。

图3 不同系统的ROC曲线

关键词长影响 如表2所示,我们根据关键词长度将测试集划分为三个子集分别测试子集的F1-score来探究词长对性能的影响。研究表明,长关键词往往会获得更好的整体性能,而较短的关键词更容易产生误唤。我们可以观察到,关键词越长,解码器分支带来的改进越大,这是因为对于短序列解码器充分利用上下文的结构优势变得较小而长序列可以更充分发挥解码器的区分能力。

表2 不同系统不同长度下的F1分数
裁剪策略对比 在内部测试集上,我们在因果解码器方案上对不同裁剪策略进行对比,探索了各种对声学表征裁剪方案对解码器重打分的影响。实验的结果如图4所示。没有裁剪的方法将搜索与关键词相关的声学表示的任务分配给解码器的交叉注意力,增加了解码器任务的难度。在第一阶段使用时间戳信息来裁剪编码器的输出,可以使解码器专注于关键词验证任务,因此裁剪方法比非裁剪方法更好。虽然基于CTC对齐的方法可以为干净的正样本获得准确的时间戳,但对于负样本和挑战性高的正样本,它会输出过长或过短的裁剪范围,导致解码器不稳定。相比之下,基于峰值的方法通过基于峰值数量而不是特定内容来得到时间戳,提供了更稳定的裁剪范围。尽管这种方法可能会剪裁多余的部分,但解码器的交叉注意力可以应对少量冗余信息。因此,基于峰值的方法产生了最好的结果。
图4 不同裁剪策略的ROC曲线

AISHELL-1实验结果 为了方便复现,我们在AISHELL-1上进行了额外实验,从图5可以看到我们的方案明显优于基线模型和9倍参数量的大参数量基线,取得了最好的效果。

图5 AISHELL-1上不同系统的ROC曲线
参考文献
[1] Guoguo Chen, Carolina Parada, and Georg Heigold, “Small-footprint keyword spotting using deep neural networks,” in Proc. ICASSP. IEEE, 2014, pp. 4087– 4091.
[2] Zuozhen Liu, Ta Li, and Pengyuan Zhang, “RNN-T based open-vocabulary keyword spotting in Mandarin with multi-level detection,” in Proc. ICASSP. IEEE, 2021, pp. 5649–5653.
[3] Zhanheng Yang, Sining Sun, Jin Li, Xiaoming Zhang, Xiong Wang, Long Ma, and Lei Xie, “CaTT-KWS: A multi-stage customized keyword spotting framework based on cascaded transducer-transformer,” in Proc. Interspeech. 2022, pp. 1681–1685, ISCA.
[4] Anmol Gulati, James Qin, Chung-Cheng Chiu, Niki Parmar, Yu Zhang, Jiahui Yu, Wei Han, Shibo Wang, Zhengdong Zhang, Yonghui Wu, and Ruoming Pang, “Conformer: Convolution-augmented transformer for speech recognition,” in Proc. Interspeech. 2020, pp. 5036–5040, ISCA.
[5] W Ronny Huang, Shuo-Yiin Chang, Tara N Sainath, Yanzhang He, David Rybach, Robert David, Rohit Prabhavalkar, Cyril Allauzen, Cal Peyser, and Trevor D Strohman, “E2E segmentation in a two-pass cascaded encoder asr model,” in Proc. ICASSP. 2023, pp. 1–5, IEEE.
[6] Zhengkun Tian, Jiangyan Yi, Jianhua Tao, Ye Bai, Shuai Zhang, and Zhengqi Wen, “Spike-triggered non-autoregressive transformer for end-to-end speech recognition,” in Proc. Interspeech, 2020, pp. 5026–5030.
“阅读原文”了解课程详细内容及报名通道
永久福利 直投简历
简历投递:[email protected]
扫码关注我们
助力AI语音开发者的社区
继续阅读
阅读原文