Semantic VAD: Low-Latency VAD for Speech Interaction

Abstract

传统的VAD算法通常需要等待连续的尾沉默达到预设的最大持续时间后才进行分割,导致延迟较大,影响用户体验。

picture.image

在本文中,我们提出了一种新的语义VAD低延迟分割。与现有方法不同的是,在语义VAD中增加了 帧级标点符号预测 任务,除了常用的 语音presence和absence 之外,还将 人工端点 纳入分类范畴。为了增强模型的语义信息,我们还加入了与 自动语音识别(ASR)相关的语义损失

在内部数据集上的评估表明,与传统的VAD方法相比,该方法可以将平均延迟降低53.3%,而后端ASR中的字符错误率没有明显下降。

Introduction

首先,由于传统的VAD模型只区分语音或沉默,而忽略了沉默的每一部分是否为完整的语义断点,因此必须等待长时间的连续尾沉默(例如700ms)才能进行尾分割判断,以避免错误地分割整个句子。

因此, 如果在沉默段中包含语义断点,则可以通过等待相对较短的尾部沉默来简单地做出尾部分割决策

为了获得语义断点信息,我们考虑在base VAD模型中 增加帧级标点符号预测任务 。如果检测到 结束标点 符号(例如,句号,问号),表明存在完整的语义断点,则等待短尾沉默(例如, 300ms )是合理的。在检测 非结束标点符号 (如逗号)的情况下,分割所需的尾沉默时间需要比结束标点符号的尾沉默时间稍长(如 400ms )。只有当 标点符号无法预测时 ,才会使用传统VAD预设的最大尾沉默值(例如 700ms )来确定分割点。

asr corpus -> align -> phones -> 0: \<sp> \<sil>, 1: other

asr corpus -> punctuation -> align -> phones+puncs -> 0:(\<sp> \<sil>) , 2: (. ? !), 1: (other)

推理截断结合帧级别 punc 预测调整 vad 尾部时延。

其次,为了进一步提高早期判断的比例,减少尾部分割延迟,我们增加了对 人工定义端点的预测 。具体来说,在传统的 语音存在语音缺失 类别的基础上,引入了 端点标签 ,形成了一个 三类分类任务端点标签由标点符号和沉默持续时间的组合生成 ,类似于利用标点符号来确定尾部分割的方式。不同之处在于, 结合标点符号确定尾部分割是在推理阶段实现的,而结合标点符号生成端点标签则人为地改变了VAD的训练目标

训练阶段引入人工定义的尾点(punc)作为vad训练目标。

最后,由于标点和端点的预测要求模型的语义强,我们引入语义损失作为辅助任务来增强语义建模能力。需要注意的是,与现有的VAD和ASR联合多任务训练方法不同的是,VAD与ASR级联,将语音作为一个整体进行处理,导致参数量相对较大,而所提出的语义损失仅用于辅助模型训练,并不存在于推理时。这样可以保证我们的语义VAD模型的独立性和轻量级,这意味着我们提出的VAD模型可以单独应用,也可以灵活地与其他下游任务结合使用。

Semantic VAD

picture.image

Speech encoder

为了便于后续迁移到流式平台,我们使用上下文块conformer作为我们的语音编码器,这是一种为流式ASR设计的块处理conformer结构。在语音编码器中,引入上下文嵌入向量在块之间传递上下文信息。所述声学特征通过所述语音编码器以生成帧级语音表示。

Punctuation prediction

在传统的VAD中,没有对语义断点的决定,因此在执行尾部分割之前需要等待长尾沉默。为了减少尾部分割延迟,通过标点符号预测来获得语义分割可能是有帮助的。这可以通过将语音编码器获得的帧级语音表示直接合并到分类器中以获得帧级标点符号预测来实现。在这项工作中,我们考虑了三种类型的标点:

picture.image

其中结束标点表示完整的语义断点(例如,句号,问号),非结束标点表示不完整的语义断点(例如,逗号)。

VAD with endpoint

