机器之心编辑部

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

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

AI 技能的运用门槛正在不断降落,换脸、换声音、天生各种不存在的人像都变得非常随意马虎,但与此同时,犯罪的门槛也降落了。

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

据《华尔街日报》宣布,今年 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 图像界面,可跨平台。