IEEE SLT 2022论文丨如何利用x-vectors提升语音鉴伪系统性能?

news2024/11/16 7:28:34

分享一篇IEEE SLT 2022收录的声纹识别方向的论文,《HOW TO BOOST ANTI-SPOOFING WITH X-VECTORS》由AuroraLab(极光实验室)发表。

来源丨AuroraLab

AuroraLab源自清华大学电子工程系与新疆大学信息科学与工程学院,以说话人识别和标记、音频事件检测、知识图谱构建与应用为研究重点,围绕感知智能与认知智能的理论、技术与系统等开展研究。

  论文题目:HOW TO BOOST ANTI-SPOOFING WITH X-VECTORS

  作者列表:马欣悦,张姗姗,黄申,高骥,胡颖,何亮

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

  论文下载:文末点击“阅读原文”下载论文

研究背景

随着语音合成、语音转换技术的进步,人工生成的语音几近以假乱真,给用于身份验证的自动声纹验证(Automatic Speaker Verification,ASV)系统的安全性带来了极大的威胁,因而对语音鉴伪技术的研究刻不容缓。

本文方案

从日常生活经验来看,如果我们熟悉目标说话人,往往会利用记忆中关于他的发声特征来判断某段音频的真或假。但说话人标签不能被直接用于指导鉴伪模型的训练,因为在真实应用场景中很难直接获得真假音频的说话人标签。由此,我们使用预先训练好的 TDNN[1]提取 x-vector,作为辅助鉴伪系统的说话人信息,提出了利用说话人信息增强鉴伪模型真假辨别能力的三套方案。上述方案部署到LightCNN[2]、SeNet34/50[3] 上以验证有效性。

图1 (a)基线, (b)AF-XA, (c)E-XA, (d)E-XA-att的模型结构图

方案一:声学特征阶段x-vectors辅助(Acoustic Feature level X-vectors Assistance,AF-XA)

声学特征阶段x-vectors辅助 (AF-XA) 方法将分段后的 x-vector 与声学特征帧对帧拼接作为防伪网络的输入,如图 1(b) 所示。声学特征向量X为T帧的d维LFCC倒谱系数。x-vectors的特征矩阵Q,它是由音频每10帧提取的x-vector且重复10次拼接而成。此外,我们在网络中加入一个变换矩阵W来降低提取的x-vector的维数,实验发现降至256维性能最佳,考虑模型参数量成本降至48维最好。

方案二:嵌入阶段x-vectors辅助(Embedding level X-vectors Assistance,E-XA)

嵌入阶段x-vectors辅助(E-XA)是利用x-vector适应到语音鉴伪模型的嵌入网络层中,如图1(c)所示。LightCNN 的防伪嵌入为 FC I 层的输出,SeNet34/50 的嵌入为平均池化层的输出。将x-vector与防伪嵌入连接后,增加 FC II层对组合嵌入降维,然后连接到后端分类器。LightCNN 和 SeNet34/50采用 E-XA 方法的网络配置详见表1。

方案三:引入注意力机制的嵌入阶段x-vectors辅助(E-XA with Attention Mechanism,E-XA-Att)

在 E-XA 的基础上,为了使神经网络更好地融合说话人信息和防伪信息,对两部分嵌入赋予注意力权值,权值通过网络训练学习到。防伪嵌入 E 和说话人嵌入 P 先由图1(d) 中名为“Transformer Layer” 的全连接层投影到公共嵌入空间,然后两个新嵌入分别归一化。归一化步骤对于提高系统性能至关重要,使得 Softmax 操作后的权重分配更有意义。将它们连接在一起后,输入到 “Attention Layer” 中计算注意力权重。两个嵌入乘上相应权重再相加输入到后端分类器。LightCNN 和 SeNet34/50 采用E-XA-Att 方法的网络配置详见表1。

表1 使用 E-XA 相关方法的 LightCNN 和 SeNet34/50 网络配置。表中阶段 2-5 的数字指的是全连接层的节点数。“-”表明没有这一层。

实验结果分析

