声纹识别的对抗与防御
随着机器学习理论和方法的发展, 出现了用于模仿特定说话人语音的深度伪造、针对语音识别和声纹识别的对抗样本, 它们都为破坏语音载体的可信性和安全性提供了具体手段, 进而对各自应用场景的信息安全构成了挑战。
深度伪造是利用生成式对抗网络等方法, 通过构建特定的模型, 产生听起来像目标说话人的语音样本。之所以称之为伪造, 是因为目标说话人根本没有说过这些话。深度伪造的欺骗对象主要是人耳听觉, 也可以用于导致声纹识别系统出错。与深度伪造不同, 语音对抗样本旨在通过对载体信号引入微小的扰动, 使语音识别或声纹识别系统出现。特定的差错, 但并不影响人耳对该语音样本的听觉感知。相对于深度伪造, 利用声纹识别系统自身的脆弱性,声纹系统对抗样本的攻击具有很强的隐蔽性。
1、声纹识别的对抗样本攻击
1.1 研究现状
白盒攻击中, 攻击者完全了解被攻击模型的结构、参数、损失函数和梯度等信息, 利用被攻击白盒模型的结构和参数信息构建对抗样本生成算法,从而有指导性地修改原始样本, 以生成对抗样本。在黑盒攻击中, 攻击者不掌握被攻击模型的结构、参数等内部信息, 只能通过利用白盒模型对抗样本的迁移性, 或利用黑盒模型的输出结果训练替代模型等方式来生成对抗样本。在现实场景中, 攻击者难以获取被攻击模型的内部信息, 因此黑盒攻击相对于白盒攻击难度更高, 但也更符合实际。
| 方法 | 对抗知识 | 优点 | 缺点 |
| 基于梯度/迭代优化 | 白盒 | 攻击成功率高、信噪比高 | 需要访问模型结构,迭代计算对抗扰动,生成 对抗样本的时间长,容易被检测 |
| 基于生成网络 | 白盒 | 生成对抗样本的时间短 | 攻击成功率和信噪比难以平衡 |
| 基于查询 | 黑盒 | 不需访问梯度,仅靠置信度或决策就可以实现攻击 | 攻击成功率较低;查询过多时容易被检测到 |
| 基于迁移性 | 黑盒 | 不需要访问目标模型结构 | 对抗样本迁移性弱,黑盒攻击成功率低 |
1.2 关键技术路线

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

