Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

用AI打个电话骗走22万欧元,克隆你的语音只需5秒录音

用 AI 打电话真的可以骗到钱?是的。而且,克隆指定人的语音只需要一段 5 秒的录音做样本。

用 AI 打一个电话骗走 22 万欧元

AI 技术的应用门槛正在不断降低,换脸、换声音、生成各种不存在的人像都变得非常容易,但与此同时,犯罪的门槛也降低了。

据《华尔街日报》报道,今年 3 月份,一个不知名的黑客组织利用 AI 语音克隆技术打诈骗电话,结果成功骗到了 22 万欧元。

接电话的是英国能源公司的一名 CEO,在电话中,黑客冒充了该公司母公司董事长,催促该 CEO 紧急进行一笔大额转账,接收方是匈牙利的一家供应商。

黑客要求在 1 小时之内转账,而且他们成功地模仿了那位董事长夹杂德国口音的英语,于是该 CEO 信以为真,将钱打到了指定账户。

得逞之后,他们又联系该 CEO,以董事长的身份告诉他这笔钱会回流到公司账户。

但在资金回流之前,黑客再次冒充董事长打来电话,要求 CEO 再转一笔钱,而且这次是从匈牙利打来的。此时,CEO 感觉事有蹊跷,拒绝了转账要求。然而,之前转给匈牙利供应商的那笔钱已经被转移到了墨西哥和其它几个地方。

警方现在还没有找到犯罪嫌疑人,但所幸,为该公司承保的保险公司愿意赔偿。

克隆语音只需 5 秒的录音样本

随着自然语言处理技术的进步,用 AI 合成特定人声已经不是什么难事。

今年 5 月份,搜狗在一场大会上展示了变声功能,可以把任何人的声音转化成特定声音,让你的声音秒变志玲、马云、高晓松。

而谷歌的一项研究甚至可以借助 5 秒钟的参照语音克隆任意语音。

去年 6 月,谷歌科学家在 arXiv 上发布了一篇迁移学习完成语音合成的论文,提出了一个名为 Speaker Verification to Multispeaker Text-To-Speech(简称 SV2TTS)的框架。它是一个用于零样本(zero-shot)语音克隆的框架,只需要 5 秒钟的参照语音。也就是说,如果你的录音泄露出去,哪怕只有一小段,也很有可能会被坏人利用。

这项全新的语音合成技术能够通任意一段参考音频中提取出说话者的声纹信息,并生成与其相似度极高的合成语音,参考音频与最终合成的语音甚至不必是同一种语言。除了利用参考音频作为输入外,该技术还能随机生成虚拟的声线,以「不存在的说话者」的声音进行语音合成

近日,来自比利时列日大学的研究人员复现了该框架并开源了他们的实现,还提供 GitHub 开源工具箱。他们采用了一个新的声码器模型来调整框架,使其能够实时运行。

  • GitHub 地址:https://github.com/CorentinJ/Real-Time-Voice-Cloning

  • 论文:https://puu.sh/DHgBg.pdf

当然,作者开源的目的肯定不是为了助长犯罪。技术都具有两面性,我们能做的就是提高自己的隐私意识,不要轻易透露自己的各种信息。

谷歌的 SV2TTS 是什么?

SV2TTS 是一种三段式深度学习框架,允许人们从几秒钟的音频中创建语音的数字表征,文字转语音模型使用数字表征进行训练并生成新的语音。

图 7:推理过程中的 SV2TTS 框架。蓝色方块:改进的 Tacotron 架构能够对语音进行调节。

图 8:SV2TTS 的三段式训练流程(根据研究实现)。具有实体轮廓线的模型被冻结。值得注意的是,模型使用不同的参数创建梅尔声谱图(mel spectrograms),作为扬声器编码器和声音合成器的输入。

扬声器编码器

扬声器编码器从单个扬声器的短语音中获得嵌入向量,该嵌入是扬声器语音的意义表征,而相似的语音在隐空间中接近。

模型架构

扬声器编码器模型是一个三层的 LSTM,有 768 个隐藏节点,之后是一个由 256 个单元的映射层。目前尚无论文解释所谓的映射层是什么,因此根据研究者的判断,这种映射层只是全连接层,分别连接在每个 LSTM 层之后,接收上一个 LSTM 层的输出。为了快速建模,研究人员刚开始使用了有 256 个单元的 LSTM。他们发现,更小模型的效果极好。目前他们尚无时间去训练一个更大的模型。