实验使用ASVspoof 2019 LA数据集[4]对上述模型方案展开训练和测试,表2列出了本文提出系统的输入特征、鉴伪模型、说话人信息辅助方案、参数量以及在ASVspoof 2019 LA开发和测试数据集上的性能,同时与现有的一些优秀鉴伪系统进行对比。其中串联决策成本函数 (Tandem Decision Cost Function,t-DCF)[5]为评估组合系统性能的主要指标,EER评估鉴伪系统性能。

 表2 x-vectors辅助的各种语音鉴伪系统在 ASVspoof 2019 LA 数据集上的 EER(%)

引入 AF-XA 后, LightCNN,SeNet34 和 SeNet50 使 EER 分别降低 24%、51%和44%。E-XA 方案更有效,三套鉴伪模型分别获得 57%、76%和68%的相对改善。在 E-XA 的方案基础上进一步挖掘说话人信息辅助的潜力,提出为说话人嵌入和鉴伪嵌入的连接增加注意力机制,让网络自行学习鉴伪任务对两者的需求程度。实验表明,E-XA 引入注意力机制后,系统的 EER 又进一步降低了 30% 左右,而对于 E-XA-Att 方案对两个嵌入分别归一化的操作对系统性能至关重要。

x-vectors有效辅助语音鉴伪系统的原因分析

从上述实验结果可知,说话人信息x-vectors强有力地辅助了语音鉴伪系统的性能提升。为了进一步分析原因,在 ASVspoof 2019 LA 训练集和测试集中各随机选择三位说话人,对他们的真假音频提取相应的说话人嵌入,并将这些说话人嵌入的分布利用 t-SNE 方法绘图观察。图2为训练集中 LA_0079、LA_0086、LA_0093 三位说话人各自真假音频提取的 x-vectors 分布,图 3为测试集中 LA_0001、LA_0026、LA_0038 三位说话人三位说话人各自真假音频提取的 x-vectors 分布。两图中不同颜色的叉号表示假音频不同的造假方式,绿色圆点代表真音频。

由两图可以发现,同一说话人真假音频提取的说话人嵌入在图中分布有较大区分度,不同生成方式的假音频说话人嵌入也有明显不同。说话人嵌入能将大部分假音频与真音频区分开,为语音鉴伪系统提供了具有强辨别力的信息,因而可以有效提升语音鉴伪系统性能。

图2  ASVspoof 2019 LA 训练集中 (a)LA_0079 (b)LA_0086 (c)LA_0093 三位说话人真假音频说话人嵌入分布

图3  ASVspoof 2019 LA 测试集中 (a)LA_0001 (b)LA_0026 (c)LA_0038 三位说话人真假音频说话人嵌入分布

小结

本文提出了三种说话人信息x-vectors辅助语音鉴伪模型的有效方案,对语音鉴伪基线系统使用AF-XA可实现 EER 20-50%的相对性能提升,使用E-XA可实现50%以上的性能提升,使用E-XA-Att提升效果会更好。通过实验结果和t-SNE可视化绘图分析都证明了引入说话人信息x-vectors对语音鉴伪任务大有益处。最佳鉴伪系统为SeNet34使用E-XA-Att方案在ASVspoof 2019 LA测试集上EER=0.98%,min-tDCF=0.0294。所提出的方案不仅适用于论文中的LightCNN和SeNet基线系统,还可以作为通用方案拓展到其它鉴伪模型中。

参考资料

[1] David Snyder, Daniel Garcia-Romero, Daniel Povey, and Sanjeev Khudanpur, “Deep Neural Network Embeddings for Text-Independent Speaker Verification,” in Interspeech, 2017, pp. 999–1003.

[2] Xinyue Ma, Tianyu Liang, Shanshan Zhang, Shen Huang, and Liang He, “Improved LightCNN with Attention Modules for ASV Spoofing Detection,” in 2021 IEEE International Conference on Multimedia and Expo (ICME), 2021.↳

[3] Lai C I, Chen N, Villalba J, et al. "ASSERT: Anti-spoofing with squeeze-excitation and residual networks," in Interspeech, 2019, pp. 1013–1017.