- 模型逆向工程:攻击者首先需要了解目标说话人识别系统的内部结构和参数。由于是对抗性攻击,攻击者可能需要访问模型的权重和架构,以便更好地设计攻击。
- 确定攻击目标:攻击者确定他们想要系统误解的具体说话人,例如,他们可能希望系统将说话人A误认为说话人B。
- 构建对称显著性模块:在SSED中,显著性模块用于突出显示语音信号中对说话人识别最重要的部分。在对抗性攻击中,这个模块可以被用来识别那些对模型预测影响最大的特征,从而在这些特征上引入扰动。
- 优化过程:通过梯度下降或其他优化算法,攻击者在保持语音变化不可察觉的同时,寻找能够最小化损失函数的对抗性扰动。损失函数通常包括两部分:一部分是针对说话人识别任务的错误分类损失,另一部分是针对语音变化的感知损失,以确保扰动对人类听众来说是不可察觉的。
- 生成对抗性样本:一旦找到最佳扰动,攻击者将其添加到原始语音中,生成对抗性样本。
- 攻击评估:最后,攻击者评估生成的对抗性样本是否能够成功地欺骗说话人识别系统,使其做出错误的预测。
-
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会识别并去除信号中可能是对抗性扰动的部分,从而净化声纹信号。
- 声纹识别:将净化后的声纹信号输入到声纹识别模型中,进行说话人识别。
相关文章:
声纹识别的对抗与防御
随着机器学习理论和方法的发展, 出现了用于模仿特定说话人语音的深度伪造、针对语音识别和声纹识别的对抗样本, 它们都为破坏语音载体的可信性和安全性提供了具体手段, 进而对各自应用场景的信息安全构成了挑战。 深度伪造是利用生成式对抗网络等方法, 通过构建特定的模型, 产生…...
C++ QT设计模式总结
Ciallo~(∠・ω< )⌒★,这里是 Eureka,欢迎来看我的设计模式总结,有问题随时可以告诉我~ 面向对象的设计模式: 以下总结了面向对象的设计模式, QT 的源码在哪里体现了这些模式,以及如何在 …...
洛谷 P3203:弹飞绵羊 ← 分块算法(单点更新、单点查询)
【题目来源】https://www.acwing.com/problem/content/2168/https://www.luogu.com.cn/problem/P3203【题目描述】 某天,Lostmonkey 发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏。 游戏一开始,L…...
程序验证之Dafny--证明霍尔逻辑的半自动化利器
一、What is Dafny?【来自官网介绍 Dafny 】 1)介绍 Dafny 是一种支持验证的编程语言,配备了一个静态程序验证器。 通过将复杂的自动推理与熟悉的编程习语和工具相结合,使开发者能够编写可证明正确的代码(相对于 {P}S{Q} 这种…...
Flutter 中的 SafeArea 小部件:全面指南
Flutter 中的 SafeArea 小部件:全面指南 在移动应用开发中,处理设备屏幕的边缘是一个常见的挑战,尤其是考虑到现代设备通常具有不同的屏幕形状,如刘海屏、曲面屏等。为了确保应用内容不会覆盖这些屏幕区域,Flutter 提…...
webpack生成模块关系依赖图示例:查看构建产物的组成部分 依赖关系图
npm i -D webpack-bundle-analyzer core-js babel-loaderwebpack.config.js const BundleAnalyzerPlugin require(webpack-bundle-analyzer).BundleAnalyzerPlugin; module.exports {entry: ./src/index.js,output: {filename: main.js,},// mode: production, // 或者 produ…...
Spacy的安装与使用教程
官网安装指导教程 https://spacy.io/usage 安装指令 需要根据自己系统的cuda版本选择 nvcc -V pip install -U pip setuptools wheel pip install -U spacy[cuda12x] python -m spacy download zh_core_web_sm python -m spacy download en_core_web_sm...
Pathlib,一个不怕迷路的 Python 向导
大家好!我是爱摸鱼的小鸿,关注我,收看每期的编程干货。 一个简单的库,也许能够开启我们的智慧之门, 一个普通的方法,也许能在危急时刻挽救我们于水深火热, 一个新颖的思维方式,也许能…...
详解绝对路径和相对路径的区别
绝对路径和相对路径是用于描述文件或目录在文件系统中位置的两种不同方式。 绝对路径(Absolute Path)是从文件系统的根目录开始的完整路径,可以唯一地确定一个文件或目录的位置。在不同的操作系统中,根目录的表示方式可能略有不同…...
C++二叉搜索树搜索二叉树二叉排序树
C二叉搜索树 1. 二叉搜索树的概念 二叉搜索树(BST,Binary Search Tree),也称为二叉排序树或二叉查找树。它与一般二叉树的区别在于:每个结点必须满足“左孩子大于自己,右孩子小于自己”的规则。在这种规则的约束下,二…...
Java 自然排序和比较器排序区别?Comparable接口和Comparator比较器区别?
注:如果你对排序不理解,请您耐心看完,你一定会明白的。文章通俗易懂。建议用idea运行一下案例。 1)自然排序和比较器排序的区别? 自然排序是对象本身定义的排序规则,由对象实现 Comparable 接口ÿ…...
【CV】opencv调用DIS/LK等计算光流,前一帧和当前帧写反了有什么影响?
当在计算光流时,将前一帧和当前帧输入反了,会导致一系列问题。 在计算光流时,通常是将前一帧作为模板,根据当前帧计算光流。因为光流是描述相邻帧之间像素移动的一种方法,它通过比较两帧之间的像素强度或特征点的移动…...
C语言学习细节|C语言面向对象编程!函数指针如何正确使用
文章目录 1.函数指针定义2.格式3.应用回调函数动态函数调用函数的间接调用 4.结构体与函数指针结合 1.函数指针定义 函数指针就是一个指向函数的指针变量,与指向数据的指针不同,函数指针保存的是函数的地址,这使得程序可以动态地调用不同的函…...
C语言简要(一)
总得让她开心吧 helloworld #include <stdio.h>int main() {printf("hello world!\n");return 0; } 程序框架 #include <stdio.h> int main {return 0; }输出 printf("hello world!\n"); "里面的内容叫做“字符串”,prin…...
那些年我与c++的叫板(一)--string类自实现
引子:我们学习了c中的string类,那我们能不能像以前数据结构一样自己实现string类呢?以下是cplusplus下的string类,我们参考参考! 废话不多说,直接代码实现:(注意函数之间的复用&…...
二刷算法训练营Day08 | 字符串(1/2)
今日任务: 344.反转字符串 541. 反转字符串II卡码网:54.替换数字 151.翻转字符串里的单词卡码网:55.右旋转字符串 详细布置: 1. 344. 反转字符串 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 …...
使用高防IP是应对网络安全的重要措施
使用高防IP(High Defense IP)在现代网络环境中显得尤为重要,这主要源于以下几个方面的原因: 一、网络安全形势严峻 随着互联网的快速发展,网络安全问题日益突出。各种网络攻击手段层出不穷,如分布式拒绝服…...
代码随想录-算法训练营day40【动态规划03:整数拆分、不同的二叉搜索树】
代码随想录-035期-算法训练营【博客笔记汇总表】-CSDN博客 第九章 动态规划part03● 343.整数拆分 ● 096.不同的二叉搜索树 详细布置 今天两题都挺有难度,建议大家思考一下没思路,直接看题解,第一次做,硬想很难想出来。343. 整数…...
MySQL数据库中基本数据管理操作
使用SQL语句实现基本数据管理操作——即DML语句 1.添加数据 insert into 表名(字段名称,字段名称,字段名称)values(数据,数据,数据) 在MySQL数据库中,除了数字&#x…...
记录一下Hql遇到的零碎问题
建表相关 -- 地区维度表 drop table dim_province_full; create table dim_province_full( id string comment 编号, name string comment 省份名称, region_id string comment 大区id, area_code string comment 行政区位码, iso_code string comment 国际编码, iso_3166_2 s…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
