ICASSP2023论文代码开源|TOLD能对混叠语音建模的说话人日志框架

简介: ICASSP2023论文代码开源|TOLD能对混叠语音建模的说话人日志框架

a38b80679aa4f3b51d04e5731458304e.png


说话人日志(Speaker Diarization, SD)任务的目标是检测不同说话人的语音活动时间段,即回答“谁在什么时间说话了”这一问题。


传统的说话人日志系统,往往基于聚类算法实现,一般包括成如下步骤:(1)使用语音端点检测将原始音频切分成语音片段;(2)使用说话人嵌入码提取模型;(3)使用聚类方法,例如K-means等将属于同个说话人的音频片段分组到一起。然而,这些聚类方法往往是无监督的,无法直接最小化说话人日志错误,从而导致次优结果。尽管之后也有一些有监督的聚类方法被提出,但是,不管是无监督还是有监督的聚类方法,它们都假设了每个语音片段只会对应单个说话人,因此无法解决混叠语音问题。


为了处理混叠语音,基于神经网络的端到端说话人日志方法(end-to-end neural diariza- tion ,EEND)将说话人日志重新定义成一个多标签分类问题,从而能直接优化说话人日志错误,并且拥有处理混叠语音的能力。进一步地,基于编解码结构的吸引子模型(encoder-decoder based attractor,EDA)被引入到EEND中,用于适配说话人数量不固定的情况。在此基础之上,也有一些二阶段的方法别提出,用于进一步提升说话人日志性能。


近期,阿里巴巴达摩院语音实验室的论文“TOLD: A NOVEL TWO-STAGE OVERLAP-AWARE FRAMEWORK FOR SPEAKER DIARIZATION”被ICASSP 2023 接收。该论文是达摩院语音实验室在说话人日志方向的最新成果,是对“如何显式建模混叠语音”这一问题的研究探索。


论文相关代码,已在达摩院语音实验室的代码仓库 FunASR 进行开源。


论文题目:TOLD: A NOVEL TWO-STAGE OVERLAP-AWARE FRAMEWORK FOR SPEAKER DIARIZATION


作者:王嘉明,杜志浩,张仕良


论文地址:https://arxiv.org/abs/2303.05397


代码仓库:https://github.com/alibaba-damo-academy/FunASR/tree/main/egs/callhome/TOLD


在本论文中,我们首先提出了对于重叠语音进行显式建模的端到端模型overlap-aware EEND(EEND-OLA),利用幂集编码(power set encoding,PSE)将说话人日志从多标签分类问题转化为单标签分类问题,同时显式建模了说话人之间的依赖和重叠。在此基础之上,我们又引入了说话人重叠后处理模型SOAP(speaker overlap-aware post-processing, SOAP),来进一步改进EEND-OLA的结果,从而提出了一种二阶段的、能对混叠语音建模的说话人日志框架 TOLD(Two-stage OverLap-aware Diarization framework)。


具体而言,在第一阶段,使用EDA来提取说话人嵌入码,同时通过最小化置换不变损失(permutation-invariant,PIT)来确定说话人顺序,并基于此用单一标签来代替多维0/1标签,更好地建模混叠语音。在第二阶段,根据第一阶段得到的说话人日志结果,从非混叠语音片段中提取说话人嵌入码,并和声学特征一起送入后处理模型 SOAP 来得到更精准的说话人日志结果。


两阶段重叠敏感的说话人日志模型 TOLD



(图示:TOLD整体框架图,左边为第一阶段的EEND-OLA,右边为第二阶段的SOAP) 


>>>第一阶段:说话人重叠敏感的端到端模型 EEND-OLA


在TOLD的第一阶段(如图 2左半部分所示),输入特征首先通过 Transformer 编码器得到声学特征,再送到由两层 LSTM 组成的 EDA 模块,预测得到该输入音频对应的说话人数量和每个说话人对应的说话人嵌入码(EDA论文中称为吸引子),然后,计算每个说话人嵌入和声学特征之间的相似度,并通过最小化 PIT 损失函数来确定说话人顺序(具体见论文)。在确定说话人的顺序后,我们就可以通过幂集编码 PSE 将原来的多维0/1标签转成单一类别标签:


009f95bcb2115fe626b684e591ce57f6.png