传统上,每个语音帧只是简单地标记为语音或非语音。为了进一步提高预先判断的尾部分割点的比例,减少尾部分割延迟,引入人为定义的端点标签作为第三类,产生了三类分类问题:

picture.image

其中端点是训练集中新定义的标签。在得到有语音和无语音标签的基础上,如果一个句子以 E-punc结束,则在连续的

静音后的一帧中,直到下一个句子开始时,设置一个端点; 在 NE-Punc的情况下,尾部沉默的持续时间被设置为

。与标点符号预测类似,语音编码器的输出也要经过一个分类层才能得到帧级的VAD决策。

Semantic task

由于在所考虑的VAD中,无论是标点符号分类还是人为指定端点帧的预测,语音编码器获得的表示都应该包含强语义信息。因此,有必要引入语义损失作为辅助任务来保留语音表示中的语义信息。在这项工作中,我们使用ASR损失作为辅助语义损失。具体来说,将语音编码器与解码器连接,对ASR任务进行预训练,然后对标点符号预测、VAD和ASR进行联合训练。联合训练的整体损失函数可以表示为

picture.image

请注意,与以前的多任务工作不同,ASR在这里只是作为辅助任务来丰富训练过程中的语义信息,而不会出现在推理过程中。这保证了前端VAD模块在推理阶段的轻量级和独立性.

Inference

对于传统的VAD方法,在尾沉默连续达到

后,为其指定一个断点,并在尾沉默开始时进行分割。这将导致较高的尾部分割延迟,从而导致令人讨厌的用户体验。为了避免这种情况,我们考虑四种情况执行尾部分割:

picture.image

  • An endpoint is detected in the continuous tail silence;
  • An E-punc is detected and the continuous tail silence reaches

;

  • A NE-punc is detected and the continuous tail silence reaches

;

  • The continuous tail silence reaches

.

Experimental Setup

Dataset

picture.image

在这项工作中,我们使用了325小时的内部普通话语音数据,这些数据来自不同的网站,如YouTube,作为训练和验证集。我们使用内部的普通话长语音测试集进行最终评估,包括会议(Test1,持续3.3小时),录音笔(Test2,持续1小时)和网络直播(Test3,持续2.1小时)。 通过强制对齐来获得每帧的标点符号标签 。表1给出了训练集中各种标签的分布情况。

Evaluation metrics

Latency:由于本工作的重点是减少语音交互过程中VAD分割的尾部延迟,因此将延迟时间作为评价指标之一。具体来说,延迟是通过VAD分割期间的平均连续尾沉默时间来测量的。由于实验中使用的是相同的VAD模型,为方便起见,忽略了模型本身的延迟。

Character error rate (CER):由于后端的下游任务最能体现VAD分割的性能,因此在本工作中,我们选择ASR作为后端的下游任务。经过VAD分割后,将分割后的短音频送入预训练的ASR系统,得到相应的转录。我们使用预训练的Universal ASR作为后端ASR模型。由于汉语语料库既用于训练又用于评估,因此我们利用CER作为ASR的绩效衡量标准。

Detection cost function (DCF):DCF是NIST声活动检测(SAD)的公共评估指标,用于测量本工作中信号级VAD的性能。在VAD分割中,可能出现四种类型的决策:真阴性(TN)、真阳性(TP)、假阴性(FN)和假阳性(FP)。因此,DCF可以计算为:

picture.image

公式中,

分别为漏报率和误报率。(6)中的权重是经验选择的。请注意,较小的DCF意味着更准确的VAD分割。

Model configuration

在这项工作中,我们使用80维对数滤波器组(Fbank)作为输入特征。窗口大小为25毫秒,窗口位移为10毫秒。

根据经验和开发集的调优结果,

设置为300ms,

设置为400ms,

设置为700ms。

picture.image

picture.image

TRANSFORMER ASR WITH CONTEXTUAL BLOCK PROCESSING

picture.image

