IEEE T-ASLP | 利用ASR预训练的Conformer模型通过迁移学习和知识蒸馏进行说话人验证

本文主要是介绍IEEE T-ASLP | 利用ASR预训练的Conformer模型通过迁移学习和知识蒸馏进行说话人验证,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

近期,昆山杜克大学在语音旗舰期刊 IEEE/ACM Transactions on Audio, Speech and Language Processing (TASLP)上发表了一篇题为“Leveraging ASR Pretrained Conformers for Speaker Verification Through Transfer Learning and Knowledge Distillation”的论文。论文研究了如何利用语音识别(ASR)预训练的Conformer模型进行说话人验证(SV)。

该论文共提出了三种方法:

  1. 迁移学习。通过ASR预训练的Conformer模型对说话人嵌入网络进行初始化,从而增强模型泛化能力并降低过拟合风险。

  2. 知识蒸馏。通过教师-学生模型将ASR预训练的Conformer模型的复杂能力提炼到SV模型中,并将帧级别的ASR蒸馏损失作为辅助任务来增强模型SV性能。

  3. 自适应机制。将ASR特征通过一种轻量级的说话人自适应模块转换为特定于说话人的嵌入,实现在单一模型中统一ASR和SV任务。

实验在VoxCeleb[1,2]数据集上进行,结果表明我们提出的三种方法成功地将丰富的ASR知识转移到说话人建模中,有效的提升了模型的SV性能。

论文题目:Leveraging ASR Pretrained Conformers for Speaker Verification Through Transfer Learning and Knowledge Distillation

作者列表:Danwei Cai and Ming Li

论文原文:https://ieeexplore.ieee.org/document/10572375

预印版本:https://sites.duke.edu/dkusmiip/files/2024/06/main_minor_revision.pdf

背景动机

说话人验证(SV)指的是根据语音确认说话人身份的过程。近年来,深度学习在SV任务中取得巨大成功。在SV系统中,常用的神经网络结构有卷积神经网络(CNN)和时延神经网络(TDNN),它们的关键优势在于能够有效模拟局部特征模式,但在网络深度不够的情况下提取全局特征存在局限性。Transformer通过多头注意力机制展示了更强的捕获全局上下文的能力,但缺乏精细的局部模式。Conformer通过结合卷积模块和Transformer弥补了这一差距,有效捕捉局部和全局上下文信息,在ASR中取得了不错的效果[3]。在SV任务中,张等人设计了一种多尺度特征聚合Conformer(MFA-Conformer)通过连接所有Conformer块的帧级输出来增强说话人特征提取[4];廖等人则在Conformer编码器中加入了长度缩放注意机制和锐化感知最小化训练用于SV[5]。

Conformer模型捕获局部和全局上下文的能力在ASR和SV任务中得到利用。ASR专注于识别语音的语言内容,更强调帧级细节。与此相反,说话人确认的目标是识别来自语音的特定说话人特征,以话语级上下文为中心。尽管存在这些差异,但先前的研究表明这两项任务可以相辅相成,帧级音素建模可以改善说话人嵌入网络。此外,虽然Conformer模型具有优势,但在数据有限或模型参数较大时,容易出现过拟合问题,这在SV中尤其明显。因此,我们旨在探索如何有效利用ASR预训练的Comformer模型进行SV。

提出的方案

方案一:迁移学习

首先,使用ASR预训练的Conformer模型,利用其参数初始化MFA-Conformer说话人嵌入网络中Conformer编码器的参数。在训练的早期阶段,冻结Conformer编码器的参数,仅更新池化层和后续的线性层。在训练的后期阶段,解冻整个MFA-Conformer模型的参数,进行微调,使其更好地适应SV任务的需求。这种分阶段训练的方法通过限制初始阶段的更新,使ASR预训练的Conformer模型能够平滑过渡到SV任务上,避免了随机初始化层带来的显著扰动,从而减小过拟合风险,提升模型的泛化能力和收敛速度。

