声纹识别的对抗与防御

       随着机器学习理论和方法的发展, 出现了用于模仿特定说话人语音的深度伪造、针对语音识别和声纹识别的对抗样本, 它们都为破坏语音载体的可信性和安全性提供了具体手段, 进而对各自应用场景的信息安全构成了挑战。

     深度伪造是利用生成式对抗网络等方法, 通过构建特定的模型, 产生听起来像目标说话人的语音样本。之所以称之为伪造, 是因为目标说话人根本没有说过这些话。深度伪造的欺骗对象主要是人耳听觉, 也可以用于导致声纹识别系统出错。与深度伪造不同, 语音对抗样本旨在通过对载体信号引入微小的扰动, 使语音识别或声纹识别系统出现。特定的差错, 但并不影响人耳对该语音样本的听觉感知。相对于深度伪造, 利用声纹识别系统自身的脆弱性,声纹系统对抗样本的攻击具有很强的隐蔽性

1、声纹识别的对抗样本攻击

1.1 研究现状

      白盒攻击中, 攻击者完全了解被攻击模型的结构、参数、损失函数和梯度等信息, 利用被攻击白盒模型的结构和参数信息构建对抗样本生成算法,从而有指导性地修改原始样本, 以生成对抗样本。在黑盒攻击中, 攻击者不掌握被攻击模型的结构、参数等内部信息, 只能通过利用白盒模型对抗样本的迁移性, 或利用黑盒模型的输出结果训练替代模型等方式来生成对抗样本。在现实场景中, 攻击者难以获取被攻击模型的内部信息, 因此黑盒攻击相对于白盒攻击难度更高, 但也更符合实际。

方法

对抗知识

优点

缺点

基于梯度/迭代优化

白盒

攻击成功率高、信噪比高

需要访问模型结构,迭代计算对抗扰动,生成

对抗样本的时间长,容易被检测

基于生成网络

白盒

生成对抗样本的时间短

攻击成功率和信噪比难以平衡

基于查询

黑盒

不需访问梯度,仅靠置信度或决策就可以实现攻击

攻击成功率较低;查询过多时容易被检测到

基于迁移性

黑盒

不需要访问目标模型结构

对抗样本迁移性弱,黑盒攻击成功率低

1.2 关键技术路线

1.3 白盒攻击

下图展示Symmetric Saliency-based Adversarial Attack to Speaker Identification 是一种针对说话人识别系统的对抗性攻击方法:

  • 模型逆向工程:攻击者首先需要了解目标说话人识别系统的内部结构和参数。由于是对抗性攻击,攻击者可能需要访问模型的权重和架构,以便更好地设计攻击。
  • 确定攻击目标:攻击者确定他们想要系统误解的具体说话人,例如,他们可能希望系统将说话人A误认为说话人B。
  • 构建对称显著性模块:在SSED中,显著性模块用于突出显示语音信号中对说话人识别最重要的部分。在对抗性攻击中,这个模块可以被用来识别那些对模型预测影响最大的特征,从而在这些特征上引入扰动。
  • 优化过程:通过梯度下降或其他优化算法,攻击者在保持语音变化不可察觉的同时,寻找能够最小化损失函数的对抗性扰动。损失函数通常包括两部分:一部分是针对说话人识别任务的错误分类损失,另一部分是针对语音变化的感知损失,以确保扰动对人类听众来说是不可察觉的。
  • 生成对抗性样本:一旦找到最佳扰动,攻击者将其添加到原始语音中,生成对抗性样本。
  • 攻击评估:最后,攻击者评估生成的对抗性样本是否能够成功地欺骗说话人识别系统,使其做出错误的预测。
  1. 1.4 黑盒攻击