对于辅助ASR任务,使用4层变压器解码器和CTC混合进行训练。解码器配置与语音编码器保持相同,CTC损失权重为0.3。采用具有4头多头注意(MHA)的6层上下文块共形器作为语音编码器。MHA和前馈网络(FFN)的维度分别设置为256和512,卷积核大小设置为15,块大小设置为64(对应640 ms),跳大小设置为16(即160 ms)。在每个块中,前160毫秒是未来的信息。

对于辅助ASR任务,使用4层transformer解码器和CTC混合进行训练。解码器配置与语音编码器保持相同,CTC损失权重为0.3。

语音编码器的参数量在5.98M左右。

我们首先预训练50个epoch的ASR任务,然后联合训练50个epoch的标点预测、ASR和VAD任务,其中µ和λ都设置为0.2。

Experimental Results

首先,我们在表2中展示了传统VAD方法和语义VAD方法在尾部分割延迟、后端ASR和前端分割三个测试集上的性能比较。为了公平比较,在传统的VAD中使用了与语义VAD相同的语音编码器结构,但排除了标点符号预测。即传统的VAD方法只进行二值分类来区分语音和沉默,在训练时没有考虑语义损失.

picture.image

可以看出,在传统的VAD中,随着预设的尾部分割延迟从700 ms降低到330 ms,后端ASR性能变差(平均CER从16.75%增加到17.94%)。

提出的语义VAD方法可以显著降低平均尾部分割延迟(从700 ms到326.92 ms),而不会严重牺牲后端ASR性能(平均CER从16.75%提高到16.88%)。

更重要的是,该方法由于更多的语义分割,可以将DCF的前端分割性能从10.78%提高到9.60%。

值得一提的是,当将传统VAD的尾部分割延迟设置为330 ms时,其与所提出的语义VAD相当,而后端ASR的相应性能远不如语义VAD。

实验结果表明,该方法不仅可以减少延迟,提高分割精度,而且可以保持后端ASR性能。

picture.image

表3给出了不同策略下所提出的语义VAD在三个测试集上尾部分割延迟、后端ASR和前端分割的比较.

很明显,在训练中添加语义丢失作为辅助任务可以在所有三个指标上获得更好的性能(例如,延迟从362.95ms到344.63ms, CER从16.92%到16.75%,DCF从平均10.91%到9.70%)。 这说明在语义损失的辅助下,通过标点和端点进行分词的比例变得更大,分词句子的语义更加完整,这为后端ASR模块提供了信息 。在 推理中加入端点判断可以进一步降低尾部分割延迟和DCF,但会略微降低后端ASR性能。这是因为端点是一种人为定义的标签,这在某种程度上增加了推理中的误差 .

picture.image

最后,我们对所提出的语义VAD进行了可视化分析。在图4中,我们比较了Test1音频片段的传统VAD和语义VAD的尾部判断点。向上和向下的词干分别表示传统和本文提出的VAD方法的判断点, 红色、蓝色和绿色词干分别表示Epunc、NE-punc和Endpoint的判断点 。可见, 语义VAD的判断点都在传统VAD的判断点之前 。验证了该方法在降低延迟方面的有效性。

picture.image

图5展示了在所有测试集上获取语义VAD尾部判断点的各种方法的比例。可以清楚地看到,最大沉默判断方法(即传统的VAD)仅占5.41%,这表明我们的语义VAD方法可以使大多数尾部分割点提前被判断出来。 由于端点所占比例相对较小(14.42%),人为定义的标签在语义上是抽象的,需要通过标点预测(如高比例)进行预判

Conclusion

本文提出了一种新颖的语义VAD方法,该方法通过引入标点预测、人工定义端点和辅助语义任务,综合判断是否需要进行尾部分割。在内部数据集上的实验表明,与传统的VAD方法相比,本文提出的语义方法在不明显牺牲后端ASR性能的情况下显著降低了尾部分割延迟。在未来,我们将研究其在其他语义依赖语音任务(如语音翻译、对话理解)中的应用,以及在多任务情况下的推广。

参考文献

0
0
0
0
评论
未登录
暂无评论