扬声器编码器在扬声器验证任务上接受训练。扬声器验证是一种典型的生物鉴定应用,通过鉴定人声判定人的身份。通过从人的一些话语中获取扬声器嵌入,进而可以创建此人的模板。这个过程被称为登入(enrollment)。在运行过程中,用户说出一些话,并且系统会对这段话语的嵌入与已登入的扬声器嵌入进行比较。如果两个嵌入向量的相似度超过给定的阈值,则用户验证成功。GE2E loss 模拟这一过程,作为模型的目标函数

图 9:训练期间构建相似度矩阵的过程。

图 10:计算一段完整话语的嵌入向量。d-vector 是该扬声器编码器模型的非归一化输出。

实验

为了避免从语音中采样时出现基本无声的音频片段,研究者使用 webrtcvad Python 包执行语音活动检测(VAD)。这将在音频上产生一个二进制标志,用来表示片段有无声音。他们在这个二进制标志上执行一个移动平均数,从而使检测中的短峰值(short spike)趋于平滑,然后再次对其进行二值化。最后,他们扩展了内核大小为 s+1 的标志,其中 s 表示所允许的最大沉默持续时间。之后,研究者对音频的无声部分进行修剪。结果发现,值 s =0.2s 时是一个好的选择,能够保持自然的语音韵律。具体过程如图 11 所示。应用于音频波形的最后一个预处理步骤是归一化(normalization),用于弥补数据集中扬声器产生的不同的音量。

图 11:从上到下是利用 VAD 消除静音的步骤。橙色线条代表二进制语音标志,轴上面的值表示有声片段,轴下面的值表示无声片段。

表 2:扬声器编码器在不同数据集上的训练。LS 表示 LibriSpeech,VC 表示 VoxCeleb。合成器在 LS-Clean 上进行训练并在一个测试集上进行评估。「黑点」标注的行是研究者想要复现的实现对象。

合成器

合成器是移除了 Wavenet 的 Tacotron 2。研究者使用了 Tacotron 2 的一个开源 Tensorflow 实现,从中剥离 Wavenet 并添加了 SV2TTS。

模型架构

Tacotron 是一个循环的序列到序列模型,它能够从文本中预测梅尔声谱图。Tacotron 是编码器-解码器结构(并非 SV2TTS 的扬声器编码器),中间由位置敏感的注意力机制连接。首先,输入为文本序列,其中的字符首先转换为嵌入向量。随后嵌入向量通过卷积层,用于增加单个编码器帧的范围。通过卷积层之后的编码器帧再通过双向 LSTM,生成编码器输出帧。SV2TTS 对架构进行修改的地方在于,这里由扬声器嵌入帧级联编码器输出帧,作为 Tacotron 编码器的输出。

注意力机制对编码器输出帧进行处理,以生成解码器输入帧。每个解码器输入帧和经过 pre-net 的前一个解码器帧输出级联,使模型实现自回归。这个级联向量通过两个单向 LSTM 层,然后映射到梅尔声图谱帧。级联向量同时映射到一个标量(scalar)上,使网络预测一个值,如果该值超过设定阈值,则停止生成。整个帧序列在转换为梅尔声谱图前通过残差 post-net 传递。体系架构如图 15 所示:

图 15:修改版 Tacotron 架构。蓝色方块对应编码器,橙色方块对应解码器。

实验

在 SV2TTS 中,研究者考虑以两个数据集来训练合成器和声码器,它们分别是 LibriSpeech-Clean 和 VCTK(一个由专业设备记录的仅包含 109 位英语母语者的语料库)。VCTK 数据集上的采样率为 48kHz,实验中降至 24kHz,但仍高于 LibriSpeech 数据集上的 16kHz 采样率。研究者发现,就相似性来说,在 LibriSpeech 数据集上训练的合成器生成效果优于 VCTK 数据集,但损失了语音自然度。他们的评估方法是在一个数据集上训练合成器,在另一个数据集上测试。结果如表 3 所示:

表 3:对未见的扬声器的生成声音的自然度和与扬声器相似性进行跨数据集评估。

数据集上语音片段长度的分布如图 16 所示。注意,无声状态持续时间为 64 小时(13.7%)。