下图展示Interpretable Spectrum Transformation Attacks to Speaker Recognition 是一种针对说话人识别系统的对抗性攻击方法。说话人识别系统通常基于语音信号中的频谱特征来识别不同的说话人

  • 选择目标说话人:攻击者首先确定他们想要系统误解的具体说话人,例如,他们可能希望系统将说话人A误认为说话人B。
  • 构建频谱转换模型:攻击者构建一个频谱转换模型,该模型能够将目标说话人的语音频谱转换为攻击目标说话人的频谱。这个模型可以是基于深度学习的,如神经网络或卷积神经网络。
  • 优化过程:通过梯度下降或其他优化算法,攻击者在保持语音内容不变的同时,寻找能够最小化损失函数的频谱转换。损失函数通常包括两部分:一部分是针对说话人识别任务的错误分类损失,另一部分是针对语音内容的损失,以确保语音内容的不变性。
  • 生成对抗性样本:一旦找到最佳频谱转换,攻击者将其应用于原始语音,生成对抗性样本。
  • 攻击评估:攻击者评估生成的对抗性样本是否能够成功地欺骗说话人识别系统,使其做出错误的预测。

2、声纹识别的对抗样本防御

2.1 研究现状

      声纹识别的对抗样本防御是指采取一系列措施来增强声纹识别系统对对抗性攻击的鲁棒性。防御策略可以单独使用,也可以组合使用,以提高声纹识别系统对对抗性攻击的鲁棒性。

方法

研究方向

优点

缺点

纯化

提高语音纯化质量

对任何样本都 可以进行有效声纹判定

对任意样本都进行语音纯化,可能造成声纹识别系统性能下降,

检测

改进检测模型

不改变样本

被误判的纯净样本会被丢弃

混合训练

改进训练数据的合成方法

声纹识别模型,自带防御功能

模型训练规模大,对抗样本造成声纹识别模型精度下降

2.2 纯化防御

纹识别的对抗样本防御中,扩散(Diffusion)模型纯化利用了扩散模型在生成高质量语音方面的能力,以净化对抗性扰动,从而提高声纹识别系统的鲁棒性。

扩散模型是一种深度学习模型,它通过迭代去噪的过程来生成数据。在声纹识别的背景下,扩散模型首先将干净的声纹信号逐渐添加噪声,直到信号变成随机噪声,然后将这些噪声逐渐去噪,恢复出原始的声纹信号。这个过程可以看作是对声纹信号的纯化,因为它可以去除声纹信号中的噪声和扰动。

Diffusion模型纯化

两阶段 diffusion模型纯化

大语言模型驱动的diffusion模型纯化

  • 对抗样本生成:首先,使用特定的对抗攻击方法生成对抗性声纹样本。这些样本在人类听起来与原始语音几乎相同,但能够导致声纹识别模型错误地识别说话人。
  • 扩散过程:将生成的对抗性声纹样本输入到扩散模型中,通过迭代添加噪声,将样本逐渐转换为随机噪声。
  • 去噪过程:在去噪过程中,扩散模型将噪声逐渐去除,尝试恢复出原始的声纹信号。由于扩散模型在生成声纹信号时已经学习了声纹信号的本质特征,因此它可以在去噪过程中识别并去除对抗性扰动。
  • 声纹识别:将去噪后的声纹样本输入到声纹识别模型中,进行说话人识别

2.3 检测防御

基于可学习Mask的对抗样本检测方法的核心思想是利用可学习的Mask来识别和去除声纹信号中的对抗性扰动,从而保护声纹识别系统不受攻击

  • 训练可学习Mask:首先,需要训练一个可学习的Mask。这个Mask是一个神经网络,它能够学习如何识别声纹信号中的对抗性扰动。训练数据包括正常的声纹信号和被对抗性攻击污染的声纹信号。通过训练,Mask学会了识别和去除对抗性扰动。
  • 声纹信号输入:当一个新的声纹信号输入到系统时,首先通过可学习Mask进行处理。Mask会识别并去除信号中的对抗性扰动,从而净化声纹信号。
  • 声纹识别:将净化后的声纹信号输入到声纹识别模型中,进行说话人识别。

