深度伪造音频普遍检测的Codecfake数据集和对策

        基于音频语言模型(ALM)的深度伪造音频的扩散,出现了对其负面影响的担忧。如,这项技术可能被用于传播错误信息和虚假新闻,迫切需要有效的检测方法。与通常涉及多步骤过程并以声码器使用结束的传统深度伪造音频生成不同,ALM直接利用神经编解码方法将离散代码解码成音频。此外,由于大规模数据的驱动,ALM展现出显著的鲁棒性和多功能性,为当前的音频深度伪造检测(ADD)模型带来了重大挑战。为了有效检测基于ALM的深度伪造音频,我们从以下三个维度进行优化:

  • 专注于ALM基于音频生成方法的机制,即从神经编解码到波形的转换。
  • 构建Codecfake数据集开源的大规模数据集,包括两种语言、百万级的音频样本以及各种测试条件,专为基于ALM的音频检测量身定制。
  • 提出CSAM策略,实现深度伪造音频的通用检测并解决原始SAM的领域上升偏差问题

1、Codecfake数据集

        Codecfake数据集包含两种语言:英语和中文,共包含1,058,216个音频样本。其中,英语数据来自VCTK数据集,包含248,031个样本;中文数据来自AISHELL3数据集,包含492,716个样本。此外,训练集共包含740,747个样本,验证集共包含92,596个样本,测试集共包含224,873个样本。因此,Codecfake数据集总共包含超过一百万个音频样本

  • 音频采样率:Codecfake数据集中的音频采样率主要使用16kHz和24kHz。具体来说,SoundStream、SpeechTokenizer和FuncCodec使用16kHz的采样率,而Encodec、AudioDec、AcademicCodec和DAC使用24kHz的采样率。
  • 标签及标注:Codecfake数据集提供了真实的标签,用来指示每个样本是真实音频还是伪造音频。

2、如何使用Codecfake数据集Python代码来下载和加载数据集

import os

import requests

import zipfile

# 下载数据集

dataset_url = 'https://zenodo.org/record/5307883/files/codecfake_dataset.zip?download=1'

dataset_path = 'codecfake_dataset.zip'

if not os.path.exists(dataset_path):

    response = requests.get(dataset_url, stream=True)

    with open(dataset_path, 'wb') as file:

        for chunk in response.iter_content(chunk_size=1024):

            if chunk:

                file.write(chunk)

# 加载数据集

with zipfile.ZipFile(dataset_path, 'r') as zip_ref:

    zip_ref.extractall('./codecfake_dataset')

# 此时,您可以加载数据集中的文件并进行相关的分析和处理。

3、CSAM策略

     CSAM(Co-Training Sharpness Aware Minimization)策略是一种用于提高音频深度伪造检测(ADD)模型泛化能力的方法。CSAM策略的核心是在共训练(Co-Training)过程中应用Sharpness Aware Minimization(SAM)的思想,同时解决由于数据集大小不平衡和领域特定伪影导致的领域上升偏差问题。

3.1 CSAM策略的动机

共训练:共训练是指同时使用来自多个领域的数据进行模型训练,以提高模型在不同领域的泛化能力。

SAM:SAM是一种优化方法,用于在非凸优化问题中寻找一个平坦且泛化的最小值。它通过最大化损失函数的梯度来寻找上升方向,从而避免模型陷入过拟合的训练集所对应的尖锐最小值。

领域上升偏差:在共训练过程中,由于不同领域数据量的不平衡,模型可能会偏向于学习数据量较大的领域的特征,而忽略数据量较小的领域。

3.2 CSAM策略的关键点

数据采样器:CSAM定义了一个特定的数据采样器,根据数据集的比例确保每个领域在每个mini-batch中都被均匀地采样。

损失函数计算:在每个mini-batch中,CSAM计算损失函数时,会确保每个领域都根据其数据量比例被随机采样,从而使得上升方向向量在每个mini-batch计算中都包含来自每个领域的梯度。

优化过程:CSAM通过这种方式优化经验风险最小化(ERM)的同时,学习到一个平坦的最小值区域,从而提高了模型在看不见的领域(OOD)上的泛化能力。

3.3 CSAM策略的实现

在实现CSAM策略时,需要考虑以下几点:

  • 数据集的划分:确保共训练的数据集中每个领域都有代表。
  • mini-batch的构建:在构建每个mini-batch时,根据数据集的比例随机采样数据,以避免领域上升偏差。
  • 损失函数的优化:使用SAM的优化方法来寻找一个平坦的最小值,同时在共训练过程中保持领域之间的平衡。

4、三种用于音频深度伪造检测(ADD)的基线模型

Mel-LCNN:这个模型使用Mel-spectrogram(梅尔频谱图)作为前端特征,然后通过轻量级的基于卷积的网络LCNN(Light Convolutional Neural Network)进行处理。LCNN是一个专为音频信号设计的卷积神经网络,它包含一个特定的MFM(Mel-Frequency Magnitudes)层,用于有效筛选有助于验证的特征通道。