方案二:知识蒸馏

知识蒸馏涉及训练一个学生模型来再现一个更复杂的教师模型的行为。在本文中,ASR预训练的Conformer模型充当教师模型来指导一个基于MFA-Conformer的SV学生模型,整体框架如图1所示。

图1:从ASR预训练的 Conformer模型到基于MFA-Conformer的SV模型的知识蒸馏。

损失函数由说话人分类损失和ASR蒸馏损失组成。

其中,表示MFA-Conformer模型对输入频谱序列的说话人预测, 表示真实说话人标签,表示带ASR解码器的MFA-Conformer模型,表示ASR预训练模型。

该方案的优势在于,在多任务框架中,利用ASR模型的输出作为辅助目标,通过知识蒸馏使得SV模型能利用ASR预训练模型的特征表示,从而在无需额外的ASR数据的情况下提高模型泛化性。此外,该方案提供了更大的架构灵活性,能够优化设计以满足ASR和SV任务的特定需求。

方案三:自适应机制

为了弥补ASR和SV之间的差距,统一Conformer编码器,我们引入了一种可集成到大规模预训练模型中的轻量级可训练说话人自适应模块。如图2所示,该模块由三部分组成:L个层适配器,K个可训练的Conformer层以及用于生成说话人嵌入的池化层和全连接层组合。

 图2:在一个Conformer模型中统一ASR和SV的说话人自适应模块。

其中层适配器由两个线性层和一个激活函数组成,用于微调ASR预训练Conformer模型的每层输出,使其更适配SV目标。K个可训练的Conformer层用于增强说话人特征提取。经过层适配器和可训练Conformer层变换后得到的帧级特征最终合并在一起,经过一个具有话语级的池化层和线性层的组合来提取说话人嵌入。

实验结果

 方案一实验结果:

利用ASR预训练Conformer模型初始化说话人嵌入网络的迁移学习结果如表1所示。实验结果显示在未使用迁移学习策略时,由于Conformer模型在数据有限或模型参数较大时,容易出现过拟合问题,因而当模型参数增加时SV性能反而呈现下降趋势。当使用ASR预训练模型初始化后,可以看到所有模型的SV性能均有所提高,模型的泛化性及防过拟合能力都得到了大幅提升,且对于较大的模型性能提升更为显著(例如在NEMO Large模型上,EER从原来的0.96%下降至0.48%,提升了50%)。另外可以看到该方法与一些大型自监督语音模型相比也极具竞争力,在VoxCeleb-O测试中,基于ASR预训练NEMO Large(参数约为1.31亿)取得了0.48%的EER,相比之下,参数更多的UniSpeech-SAT Large(约3.17亿)仅取得了0.63%的EER。此外我们还通过截取了NEMO Large前 4、6、8层探索了在Conformer浅层上的SV性能,可以看到当不应用ASR预训练时,这些截断的模型比完整的模型表现的更好,这也再次印证了Conformer随参数增加过拟合的倾向。当应用ASR预训练后,这些截断的模型要优于未使用ASR预训练的模型,也再次强调了ASR预训练的优势。

表1:基于ASR预训练的MFA-Conformer在VoxCeleb 1上的SV性能

 

方案二实验结果:

该实验中,我们使用NEMO Large ASR-CTC模型作为知识蒸馏中的教师模型,实验结果如表2所示。可以看到在不同的模型大小和采样率下,ASR知识蒸馏技术都能显著提升模型SV性能,且在大多数情况下模型表现要优于或接近ASR预训练对应的模型。这可归因于两个方面:一方面学生模型受益于在大规模ASR数据集上训练的参数更大的ASR教师模型的鲁棒性;另一方面帧级别建模的辅助ASR任务增强了学生模型在捕获细粒度、特定于说话人特征的能力。此外我们还探讨了模型大小和采样率的影响,将NEMO Small、NEMO Medium、NEMO Large三种模型的Conformer层数减半的同时将卷积采样率翻倍从1/4提升至1/2。实验结果表明,虽然模型参数少了接近一半,但不管是采用基线训练还是知识蒸馏方法,都能获得与原先模型相当甚至更好的SV性能。

