Google论文抢先看:说话人转换检测的字符级损失函数和评价指标

本文介绍谷歌团队发表于ICASSP 2023的一篇最新论文。该论文致力于提升基于Transformer-Transducer(T-T)的说话人转换检测模型,并提出了一种全新的基于字符的(token-based)训练方式,以及一种全新的、更加符合应用场景的评价指标。在不增加模型参数的情况下,这种新型训练方式能大幅提升说话人转换检测的模型性能。

论文链接:https://arxiv.org/pdf/2211.06482.pdf

作者:Guanlong Zhao, Quan Wang, Han Lu, Yiling Huang, Ignacio Lopez Moreno

说话人转换检测

说话人转换检测,英文为Speaker Change Detection (SCD)或者Speaker Turn Detection,所解决的是这样一个问题:在语音信号的特定时刻,其前后的说话人身份是否发生了变化。

该问题与声纹识别(即Speaker Recognition)以及声纹分割聚类问题(即Speaker Diarization)密切相关,但又有所区别。很多早期的说话人转换检测方法,就是简单地提取特定时刻左右两侧的声纹信息,并进行相似度量与阈值判别,从而判断该时刻是否发生了说话人转换。而很多声纹分割聚类的系统,也将说话人转换检测作为其中的一个关键步骤,用于对输入信号进行分割。而完成分割之后,就能对分割得到的语音片段进行声纹特征提取以及聚类。

近些年来,更多说话人转换检测方面的研究从传统方法转向了端到端的方法,即直接利用RNN-T模型或者T-T模型来检测说话人转换事件。这一类方法将说话人转换检测问题作为语音识别问题的一个变种来看待,直接在识别结果中加入特殊字符<st>来表示说话人转换事件。

例如对于同一段音频,语音识别模型的输出是:“hello how are you I am good”,该输出不包含说话人信息。

而基于RNN-T或者T-T模型的说话人转换检测的输出则是:“hello how are you <st> I am good <st>”,其中的特殊字符<st>表示该语音的前半部分“hello how are you”和后半部分“I am good”分别由不同说话人所说。

图1:谷歌的Turn-to-Diarize声纹分割聚类系统将说话人转换检测作为其中的一个重要组成部分

字符级损失函数

用于语音识别的标准RNN-T或者T-T模型,所使用的损失函数可以表示为- log P (Y | X),这里的X表示输入音频的特征序列,而Y表示目标文本的字符序列。

可以看到,在该损失函数中,我们对于所有的输出字符是一视同仁的。也就是说,在模型的训练过程中,任何一个字符导致的错误,其对于损失函数的影响是等价的。这一点对于标准的语音识别任务来说是没有任何问题的。但是对于说话人转换检测的问题来说,这样的设计则并不理想。

这是因为,绝大部分具备文本标注的语音数据,都并不包含说话人转换事件的信息。只有极少部分训练数据包含特殊字符<st>。因此,如果损失函数不对<st>进行特殊处理,训练出来的模型应用于说话人转换检测的准确率会比较低。

为此,论文提出了一种全新的字符级损失函数,该损失函数能够以更大的权重来处理特殊字符<st>所对应的错误。

该方法利用了语音识别领域中基于编辑距离的最小贝叶斯风险(Edit-distance based Minimum Bayes Risk,即EMBR)训练方式。EMBR在计算目标文本和输出文本的编辑距离的时候,考虑了字符序列的三种编辑方式,即插入(insert),删除(delete),和替换(substitute)。任何一个字符的任何一种编辑方式,都会使编辑距离加1。

在本论文中,我们对于字符<st>的编辑代价进行了特殊处理。首先,我们不允许<st>字符和其他字符互相替换,也就是将这种编辑方式的代价设为无穷大。其次,<st>字符的插入和删除所对应的编辑代价,我们将其设为k>1。而其余字符的所有编辑方式,其编辑代价依然为1。