W2V2-LCNN:这个模型同样使用Mel-spectrogram作为输入,但前端特征是通过预训练的wav2vec2-XLS-R模型获得的1024维隐藏状态。这些状态被用作LCNN的输入,以利用wav2vec2-XLS-R的强大特征表示能力。

W2V2-AASIST:这个模型使用wav2vec2-XLS-R模型的预训练隐藏状态作为特征,但背骨网络(Backbone network)使用的是AASIST,这是一个在音频深度伪造检测领域中最先进的网络之一。AASIST引入了一种新颖的异构堆叠图注意力层,该层使用异构注意力机制和堆叠节点来模拟不同时间和频域上的特征。

5、实验设置和结果

5.1 实验设置

数据集:使用Codecfake数据集,该数据集包含1,058,216个音频样本,包括132,277个真实样本和925,939个由七种不同编解码方法生成的伪造样本。

训练/验证/测试集:将真实样本分为训练子集(105,821个样本)、开发子集(13,228个样本)和评估子集(13,228个样本)。同样,伪造音频也按照这些类别进行了划分。

基线模型:选择了三种基线模型进行评估,包括Mel-LCNN、W2V2-LCNN和W2V2-AASIST,这些模型使用梅尔频谱图(Mel-spectrogram)和预训练的wav2vec2-XLS-R模型的隐藏状态作为前端特征。

训练细节:所有音频样本首先被下采样到16,000 Hz,并裁剪或填充到4秒的时长。使用Adam优化器进行训练,学习率设置为5×10^-4,并在每个epoch后根据性能进行调整。

评估:使用官方实现的EER计算方法,并使用0.5的阈值来区分真实和伪造的预测。

5.2 结果

Vocoder-trained模型:使用ASVspoof2019LA(19LA)训练集训练的模型在19LA测试集上表现良好,但在Codecfake测试集上表现不佳,表明仅使用声码器训练的模型无法有效检测基于编解码器的音频。

Codec-trained模型:使用Codecfake训练集训练的模型在Codecfake测试条件C1-C7下表现显著提升,其中W2V2-AASIST模型在所有测试条件下平均EER最低,为0.177%。

不同编解码器设置的影响:通过改变编解码器的参数设置(如比特率和量化器),发现这些变化对反欺骗系统的性能影响不大。

ALM-based音频测试:评估了仅使用声码器训练的ADD模型对ALM-based音频的检测效果,发现在某些情况下(如A3)性能下降,这归因于OOD(Out-of-Distribution,即模型未见过的数据分布)问题。

通用ADD方法的对策:提出了一种共训练方法,结合声码器训练的音频和基于编解码器的音频,以确保检测模型在所有场景中表现良好。此外,使用了CSAM方法来优化模型的泛化能力。

CSAM策略的效果:在使用CSAM策略的共训练过程中,模型在所有测试条件下的平均EER最低,为0.616%,表明CSAM策略有效地提高了模型的泛化能力。

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

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

相关文章

DS高阶:B树系列

一、常见的搜索结构 1、顺序查找 时间复杂度:O(N) 2、二分查找 时间复杂度:O(logN) 要求:(1)有序 (2)支持下标的随机访问 3、二叉搜索树(BS树) 时间复杂…

【Linux】文件描述符和重定向

目录 一、回顾C文件 二、系统文件I/O 2.1 系统调用 open 2.2 标志位传参 2.3 系统调用 write 2.4 文件描述符fd 2.5 struct file 2.6 fd的分配规则 2.7 重定向 2.7.1 基本原理: 2.7.2 系统调用 dup2 2.8 标准错误 一、回顾C文件 文件 内容 属性 对…

Python 被广泛用于编写测试脚本、与各种测试框架和工具集成,以及进行性能测试、安全测试等

Python 是一种非常适合自动化测试的语言,因为它易于学习、语法简洁且拥有庞大的社区和丰富的库支持。在自动化测试领域,Python 被广泛用于编写测试脚本、与各种测试框架和工具集成,以及进行性能测试、安全测试等。 以下是一些 Python 自动化…

leetcode刷题:买卖股票的最佳时机

题目 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大…

文件操作IO网络编程网络原理

​ 文件操作—IO 文件在计算机中可以代表很多东西 在操作系统中, 文件主要是指硬盘文件 硬盘主要分为机械硬盘和固态硬盘。机械硬盘通过磁头在旋转的磁盘上读取数据,适合顺序读取。而固态硬盘则使用闪存芯片来存储数据,没有机械部件,因此读…

Typescript高级: 对泛型和多态的应用, 实现Java中的ArrayList和LinkedList

ArrayList 1 ) 概述 在Java中,ArrayList是一个非常常用且强大的数据结构,它提供了动态数组的功能能够方便地添加、删除和访问元素。在TypeScript中,虽然并没有内置的ArrayList类型但我们可以通过类与接口来模拟实现ArrayList的功能 2 &…