表2:基于ASR知识蒸馏技术的MFA-Conformer在VoxCeleb 1上的SV性能

图片

方案三实验结果:

在该实验中,我们设置了三种不同配置的说话人自适应模块以进行比较:

  • V1:直接使用ASR Conformer前L层的输出,无需层适配器的干预。

  • V2:按照图2(a)的设置,集成了层适配器微调来自ASR Conformer前L层的输出。K个轻量级Conformer层处理第L个ASR Conformer层输出的帧级特征。

  • V3:与图2(b)一致,集成了层适配器微调来自ASR Conformer前L层的输出。K个轻量级的Conformer层处理ASR Conformer的前L个Conformer层的串联输出,其中辅助的线性层确保了连接的特征维度的对齐。

我们在Small、Medium、Large三种不同大小的ASR Conformer编码器上对这三种配置的说话人自适应模块进行了SV性能评估,实验结果分别如表3、表4、表5所示。

 表3:不同配置的说话人自适应模块在NEMO Small ASR-CTC模型上的SV性能

 表4:不同配置的说话人自适应模块在NEMO Medium ASR-CTC模型上的SV性能

 

 表5:不同配置的说话人自适应模块在NEMO Large ASR-CTC模型上的SV性能

 表5:不同配置的说话人自适应模块在NEMO Large ASR-CTC模型上的SV性能

 

 

实验结果表明,与V1相比,集成了层适配器的V2在SV上的性能得到了显著提升。例如,NEMO Small ASR-CTC(L=12,K=0)模型的EER降至1.10%,相较于同等模型下V1的1.73%减少了36%,Medium和Large模型上也显示了类似的性能提升,这证明了层适配器的有效性。

此外,我们进一步研究了加入可训练轻量级Conformer层的影响,结果显示增加额外的可训练Conformer层能带来一定的性能提升,但存在收益递减现象。可以看到在K=2时,SV性能得到了明显改善,但增加到4层时,相较2层的SV性能提升不明显甚至会略微下降。这可能是因为这些轻量级可训练Conformer层的输入来自ASR模型的高度抽象信号,因而增加过多可能导致过拟合。

另外,我们对比了V2和V3中可训练Conformer层的输入。在V2中,可训练Conformer层的输入直接来自第L个ASR Conformer层的帧级输出。而在V3配置中,可训练Conformer层的输入来自ASR模型前L个Conformer层的串联输出。结果表明,V3在所有不同模型大小、L值和K值的模型中均优于V2。这表明,ASR Conformer模型的早期层能够有效捕捉说话人特征,V3的多层串联输出捕捉了更多样化且高质量的信息,有助于提高说话人适应模块的性能。

虽然该说话人自适应方法略微落后于前两种方案,但它在仅增加极少量参数下独特地提供了在单个Conformer模型中统一ASR和SV的能力。

结 论

本文提出了三种有效利用ASR预训练Conformer模型来提升SV性能的方法,并在VoxCeleb数据集上进行实验验证了这些方法的有效性。首先,我们使用迁移学习方法,通过ASR预训练Conformer初始化说话人嵌入网络使得模能够提取更为鲁棒的说话人表示,从而避免了对有限说话人数据的过拟合。其次,通过从ASR Conformer教师模型向SV学生模型进行知识蒸馏来高效转移ASR知识,作为辅助的音素建模任务,这种蒸馏方法增强了说话人建模,且与直接的ASR预训练初始化相比,知识蒸馏方法在学生模型设计上提供了更大的灵活性。在最后一种方案上,我们通过引入轻量级说话人自适应模块,为SV任务优化ASR学习到的特征高效地弥合了两者之间的差距,在仅添加极少额外参数下将ASR和SV任务统一于一个Conformer模型中。