[4] ASVspoof 2019: Automatic speaker verification spoofing and countermeasures challenge evaluation plan.[Online].Available: http://www.asvspoof.org/asvspoof2019/ asvspoof2019 evaluation plan.pdf.

[5] Kinnunen T , Delgado H , Evans N , et al. "Tandem Assessment of Spoofing Countermeasures and Automatic Speaker Verification: Fundamentals." IEEE/ACM Transactions on Audio, Speech, and Language Processing, 10.1109/TASLP.2020.3009494. 2020.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/376255.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt 第9课、计算器中缀转后缀算法

计算器核心算法: 1、将中缀表达式进行数字和运算符的分离 2、将中缀表达式转换成后缀表达式 3、通过后缀表达式计算最后的结果 二、计算器中缀转后缀算法 计算器中缀转后缀算法的意义在于把中缀表达式转换成后缀表达式,能够更好地计算 算法的基本思路…

【RabbitMQ笔记08】消息队列RabbitMQ之防止消息丢失的三种方式(生产者消息确认、消费者消息确认、消息持久化)

这篇文章,主要介绍消息队列RabbitMQ之防止消息丢失的三种方式(生产者消息确认、消费者消息确认、消息持久化)。 目录 一、防止消息丢失 1.1、消息确认机制(生产者) (1)生产者丢失消息 &…

字节跳动软件测试岗4轮面经(已拿34K+ offer)...

没有绝对的天才,只有持续不断的付出。对于我们每一个平凡人来说,改变命运只能依靠努力幸运,但如果你不够幸运,那就只能拉高努力的占比。 2021年10月,我有幸成为了字节跳动的一名测试工程师,从外包辞职了历…

一文读懂自动驾驶运行设计域ODD

/ 导读 /在自动驾驶技术发展如此迅速的今天,很多量产车上已经配备了多种的辅助驾驶功能,例如自适应巡航ACC、紧急制动AEB、车道居中保持LKA等等,很多的车主也都体验到了技术带给驾驶的改变。另一方面,由于现在的自动驾驶技术还处于…

量化选股——基于动量因子的行业风格轮动策略(第2部分—策略回测)

文章目录1. 交易策略2. Backtrader回测程序3. 回测效果3.1 2020年1月1日 - 2021年1月1日3.2 2021年1月1日 — 2022年1月1日3.3 2022年1月1日 — 2023年1月1日动量因子的概述与测算,阿隆指标测算请参考:https://blog.csdn.net/weixin_35757704/article/de…

react源码解析1.开篇介绍和面试题

怎样学习react源码 作为前端最常用的js库之一,熟悉react源码成了高级或资深前端工程师必备的能力,如果你不想停留在api的使用层面或者想在前端技能的深度上有所突破,那熟悉react源码将是你进步的很好的方式。 react的纯粹体现在它的api上&a…

【神经网络】LSTM

1.什么是LSTM 长短期记忆(Long short-term memory, LSTM)是一种特殊的RNN,主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题。简单来说,相比普通的RNN,LSTM能够在更长的序列中有更好的表现。 LSTM区别于RNN地方…

Java查漏补缺(09)异常概述、Java异常体系、常见的错误和异常、异常的处理、手动抛出异常对象:throw、自定义异常

Java查漏补缺(09)异常概述、Java异常体系、常见的错误和异常、异常的处理、手动抛出异常对象:throw、自定义异常本章专题与脉络1. 异常概述1.1 什么是生活的异常1.2 什么是程序的异常1.3 异常的抛出机制1.4 如何对待异常2. Java异常体系2.1 T…

【JAVA】xxl-job服务搭建

xxl-job服务搭建 1.下载xxl-job项目 https://github.com/xuxueli/xxl-job 2.数据库表创建 3.修改配置 注意:这是两个项目,一个是xxl-job前台,一个是xxl-job执行器,找到这两个项目得配置文件,修改配置。 配置文件地址…

day54【代码随想录】二刷数组