图 16:(左)LibriSpeech-Clean 数据集上话语持续时间直方图;(中):无声状态打破后持续时间直方图;(右)限制语音片段长度和重新调整后的持续时间直方图。

虽然参考语音的「最佳」持续时间为 5 秒,但参考语音长度仅为 2 秒时,嵌入向量就可以显示出意义,如表 4 所示。

表 4:参考语音持续时间的影响。在 VCTK 数据集上进行评估。

研究者观察到,该模型在非正式听力测试中生成了正确输出,但正式评估需要设置主观分数投票(subjective score poll)来获得主观平均得分(MOS)。但对于合成器来说,人们还可以验证注意力模块是否生成了正确的对齐方式。示例见图 17:

图 17:(左)编码器步骤和解码器步骤之间的数轴对应;(右)GTA 预测声谱图和 ground truth 声谱图之间的比较。

通过计算合成语音的嵌入并利用 UMAP 将它们与 ground truth 嵌入共同映射,研究者能够进一步观察一些语音特征随 Griffin-Lim 算法丧失。示例见图 18:

图 18:ground truth 嵌入的映射以及由相同 ground truth 嵌入生成的 Griffin-Lim 算法合成语音嵌入的映射Ground truth 嵌入用圆圈表示,合成嵌入用叉号表示。

声码器

在 SV2TTS 和 Tacotron2 中,WaveNet 是声码器。自推出以来,WaveNet 一直都是音频深度学习的核心,并在 TTS 的语音自然性方面保持当前最优水平。但是,WaveNet 也是推理时速度最慢的实用型深度学习架构。之后的研究对这方面进行了改进,使生成速度接近或快于实时速度,生成语音的质量则几乎没有影响。尽管如此,WaveNet 在 SV2TTS 中依然作为声码器,因为速度不是主要的考虑因素,并且 Google 自己的 WaveNet 实现进行了各种改进,每秒钟能够生成 8,000 个样本。这与 Vanilla WaveNet 形成对比,后者每秒最多能够生成 172 个步骤。在撰写本文时,WaveNet 的大多数开源实现依然是 Vanilla 实现。

模型架构

在 WaveRNN 中,WaveNet 的全部 60 个卷积被一个 GRU 层替代。WaveNet 的 MOS 值为 4.51 ± 0.08,而最佳的 WaveRNN 模型的 MOS 值为 4.48 ± 0.07。模型输入的是由合成器生成的 GTA met 声谱图,以 ground truth 音频为目标。模型在训练时预测固定大小的波形片段。在粗精方案(coarse-fine scheme)中,WaveRNN 的前向传递通过 N = 5 的矩阵向量乘积来实现,其中首先对 16 位目标样本的较低 8 位(粗)进行预测,然后据此对较高 8 位(精)的预测进行调整。预测包含对输出进行采样的分布参数

图 19:张量的批采样。注意,折叠张量在两段的交接处出现重叠。

备选的 WaveRNN 是研究者所使用的架构。由于该架构缺少相关文档或论文,研究者依赖源代码和图 20 中的图表来理解其内部运行原理。

图 20:备选的 WaveRNN 架构。

实验

在处理短话语时,声码器的运行速度通常低于实时速度。推理速度高度依赖于批采样过程中的折叠次数。事实上,就折叠次数而言,声码器网络几乎是在恒定时间内运行,并且随着折叠次数的增加,时间只有少量增加。研究者发现讨论阈值持续时间更加简单,超过该阈值持续时间则模型实时运行。研究者设置的阈值持续时间为 12.5 秒,意味着如果话语短于该阈值,则模型的运行速度将慢于实时速度。在 PyTorch 上,模型性能似乎出人意料地随环境因素(如操作系统)而变化,所以研究者展示了单个相同配置下的结果。

工具箱和开源

最后,研究者正在开发出一个图形界面,用户不需要率先进行研究即可以快速获取该框架。他们称之为「SV2TTS 工具箱」,其界面如图 21 所示。SV2TTS 工具箱使用 Python 语言编写,具有 Qt4 图像界面,可跨平台。

图 21:SV2TTS 工具箱界面。

理论语音合成语音变声谷歌
相关数据
搜狗机构