为了预测 PSE 标签,我们额外使用了一层 LSTM 来更好地利用上下文信息。由于LSTM要求输入序列的特征维度是固定的,因此,我们会先用零向量来将 EDA 得到的说话人嵌入的数量填充到固定数值,再逐帧逐说话人地将他们拼接在一起,即得到的结果即为 LSTM 的输入,再通过一个线性层来得到最终的 PSE 分类结果。我们通过最小化PSE标签的真实值和预测值之间的交叉熵损失来优化 EEND-OLA 模型。


>>>第二阶段:说话人重叠敏感的后处理模型 SOAP


如图示右半部分所示,首先根据第一阶段的结果挑选出没有重叠的语音来提取说话人的声纹嵌入码。我们使用一个在Switchboard和Callhome1上预训练好的ResNet34说话人识别模型作为声纹提取器,同时也用它来初始化SOAP的Encoder部分网络参数。虽然SOAP Encoder和声纹提取器的网络结构一样,但其输入为窗长1.6s、窗移0.8秒的一小段语音而非整段语音,从而得到每个时刻更细粒度的说话人声学特征。


给定每一时刻的声学表示和说话人的声纹特征,上下文有关(Context-dependent, CD)和上下文独立(Context-independent, CI)的打分器 Scorers 分别用来建模局部和全局的说话人特点,并以此来预测不同时刻的说话人活动。我们使用一个三层的全连接网络DNN来作为上下文独立打分器CI Scorer。对于上下文有关打分器 CD Scorer,我们使用多头自注意力机制 (Multi-Head Self Attention, MHSA) 来进行建模每个时刻的上下文有关的说话人发声概率。根据俩个打分器预测出的说话人发声概率,我们采用一个 LSTM 网络来建模说话人之间的依赖和重叠关系,并以此来预测幂集编码 (PSE) 标签的后验概率。


我们采用一种多任务学习的训练策略来更好的训练 SOAP 模型。主要的学习目标是最小化网络预测出的后验概率和真实PSE标签之间的交叉熵损失;次要学习目标是 CI 和 CD 打分器的分数应当尽量准确地预测出不同说话人的独立发声活动,即 CI 和 CD 得分与多维 0/1 标签之间的二值交叉熵。两个学习目标之间的平衡因子设置为0.1。


实验结果


>>>EEND-OLA与其他端到端说话人日志模型的对比


我们在常用的公开数据集 CALLHOME 上验证了TOLD的有效性。首先,为了验证 PSE 的作用,我们将第一阶段对应的 EEND-OLA 模型和其它的端到端模型进行了对比,具体结果如表1。在2个说话人的情况下,EEND-OLA 和 CB-EEND 这种只能处理固定说话人数的模型的结果相近;而在考虑所有说话人数的情况下,相比于 EEND-EDA ,EEND-OLA 能够在 DER 指标上取得13.49%的相对提升,证明了混叠语音建模的有效性。


表 1 不同的一阶段模型在CALLHOME测试集上的性能对比


>>>TOLD与其他两阶段说话人日志模型的对比


表 2给出了 TOLD 和其它二阶段模型在 CALLHOME 数据集上的性能比较。其中,除了 TOLD 之外,剩余的几个二阶段模型都是 EEND 模型和聚类方法的结合。不同的是,TOLD 的两个阶段的模型都是基于神经网络的,这为后续统一成端到端系统提供了潜力。总的来讲,TOLD 在 CALLHOME 测试集上取得了10.14%的DER。这是在该测试数据集上的一个新的最优结果。


表 2 不同的二阶段模型在CALLHOME测试集上的性能对比


>>>两个阶段不同模型搭配的性能对比


为了进一步探索不同阶段使用不同模型对性能的影响,我们设计了消融实验,具体结果如表3所示。对于第一阶段,我们比较了 VBx、EEND-EDA和EEND-OLA。对于第二阶段,我们则比较了TSVAD 和 SOAP。根据表 1和表 3的结果,我们发现,在使用相同的第二阶段模型情况下,第一阶段模型的DER越低,整个系统的性能就越好。同时,我们发现无论使用哪种第二阶段模型,所提出的EEND-OLA 总是比 VBx 和 EEND-EDA 提供更好的性能。此外,我们还发现无论使用哪种模型作为第一阶段,SOAP 提供的 DER 都比 TSVAD 低,这表明 SOAP 可能更适合用于后处理。