省公派访学|社科老师赴世界名校牛津大学开展研究

F老师已获某省公派出国访学半年的资助,希望落实的学校尽量知名。但因为F老师只是硕士毕业而无博士学位,专业方向又是社科类,所以申请到世界知名高校有一定难度。经过努力,最终我们获得了世界顶尖高校-英国牛津大学的访问学者邀请函…

html5的一些新特性

最近总是碰到html5特性这种问题,虽然简单,但是也是自己平时不关注的东西,趁今天时间充裕,那就来总结一下吧 HTML5新特性包括新增了部分标签、表单元素增强、支持视频和音频、支持canvas绘图、提供web存储、提供地理定位功能、提供web workers机制、提供web socket协议、提供CS…

深入解析 @Transactional:Spring 事务管理的艺术及实战应对策略

在Spring框架的事务处理中,Transactional 注解扮演着核心角色,它极大地简化了开发者在应用中实施事务控制的复杂度。本文将全面解析 Transactional 注解的各个关键属性,并结合实际问题——多数据源配置中遇到的 PlatformTransactionManager 选…

【运维实践项目|001】:高可用性云基础设施部署与升级项目

目录 项目名称 项目背景 项目目标 项目成果 我的角色与职责 我主要完成的工作内容 本次项目涉及的技术 本次项目遇到的问题与解决方法 本次项目中可能被面试官问到的问题 1、什么是ELK? 2、什么是Elasticsearch、Logstash 和Kibana? 3、ELK 三…

《intel开发手册卷3》读书笔记1

1、CPU工作模式 1)实模式:8086的寄存器只有16位,我们也习惯于称8086的工作模式为16位模式。后续的CPU为了保持兼容性,在芯片上了电以后,还必须运行于16位模式之下。这种模式还有个正式的名字叫做实模式。在实模式下&am…

【游戏引擎】unity

目录 Unity入门教程:从零到英雄的旅程前言第一步:下载和安装Unity第二步:创建你的第一个Unity项目第三步:熟悉Unity界面第四步:创建一个简单的游戏对象第五步:编写脚本赋予游戏对象生命第六步:运…

Leetcode 222:完全二叉树的节点个数

给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 递归遍历1 public static int countNodes(TreeNode root){return preorder(root);}//计算树的节点个数public static int preorder(TreeNode root){int count0;if(rootnull) return 0;int leftpreorder(…

C语言每日一题—查找子串个数

用函数编程实现计算字符串中子串出现的次数。 函数原型: int FindString(char *str,char *sub) 要求: 在主函数中输入字符串和子串,调用FindString()函数,输出子串出现的次数。输入格式:"%c" 输出格式&#…

探索车路云深度融合的优化与实践

项目背景与业务场景 目前,我国车联网行业处于与 5G 技术的深度融合时期。随着汽车从传统交通工具向着智能化、网联化和电动化方向演进,车联网成为 5G 交通和汽车领域跨界融合最具潜力的应用,已经成为我国战略性新兴产业的重要发展方向。通过…

【前端每日基础】day8 src和href

src 和 href 是两个常用的 HTML 属性&#xff0c;它们分别用于不同类型的资源引用&#xff0c;有以下区别&#xff1a; src&#xff08;source&#xff09;&#xff1a; src 属性用于指定外部资源的地址&#xff0c;比如图像、音频、视频、嵌入框架等的地址。 在 < img &g…

Linux perf:系统性能监控和分析工具

1. 写在前面 Linux perf 是 Linux 2.6 后内置于内核源码树中的性能剖析&#xff08;profiling&#xff09;工具,它基于事件采样&#xff0c;以性能事件为基础&#xff0c;针对 CPU 相关性能指标与操作系统相关性能指标进行性能剖析&#xff0c;可用于性能瓶颈查找与热点代码的…

保研机试之【x86/x86-64体系结构中的寄存器】

先来看一下这六个选项的功能&#xff1a; 举一个例子&#xff1a; 对于CR2寄存器和中断向量表&#xff1a; 也就是先通过CR2寄存器找到引发错误的虚拟地址&#xff0c;然后操作系统分析错误原因&#xff0c;通过IDTR寄存器找到IDT&#xff08;中断向量表&#xff09;&#xff0…

栈与递归的实现

1. 栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端 称为栈顶&#xff0c;另一端称为栈底。 栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out&#xff09;的原则&#x…

光纤VS紫外:如何选择最适合您生产线的激光打标机?

光纤激光打标机和紫外激光打标机在制造业中都有其独特的应用&#xff0c;但两者在原理、特点和应用范围上存在一些差异。 光纤激光打标机是一种采用光纤输出激光&#xff0c;并通过高速扫描振镜系统实现打标功能的新一代激光打标机系统。它电光转换效率高&#xff0c;达到30%以…