Utterance Detection in Amazon

最近粗略的接触了些话音检测和噪声过滤的工作,有参考到Amazon的相关论文,在此分享下论文的主要方法和贡献。本次分享的两篇论文方法套路基本一样,只是分别使用于不同的场景,一篇是用在端点检测(END-OF-UTTERANCE DETECTION)上,用来判断用户是否已经结束语音指令。另一篇是应用在Device-directed Utterance Detection上,应该主要是用在echo音箱等vpa上,用来过滤一些误触发,用户正对着设备下发的指令认为是正例,而背景噪音,细碎的嬉笑打闹聊天的声音认为是负例,不应该触发, 所以叫Device-directed Utterance Detection。

Device-directed Utterance Detection

方法及贡献

模型可简单概括为三种特征+一个分类器,作者用两个LSTM分别对声学和识别结果分别做embedding,再加上decoder输出的一些特征,最后将三个特征结合起来作为最后分类器的输入。系统结构如下右图所示。这种做法还是比较直观的,三部分特征刚好对应语音识别系统三大部件的输出,对 1-best hypotheses的处理基本可以理解为对语言模型的embedding。最后是一个二分类器,判断本次query是否是Device-directed话音。下左图是正负例的一些样例。

模型与参数

Acoustic Embedding

Acoustic Embedding 用LSTM做帧级别的device-directed target的预测,输入是每一帧log filter-bank energies (LFBEs),以25ms帧长和10ms帧移分帧,每一帧的label都和整条query的label一样,最后使用cross-entropy Loss,SGD训练。做softmax之前的两维向量拿出来,作为Acoustic Embedding。

ASR feature

ASR的输出特征论文里讲的有18维,但未全部给出,只介绍里其中的三维,其一是帧前向概率的平均值,先计算每一帧的前向概率的熵,所有帧的均值即为所得,熵越大说明前向的概率分布差不多,1-best的confidence就越低。 其二是1-best的viterbi cost。 其三是计算lattice节点出边的平均值。

Character Embedding

Character Embedding和Acoustic Embedding的思路基本一样,也是使用LSTM。只不过输入是1-best输出character级别的embedding,每个character的embedding GloVE来训练。也是取最后一个character的输出作为这部分的Embedding(2维)。

Classification Layer

最后一个分类层使用的就是简单的两层前馈神经网络,在另一篇论文里有讲,隐藏层节点为100。

实验结果

论文的实验数据是在他们自己产品的数据集,并未公开,下面是一些实验结果。

  • 参数选择
    作者对LSTM的层数和节点数以及character embedding的维数做了对比实验,实验结果如下图。
  • 性能比较
    作者还对比了三种单独特征及融合特征对分类的影响,实验显示单单ASR decoder 特征效果最好,多特征的话效果更加。模型用Detection error tradeoff (DET)评价,跟ROC曲线差不多的意思,只是横纵轴定义不一样。

我们参考了此篇论文的思路,目前只使用了ASR Decoder的特征,不过由于decoder实现不一样,采用的特征和维度都不一样,效果也还行,这是可以解释的,ASR Decoder输出的特征是声学模型和语言模型这两个大模型生成的,区分度应该不错。

End-of-Utterance detection

End-of-Utterance检测也叫enpoint检测,主要是判断用户是否说完话了,对端到端的速度和用户体验至关重要,既不能提前(会打断用户说话),也不能延后(端到端速度慢,体验差)。简单说endpoint检测的目标就是保持准确率高的前提下尽可能快的检测到用户说完话的意图,这当然需要trade-off,一个灵敏的检测器有可能会截断用户的query导致准确率下降。 Kaldi里面的通常做法是计算解码时lattice里面的末尾silence帧的数量,达到一定长度并且满足对应的cost阈值就认为是endpoint,这种方法纯从解码器的角度出发,利用声学模型的输出,没有对声学特征做另外的建模。工业实践上为了效果和计算资源,一般还会在语音识别前面加一个voice-activity-detection (VAD)检测,本文也是这个思路。 这篇论文发表的时间要早于上面那篇,而且要解决的问题也比上篇要复杂。

方法及贡献

本文模型结构基本和上文是一样的(上文借鉴本文), 特征也是三个部分组成Acoustic Eembedding和 1-best hypotheses Eembedding和ASR输出的feature,最后加个二分类器,不过上文主要论证比较ASR feature的有效性,此本则偏重与Acoustic部分。另外,这篇论文是在远场环境上做的,一般来说远场环境的困难要大得多。

不同的地方主要有以下几点:

  • Acoustic 部分做的是多任务学习,将声学feature同时用于训练VAD和endpoint检测,而且与上文不同,label是帧级别的,所以训练时需要对齐特征和label,如上右图所示。取VAD部分取输出给Inference时计算阈值,endpoint部分则取pre-softmax的特征作为最后二分类器的输入。
  • 1-best hypotheses embedding部分使用的是word embedding,由于输出和帧无法一一对应,如果ASR输出的partial没有变化,则会一直延用最新的word embedding。
  • ASR feature 方面只介绍了个pause duration,这个应该跟kaidi检测endpoint类似,计算lattice(或其他类似解码网格)的末尾静音帧数。

Inference Pipeline

上面介绍Acoustic部分分为两部分vad + endpoint,在inference是先用vad的输出判断静音的持续时间,通过阈值Tmin,Tmax来判断是否启用endpoint检测(二分类器的输出)。在下面两种情况下认为检测到endpoint,当vad给出的静音阈值大于Tmin并且最终二分类器输出为endpoint,或者vad给出的静音阈值超过Tmax。 endpoint检测是一个比较困难的题目,实际工业应用基本不可能单模型就解决得很好,一般都使用多模型融合。

实验结果

  • 特征性能比较
    实验部分照例比较了三种特征的性能和融合后的性能,Acoustic 单特征最后,融合能带来性能的提升。
  • 混合语言的效果
    作者还进行了混合语言的效果,说明本模型跟语言并不太相关,即模型架构不需要改变,换批训练数据,在其他语言上也能达到相同的效果。这当然是最理想的结果,相关实验结果如下。

参考文献

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

小小鼓励一下~

支付宝
微信