参考文献

[1] Arsha Nagrani, Joon Son Chung, and Andrew Zisserman, “Voxceleb: a large-scale speaker identification dataset,” in Proc. of Interspeech, 2017, pp. 2616–2620.

[2] Joon Son Chung, Arsha Nagrani, and Andrew Zisserman, “VoxCeleb2: Deep Speaker Recognition,” in Proc. of Interspeech, 2018, pp. 1086–1090.

[3] Anmol Gulati, James Qin, Chung-Cheng Chiu, Niki Parmar, Yu Zhang, Jiahui Yu, Wei Han, Shibo Wang, Zheng dong Zhang, Yonghui Wu, et al., “Conformer: Convolution augmented transformer for speech recognition,” in Proc. Interspeech, 2020, pp. 5036–5040.

[4] Yang Zhang, Zhiqiang Lv, Haibin Wu, Shanshan Zhang, Pengfei Hu, Zhiyong Wu, Hung-yi Lee, and Helen Meng, “Mfa-conformer: Multi-scale feature aggregation conformer for automatic speaker verification,” in Proc. Interspeech, 2022, pp. 306–310.

[5] Dexin Liao, Tao Jiang, Feng Wang, Lin Li, and Qingyang Hong, “Towards a unified conformer structure: from asr to asv task,” in Proc. of ICASSP, 2023, pp. 1–5.

这篇关于IEEE T-ASLP | 利用ASR预训练的Conformer模型通过迁移学习和知识蒸馏进行说话人验证的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1099740

相关文章

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python使用date模块进行日期处理的终极指南

《Python使用date模块进行日期处理的终极指南》在处理与时间相关的数据时,Python的date模块是开发者最趁手的工具之一,本文将用通俗的语言,结合真实案例,带您掌握date模块的六大核心功能... 目录引言一、date模块的核心功能1.1 日期表示1.2 日期计算1.3 日期比较二、六大常用方法详

Python使用DrissionPage中ChromiumPage进行自动化网页操作

《Python使用DrissionPage中ChromiumPage进行自动化网页操作》DrissionPage作为一款轻量级且功能强大的浏览器自动化库,为开发者提供了丰富的功能支持,本文将使用Dri... 目录前言一、ChromiumPage基础操作1.初始化Drission 和 ChromiumPage

Jackson库进行JSON 序列化时遇到了无限递归(Infinite Recursion)的问题及解决方案

《Jackson库进行JSON序列化时遇到了无限递归(InfiniteRecursion)的问题及解决方案》使用Jackson库进行JSON序列化时遇到了无限递归(InfiniteRecursi... 目录解决方案‌1. 使用 @jsonIgnore 忽略一个方向的引用2. 使用 @JsonManagedR

使用Folium在Python中进行地图可视化的操作指南

《使用Folium在Python中进行地图可视化的操作指南》在数据分析和可视化领域,地图可视化是一项非常重要的技能,它能够帮助我们更直观地理解和展示地理空间数据,Folium是一个基于Python的地... 目录引言一、Folium简介与安装1. Folium简介2. 安装Folium二、基础使用1. 创建

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

Nginx如何进行流量按比例转发

《Nginx如何进行流量按比例转发》Nginx可以借助split_clients指令或通过weight参数以及Lua脚本实现流量按比例转发,下面小编就为大家介绍一下两种方式具体的操作步骤吧... 目录方式一:借助split_clients指令1. 配置split_clients2. 配置后端服务器组3. 配

国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)

《国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)》本文给大家利用deepseek模型搭建私有知识问答库的详细步骤和遇到的问题及解决办法,感兴趣的朋友一起看看吧... 目录1. 第1步大家在安装完ollama后,需要到系统环境变量中添加两个变量2. 第3步 “在cmd中