基于规则Mask的对抗样本检测方法的核心思想是利用预先定义的规则来生成Mask,这个Mask用于识别和去除声纹信号中的对抗性扰动,从而保护声纹识别系统不受攻击。

  • 定义规则:首先,需要定义一组规则,这些规则用于确定哪些部分的声纹信号可能是对抗性扰动。这些规则可以是基于声学特征的,例如音高、能量、频谱特性等,或者是基于信号处理的技术,例如滤波、傅里叶变换等。
  • 生成规则Mask:根据定义的规则,生成一个规则Mask。这个Mask是一个矩阵,它将声纹信号中的每个部分标记为正常或异常。规则Mask可以通过编程实现,也可以通过机器学习算法学习得到。
  • 声纹信号输入:当一个新的声纹信号输入到系统时,首先通过规则Mask进行处理。规则Mask会识别并去除信号中可能是对抗性扰动的部分,从而净化声纹信号。
  • 声纹识别:将净化后的声纹信号输入到声纹识别模型中,进行说话人识别。

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

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

相关文章

【爬虫之scrapy框架——尚硅谷(学习笔记one)--基本步骤和原理+爬取当当网(基本步骤)】

爬虫之scrapy框架——基本原理和步骤爬取当当网(基本步骤) 下载scrapy框架创建项目(项目文件夹不能使用数字开头,不能包含汉字)创建爬虫文件(1)第一步:先进入到spiders文件中&#x…

Python多任务

进程 1. 进程的概念 一个正在运行的程序或者软件就是一个进程,它是操作系统进行资源分配的基本单位,也就是说每启动一个进程,操作系统都会给其分配一定的运行资源(内存资源)保证进程的运行。 比如:现实生活中的公司可以理解成是一个进程&a…

机器学习回归模型代码理解——三阶多项式拟合`y = sin(x)`

机器学习回归模型代码理解——三阶多项式拟合y sin(x) 先上代码: # -*- coding: utf-8 -*- import numpy as np import math# 创建随机输入值和输出数据 x np.linspace(-math.pi, math.pi, 2000) y np.sin(x)# 随机初始化权重 a np.random.randn() b np.rand…

什么是枚举?列举几个枚举的使用场景

枚举(Enumeration) 是一种特殊的数据类型,它允许你为一组相关的值定义名称。在编程中,枚举类型通常用于表示固定数量的常量值。这些值在枚举类型中是唯一的,并且它们的名称在类型上是关联的。 枚举的使用场景多种多样…

OpenAI 发布新款大型语言模型 GPT-4o,带大家了解最新ChatGPT动态。

OpenAI 发布新款大型语言模型 GPT-4o 昨日OpenAI 举办了一场线上活动,正式发布了其最新研发的 AI 模型 GPT-4o,并详细介绍了该模型的强大功能和未来发展规划。此次发布标志着 AI 技术的重大突破,为用户提供了更加便捷、高效的 AI 工具&#…

一张表搞定物业巡检?没错,就是这么神奇!

在车水马龙的城市中,高楼大厦鳞次栉比,它们不仅为城市形成一道风景线,也是我们日常工作与生活的家园。然而,在这背后,有一群默默付出的物业工作人员,用责任和担当守护着我们的安全与舒适。而在物业日常工作…

STM32IAP学习笔记

单片机不同的程序下载方式 ICP ICP是指在电路中编程。使用厂家配套的软件或仿真器进行程序烧录,目前主流的有JTAG接口和SWD接口,常用的烧录工具为J-Link、ST-Link等。在程序开发阶段,通常在连接下载器的情况下直接使用编程软件进行程序下载调…

护照OCR识别接口如何对接

护照OCR识别接口也叫护照文字识别OCR,指的是传入护照照片,精准识别静态护照图像上的文字信息,包括姓名、签发地点、签发机关、护照号码、签发日期等信息。那么护照文字识别OCR接口如何对接呢? 首先我们找到一家有护照OCR识别接口的服务商数脉…

【万字面试题】Redis

文章目录 常见面试题布隆过滤器原理和数据结构:特点和应用场景:缺点和注意事项:在python中使用布隆过滤器 三种数据删除策略LRU (Least Recently Used)工作原理:应用场景: LFU (Least Frequently Used)工作原理&#x…

Navicat16小白式安装和激活详解《简单》