表3 不同阶段使用不同方法在CALLHOME测试集上的性能比较


Future Work


在本论文中,我们首先提出了EEND-OLA,利用幂集编码,将说话者日志问题,从原来的多标签预测重新定义为单标签分类问题,实现了对于说话者依赖关系和混叠语音的显式建模。受最近被提出的二阶段混合系统的启发,我们进一步提出了 TOLD 框架,将 EEND-OLA 得到的初始说话人日志结果,通过重叠感知后处理 SOAP 进行迭代提升,并在 CALLHOME 测试集上实现了新的最优结果。同时,通过比较不同阶段使用不同方法的性能差异,我们证明了 EEND-OLA 和 SOAP 相比其它模型的优越性。未来,我们会尝试对 TOLD 进一步改进,增加自适应粒度的建模方式,使其能够处理不同时长的语音。


‍▎联系我们


TOLD的代码已在FunASR开源欢迎对识别模型开源和应用感兴趣的研究人员和开发人员加入Fun-ASR开源社区交流群,共同探讨精进!



References:

[1]Zhihao Du, Shiliang Zhang, Siqi Zheng, and Zhijie Yan, “Speaker overlap-aware neural diarization for multi-party meeting analysis,” in EMNLP, 2022.

[2]Yusuke Fujita, Naoyuki Kanda, Shota Horiguchi, Kenji Nagamatsu, and Shinji Watanabe, “End-to-end neural speaker diarization with permutation-free objectives,” INTERSPEECH,  pp. 4300– 4304, 2019.

[3]ShotaHoriguchi, YusukeFujita, ShinjiWatanabe, YawenXue, and Kenji Nagamatsu, “End-to-end speaker diarization for an unknown number of speakers with encoder-decoder based at- tractors,” in INTERSPEECH, 2020, pp. 269–273.

[4]Chunlei Zhang, Jiatong Shi, Chao Weng, Meng Yu, and Dong Yu, “Towards end-to-end speaker diarization with generalized neural speaker clustering,” in ICASSP, 2022, pp. 8372–8376.

[5]Shota Horiguchi, Shinji Watanabe, Paola Garc ́ıa, Yawen Xue, Yuki Takashima, and Yohei Kawaguchi, “Towards neural diarization for unlimited numbers of speakers using global and local attractors,” in ASRU, 2021, pp. 98–105.


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
29天前
|
Java
使用Java代码打印log日志
使用Java代码打印log日志
89 1
|
3月前
|
数据库
什么是计算机软件开发领域的 verbose 代码和日志
什么是计算机软件开发领域的 verbose 代码和日志
31 0
|
4月前
|
存储
优秀开源日志平台GrayLog5.0一键安装脚本
优秀开源日志平台GrayLog5.0一键安装脚本
90 0
|
3月前
|
Prometheus Cloud Native 数据库
Grafana 系列文章(九):开源云原生日志解决方案 Loki 简介
Grafana 系列文章(九):开源云原生日志解决方案 Loki 简介
|
1天前
|
XML Java Maven
Springboot整合与使用log4j2日志框架【详解版】
该文介绍了如何在Spring Boot中切换默认的LogBack日志系统至Log4j2。首先,需要在Maven依赖中排除`spring-boot-starter-logging`并引入`spring-boot-starter-log4j2`。其次,创建`log4j2-spring.xml`配置文件放在`src/main/resources`下,配置包括控制台和文件的日志输出、日志格式和文件切分策略。此外,可通过在不同环境的`application.yml`中指定不同的log4j2配置文件。最后,文章提到通过示例代码解释了日志格式中的各种占位符含义。
|
22天前
|
Java 测试技术 Spring
Spring系列文章:Spring集成Log4j2⽇志框架、整合JUnit
Spring系列文章:Spring集成Log4j2⽇志框架、整合JUnit
|
23天前
|
XML Java 数据库连接
Springboot中使用日志框架
Springboot中使用日志框架
|
1月前
|
API 开发工具 C语言
【嵌入式开源库】EasyLogger的使用, 一款轻量级且高性能的日志库
【嵌入式开源库】EasyLogger的使用, 一款轻量级且高性能的日志库
|
2月前
|
监控 Java 测试技术
日志框架到底是Logback 还是 Log4j2
日志框架到底是Logback 还是 Log4j2
20 0
|
3月前
|
监控 前端开发