搜狗是中国互联网领先的搜索、输入法、浏览器和其它互联网产品及服务提供商。从2004年8 月搜狐公司推出全球首个第三代互动式中文搜索引擎——搜狗搜索以来,历经十余载,搜狗搜索已发展成为中国第二大搜索引擎。根据艾瑞咨询2016年12月数据,搜狗PC用户规模达5.28亿,仅次于腾讯,成为中国第二大互联网公司。移动端APP用户仅次于腾讯,成为中国互联网快速发展的标杆性企业。

http://corp.sogou.com/
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

二值化技术

二值化是将像素图像转换为二进制图像的过程。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

语音合成技术

语音合成,又称文语转换(Text to Speech)技术,是将人类语音用人工的方式所产生,能将任意文字信息实时转化为标准流畅的语音朗读出来,相当于给机器装上了人工嘴巴。它涉及声学、语言学、数字信号处理、计算机科学等多个学科技术,是信息处理领域的一项前沿技术,解决的主要问题就是如何将文字信息转化为可听的声音信息,也即让机器像人一样开口说话。

注意力机制技术

我们可以粗略地把神经注意机制类比成一个可以专注于输入内容的某一子集(或特征)的神经网络. 注意力机制最早是由 DeepMind 为图像分类提出的,这让「神经网络在执行预测任务时可以更多关注输入中的相关部分,更少关注不相关的部分」。当解码器生成一个用于构成目标句子的词时,源句子中仅有少部分是相关的;因此,可以应用一个基于内容的注意力机制来根据源句子动态地生成一个(加权的)语境向量(context vector), 然后网络会根据这个语境向量而不是某个固定长度的向量来预测词。

张量技术

张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 维空间内,有 个分量的一种量,其中每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。称为该张量的秩或阶(与矩阵的秩和阶均无关系)。 在数学里,张量是一种几何实体,或者说广义上的“数量”。张量概念包括标量、矢量和线性算子。张量可以用坐标系统来表达,记作标量的数组,但它是定义为“不依赖于参照系的选择的”。张量在物理和工程学中很重要。例如在扩散张量成像中,表达器官对于水的在各个方向的微分透性的张量可以用来产生大脑的扫描图。工程上最重要的例子可能就是应力张量和应变张量了,它们都是二阶张量,对于一般线性材料他们之间的关系由一个四阶弹性张量来决定。

映射技术

映射指的是具有某种特殊结构的函数,或泛指类函数思想的范畴论中的态射。 逻辑和图论中也有一些不太常规的用法。其数学定义为:两个非空集合A与B间存在着对应关系f,而且对于A中的每一个元素x,B中总有有唯一的一个元素y与它对应,就这种对应为从A到B的映射,记作f:A→B。其中,y称为元素x在映射f下的象,记作:y=f(x)。x称为y关于映射f的原象*。*集合A中所有元素的象的集合称为映射f的值域,记作f(A)。同样的,在机器学习中,映射就是输入与输出之间的对应关系。

语料库技术

语料库一词在语言学上意指大量的文本,通常经过整理,具有既定格式与标记;事实上,语料库英文 "text corpus" 的涵意即为"body of text"。

操作系统技术

操作系统(英语:operating system,缩写作 OS)是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。

目标函数技术

目标函数f(x)就是用设计变量来表示的所追求的目标形式,所以目标函数就是设计变量的函数,是一个标量。从工程意义讲,目标函数是系统的性能标准,比如,一个结构的最轻重量、最低造价、最合理形式;一件产品的最短生产时间、最小能量消耗;一个实验的最佳配方等等,建立目标函数的过程就是寻找设计变量与目标的关系的过程,目标函数和设计变量的关系可用曲线、曲面或超曲面表示。

迁移学习技术

迁移学习是一种机器学习方法,就是把为任务 A 开发的模型作为初始点,重新使用在为任务 B 开发模型的过程中。迁移学习是通过从已学习的相关任务中转移知识来改进学习的新任务,虽然大多数机器学习算法都是为了解决单个任务而设计的,但是促进迁移学习的算法的开发是机器学习社区持续关注的话题。 迁移学习对人类来说很常见,例如,我们可能会发现学习识别苹果可能有助于识别梨,或者学习弹奏电子琴可能有助于学习钢琴。

自然语言处理技术

自然语言处理(英语:natural language processing,缩写作 NLP)是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言;自然语言认知则是指让电脑“懂”人类的语言。自然语言生成系统把计算机数据转化为自然语言。自然语言理解系统把自然语言转化为计算机程序更易于处理的形式。

序列到序列技术

推荐文章
暂无评论
暂无评论~