简介: Navicat 是一款强大的数据库管理和开发工具,它支持多种数据库系统,包括 MySQL、MariaDB、MongoDB、SQL Server、Oracle、PostgreSQL 以及 SQLite。Navicat 提供了图形界面(GUI)来简化数据库的管理、操作和维护。…

柔性数组+结构体类型转换

柔性数组&#xff1a;在结构体中声明的时候仅作为占位符&#xff0c;好处是地址是连续的 强制类型转换&#xff1a;可用于通信双方进行信息交流 #include <iostream> #include <string.h>struct DataWater {int count;float size;char buf[0]; }; // dbuf相当于是…

MYSQL中的DQL

语法&#xff1a; select 字段列表 from 表名列表 where 条件列表 group by 分组字段列表 having 分组后条件列表 order by 排序字段 limit 分页参数 条件查询 语法&#xff1a; 查询多个字段&#xff1a;select 字段1&#xff0c;字段2 from表名 查询所有字段&#xff1a…

“打工搬砖记”中首页的功能实现(一)

文章目录 打工搬砖记秒薪的计算文字弹出动画根据时间数字变化小结 打工搬砖记 先来一个小程序首页预览图&#xff0c;首页较为复杂的也就是“秒薪”以及弹出文字的动画。 已上线小程序“打工人搬砖记”&#xff0c;进行预览观看。 秒薪的计算 秒薪计算公式&#xff1a;秒薪…

Spring常见的注解

前言 在当今的软件开发领域&#xff0c;Spring框架已经成为了Java开发中不可或缺的重要工具之一。其优秀的设计和丰富的功能使得开发者能够更加高效地构建出稳健、可扩展的企业级应用程序。而Spring框架的注解机制&#xff0c;则是其灵活性和便捷性的重要体现之一。 本文将深入…

RPA的全新形态—Agent智能体:当机器人开始“听”话

随着人工智能技术的不断进步&#xff0c;RPA正迈向其全新形态——Agent智能体。想象一下&#xff0c;如果你的日常工作中有一个智能助手&#xff0c;它不仅能理解你的需求&#xff0c;还能自动帮你完成那些繁琐的任务&#xff0c;这会是怎样的体验&#xff1f;这就是RPA技术正在…

SpringBoot+Mock Mvc测试web接口增删改查、导入导出

需求&#xff1a; 使用Mock Mvc单元测试web接口的增删改查、导入、导出功能&#xff0c;涵盖登录 token header赋值等全流程 1&#xff0c;引入核心依赖 <!-- 单元测试 --><dependency><groupId>junit</groupId><artifactId>junit</artifac…

从零创建一个vue2项目

标题从零创建一个vue2项目&#xff0c;项目中使用TensorFlow.js识别手写文字 npm切换到淘宝镜像 npm config set registry https://registry.npm.taobao.org安装vue/cli -g npm install -g vue/cli检查是否安装成功 vue -V创建项目 vue create 项目名安装TensorFlow npm …

RAC中Voting盘相关总结

一、概述 在Oracle RAC&#xff08;Real Application Clusters&#xff09;环境中&#xff0c;"voting盘" 是用于存储集群的心跳信息和状态信息的特殊磁盘。每个节点都可以访问并共享此磁盘上的数据。voting盘在Oracle RAC中扮演着至关重要的角色&#xff0c;用于维护…

cpp笔记-24-05-10

1、public —— 外部也能访问 2、private —— 只能内部&#xff08;友元也可以&#xff09; 3、explicit —— 只可用于声明単参构造函数。声明类的构造函数是显示调用&#xff0c;不是隐式。阻止调用构造函数时隐式转换&#xff08;赋值初始化&#xff09; 4、默认构造函数…

Arduino-ILI9341驱动-SPI接口TFTLCD实现触摸功能系列之触控开关二

Arduino-ILI9341驱动-SPI接口TFTLCD实现触摸功能系列之触控开关二 1.概述 这篇文章在触摸屏上绘制一个开关&#xff0c;通过点击开关实现控制灯的开关功能。 2.硬件 硬件连接参考第一篇文章介绍 Arduino-ILI9341驱动-SPI接口TFTLCD实现触摸功能系列之获取触控坐标一 3.实现…