文章目录前言一、二分查找(力扣724)二、移除元素(力扣27)【双指针】三、有序数组的平方(力扣977)【双指针】四、合并两个有序数组(力扣88)五、长度最小的子数组(力扣209&…

前端学习第二阶段-第3章 Flex 伸缩布局

3-1 移动端基础知识 01-移动端基础 02-视口 03-meta视口标签 04-物理像素与物理像素比 05-二倍图 06-背景缩放background-size 07-背景二倍图以及多倍图切图 08-移动端开发选择 09-移动端技术解决方案 10-移动端特殊样式 11-移动端技术选型 12-流式布局 3-2 移动端电商首页制作…

Python基础—while循环

(1)while循环&#xff1a; 语法格式&#xff1a; while 条件&#xff1a;   执行语句1……   执行语句2…… 适用条件&#xff1a;无限循环 死循环 while True:print(条件是真的&#xff01;)代码实例&#xff1a; i 0 # 创建一个计数的变量 while i < 5: # Truepr…

感知趋势,洞察发展:2023(第十届)趋势与预测大会成功举办

2023年2月23日&#xff0c;运联年会&#xff1a;2023&#xff08;第十届&#xff09;趋势与预测大会在深圳机场凯悦酒店成功闭幕。自2014年开始&#xff0c;“运联年会&#xff1a;趋势与预测”已经连续举办九届。这场大会&#xff0c;既是一次行业性的“年终总结”&#xff0c…

【Java开发】JUC基础 01:进程、线程、多线程

1 进程与线程1.1 进程开发写的代码称为程序&#xff0c;那么我们将程序运行起来&#xff0c;我们称之为进程&#xff1b;进程就是申请一块内存空间&#xff0c;将数据放到内存空间中去&#xff0c;是系统进行资源分配和调度的基本单位。&#x1f4cc; 程序与进程的区别程序是数…

QML Item

在QML中所有的可视项目都继承自Item&#xff0c;虽然Item本身没有可视化的外观&#xff0c;但它定义了可视化项目的所有属性。 Item可以作为容器使用&#xff1a; Item{Rectangle{id:retc}Rectangle{id:retc1}Rectangle{id:retc2}Rectangle{id:retc3}} item拥有children属性…

MyBatis学习笔记(七) —— 特殊SQL的执行

7、特殊SQL的执行 7.1、模糊查询 模糊查询的三种方式&#xff1a; 方式1&#xff1a;select * from t_user where username like ‘%${mohu}%’ 方式2&#xff1a;select * from t_user where username like concat(‘%’,#{mohu},‘%’) 方式3&#xff1a;select * from t_u…

DolphinScheduler跨版本升级1.3.8至3.0.1

DolphinScheduler跨版本升级1.3.8至3.0.1Refer背景基础环境依赖版本升级修改pom.xml问题解决MYSQL升级1.文件替换2.修改表结构t_ds_process_definitiont_ds_alertt_ds_process_instance3.时间参数修改4.数据库升级DOLPHIN安装zookeeper集群创建用户dolphinscheduler_env.shinst…

指针变量作为函数参数详解,形参和实参之间的值传递如何传递?如何改变指针变量所指向的变量?

函数的参数不仅可以是整型&#xff0c;浮点型&#xff0c;字符型等数据&#xff0c;还可以是指针类型&#xff1b;它的作用是将一个变量的地址传送到另一个函数中。 关于地址&#xff0c;指针&#xff0c;指针变量可以参考我的上一篇文章&#xff1a; 地址&#xff0c;指针&…

线程的基本方法

线程等待&#xff1a;wait方法 调用wait方法的线程会进入WAITING状态&#xff0c;只有等到其他线程的通知或程序被中断才会返回。调用wait方法后会释放对象的锁&#xff0c;因此 wait方法一般被用于同步方法或同步代码块中 。 线程睡眠&#xff1a;sleep方法 调用sleep方法会导…

Spring Boot 版本升级2.2.11.RELEASE至2.7.4

2.2.11.RELEASE > 2.7.4项目更新spring-boot-starter-parent 主依赖&#xff0c;导致项目跑不起了日志也没有输出有用信息&#xff0c;自己查看源码调试启动入口打断点&#xff0c;一步步进入方法定位项目停止代码我的项目执行到SpringApplication.class 的152行代码会停止项…