依据以上编辑距离,我们可以找到目标文本和输出文本之间编辑距离最小的对齐方式,并且计算出在该对齐方式下,字符<st>的错误接受次数FA,错误拒绝次数FR,以及其他字符的所有错误次数W。最后,在计算EMBR损失函数的时候,我们可以对FA、FR和W使用不同的权重。例如本论文中,W的权重为1,FA和FR的权重为10,而传统损失函数- log P (Y | X)的权重为0.03。通过这样的权重设置,我们可以使模型在训练过程中,更加专注于提升说话人检测的准确性。

一种全新的评价指标

对于说话人转换检测问题,传统的评价指标大部分基于说话人转换检测事件的具体预测时间点。但这一类评价指标的问题在于,它们对于预测时间点都非常的敏感。而人工标注的这些具体的时间点,其精度通常也比较有限,因此很容易因为较小的误差而将正确的预测判定为错误的预测。

参考前面的例子“hello how are you <st> I am good <st>”。这里的第一个说话人转换检测事件<st>,只要其相对于单词you和单词I的相对位置不变,对于实际应用来说,都可以认为是一个正确的预测。但是在语速较慢的情况下,<st>的实际预测时间可能在数秒的范围内波动,在传统的评价指标下非常容易被判定为错误预测。

因此,论文提出了一种基于区间(interval-based)的评价指标。在前面的例子中,整段语音可以被分为三个区间:“hello how are you”所对应的第一区间;两段语音之间的第二区间;以及“I am good”所对应的第三区间。在这种新的评价指标下,任何出现在第一区间或者第三区间的<st>预测,都被视为错误接受(FA);如果第二区间没有出现<st>预测,则被视为错误拒绝(FR);任何出现在第二区间的<st>预测,无论其具体预测时间是多少,都被认为是正确的预测。

这种评价指标也能很好地处理重叠的语音。假如“hello how are you”的最后若干单词,与“I am good”的前面几个单词在时间上出现了重叠,那么这部分重叠的内容就构成了说话人转换所对应的区间。任何出现在该区间的<st>预测,无论其具体预测时间是多少,都可以被认为是正确的预测。

在基于区间的评价体系下,我们便能计算相应的精确度(precision)和召回率(recall),以及相应的F1分数。

图2:基于区间的说话人转换检测评价指标

实验结果

论文在多个测试数据集上对比了三种说话人转换检测方法的表现,包括:使用标准RNN-T损失函数的Baseline方法;使用基于编辑距离的最小贝叶斯风险的标准EMBR方法;以及本论文所介绍的字符级损失函数SCD Loss方法。测试数据集包含了AMI、CallHome、DIHARD1、Fisher、ICSI等公开数据集,同时也包含了Inbound和Outbound两个内部的电话呼叫中心数据集。这些测试数据集覆盖了会议和电话语音这两个比较常见的多说话人语音应用场景。

在所有的测试数据集上,基于区间的F1分数都表示,SCD Loss方法恒定的要显著优于Baseline和EMBR这两种方法。而传统的、基于具体时间点的F1分数(采用开源软件pyannote.metrics实现),则在不同的测试数据集上,很难区分三种方法的优劣。

这样的结果非常符合我们的预期,并能够得出以下结论:(1)传统的、基于具体时间点的说话人转换检测评价指标,由于其对于具体时间点过于敏感,很难有效地对说话人转换检测算法进行评价;而基于区间的评价指标,则能够对不同方法给出更为一致性的评价。(2)论文所提出的字符级损失函数能够有效地提升说话人转换检测的评价指标。与标准的RNN-T损失函数相比,F1分数提升了5.8%的绝对数值;与标准的EMBR损失函数相比,F1分数提升了2.4%的绝对数值。

图3:不同损失函数在各个测试数据集上的两类评价指标

猜你喜欢

转载自blog.csdn.net/weixin_48827824/article/details/129951614