一段被造出来的声音
人声是靠叠加谐波、再让它们像声道那样共振造出来的。这个演示把同一个声音造两遍,一遍粗糙一遍精细,让你比较耳朵听到的和图上看到的。
一切都在你的浏览器里计算。两段声音都在这台设备上造出来,它们的频谱也在这里算出来,没有任何声音被发往或取自任何服务器。打开浏览器的“网络”标签页,再动手玩这个演示:不会有任何请求发出去。两个“试听”按钮会发出声音:想听就把音量调上去,也可以直接读图,图上都有说明,不听声音也读得懂。
同一个声音,造两遍
本页两段声音的出发点完全相同:同样的音高,同样的随机种子,同样的一秒时长。一段保持粗糙,另一段多做了一层处理,下面“方法”那一节有说明。除此之外,两段没有任何区别。
启动生成。两段声音、它们的两张声谱图,以及谐波与背景之间测出的差值都会显示在这里,每段各配一个“试听”按钮。
这个演示展示了什么
一列谐波,光着的还是修整过的
两段声音都从同一个动作出发:一列谐波,调在同样的音高上,同样的种子,同样的时长。粗糙版就到此为止。精细版多做两件事:用三个固定的共振峰去塑造每个谐波的幅度,赋予一个元音它的音色;再让音高和幅度在一个周期到下一个周期之间发生微小起伏,并加上一层低电平的气息声。除此之外,两段没有任何区别。
在图上,差别先看到、后听到:粗糙版显出的是细而极其干净的条带,条带之间几乎没有能量。精细版显出的条带更宽,集中在三个共振峰上,谐波之间还有一层略微发灰的背景:那就是气息。
一个几乎经不起什么就消失的差值
这个差值,也就是谐波的电平与它们之间背景电平之差,是在声音中段取一帧六十四毫秒的信号上按分贝测出来的。在默认音高 130 赫兹下测得的数值如下。
| 加入的线路噪声 | 粗糙版 | 精细版 |
|---|---|---|
| 无 | 49.7 | 11.7 |
| 1% | 30.3 | 11.5 |
| 2% | 24.6 | 11.3 |
| 5% | 17.1 | 10.6 |
| 10% | 11.8 | 9.8 |
| 20% | 8.4 | 8.4 |
一点噪声都不加时,粗糙版的差值差不多是精细版的四倍:一列光着的谐波,没有气息也没有不规则,比任何真实人声都更干净。只要加上一丁点线路噪声,这份过头的干净就崩了:到百分之十,粗糙版的差值已经缩到不足原来的四分之一。到百分之二十,两个差值严格相等:测量再也分不出粗糙版和精细版。
让一个声音“干净得不像真的”的那个东西,恰恰是一条普通电话线路最先抹掉的东西。
方法
下面是每个版本各算了什么,供想不用这一页重做一遍的人参考。
- 造一列调在所选音高上的谐波:对每个整数次,取一个频率为该次数乘基频的正弦,幅度为该次数的倒数。这是一个简化的声门源的形状,两个版本共用。
- 粗糙版:到此为止。两端各有一小段极短的幅度包络,只为避免起止的爆音:别的什么都不加。
- 精细版:用三个固定的共振峰塑造每个谐波的幅度,这三个值是所选元音的常用值,不是在某个真人身上测的。让音高和幅度在一个周期到下一个周期之间起伏一小点,起伏量由种子抽出。再混入一层气息:一个由同一个种子抽出的低电平噪声。
- 把两段声音归到同一个峰值幅度,好让这次比较绝不取决于单纯的音量差。
- 如果设置要求,就事后给两段声音加上同样的线路噪声:一次普通的传输反正会加上这些,不管有没有人造过这段声音。
- 测量:在声音正中取 1024 个采样点的一帧,用傅里叶变换算出它的频谱,量出每个谐波的电平,量出它们之间的平均电平,然后相减。
在演示里改一下音高或元音,共振峰就跟着移动:测量跟着声音走,它从不照抄一个事先写好的数字。
这个演示不做的事
- 它表明一段语音声音是分两层造出来的:一个振动的声源,一个共振的通道,而第二层改变了让一个声音显得“活”的一切。
- 它表明谐波与频谱背景之间存在一个可测量的差值,两个版本都有。
- 它表明从多大的线路噪声开始,这个差值就不再能区分两个版本。
- 它不做任何检测。本页两段声音都是它自己造的:它知道哪段是哪段,不是猜出来的。
- 它不评判你带来的任何录音,也不接收任何文件。一个声称能对真实人声下结论的工具,那是在骗人。
- 它不复现一套真实的声音克隆系统。那些系统是从一个真人的录音里学出参数的,而这里三个共振峰是手工设定的,用在一个合成音上。
研究测出了什么
三项已发表的结果,正好给这一页在一分钟里让人感觉到的东西定了位。
今天克隆一段声音需要的材料极少:一项研究工作描述了一个名为 VALL-E 的系统,它能凭一段仅三秒的录音,为一个它从未听过的人合成出被评为高质量的个性化语音。三秒,比说出自己的名字还要短。
剩下的线索来自造出来的音频里可辨识的信号处理伪影,而关于检测的研究正是靠这类痕迹来构建它的基准数据集。但负责发现这些痕迹的系统,面对真实的声学条件仍然不够稳健,对训练时没见过的生成方法也泛化得很差。
这些来源没有一项直接测量了人耳面对一段近期克隆人声的表现:所以本页不能替它们作出这样的断言。它们允许说出的话更克制,但同样有用:一个专门训练来发现造出来的人声的系统,尚且难以泛化到一种新方法上;而频谱上过头的干净,在它存在的时候,恰恰是那种被一条普通线路噪声在任何人(无论是人还是检测器)用上它之前就抹掉的痕迹。
一个熟悉的声音,从电话里传来
2024 年 1 月,美国的一家公共机构,联邦通信委员会(FCC),记录并在法律上处罚了一起真实的欺诈行动:一通自动电话在新罕布什尔州总统初选前拨出,播放的是一段用人工智能克隆、模仿总统乔·拜登的声音,要求选民留在家里,跳过这次初选,把票“留着”。声音里没有任何东西提示任何人它是造出来的。
一通电话本身就已经压缩了声音、加进了线路噪声,只给耳朵留下一段很窄的频带。这恰恰是本页刚刚用它自己的线路噪声设置造出来的那种组合:让一条线索最有可能消失的条件,是一通普通电话的条件,不是一间录音棚的条件。
要守住的那个动作
当一个熟悉的声音在电话里要求某件急事,一笔转账、一个验证码、一个地址,不要去判断这个声音:本页刚刚展示了这有多不可靠。挂掉,然后自己用你原本就有的号码打回去,不要用刚刚来电的那个号码。如果这通电话必须马上继续,就问一个答案在任何公开地方都查不到的问题。一个家庭或一个团队也可以事先约定一个只有真人才知道的词,用在紧急得来不及核对别的东西的场合。这个动作不费什么:而上面记录的那起欺诈,让相信自己耳朵的人付出了昂贵的代价。
想再往下走
对图片做同样的工作,见一张被造出来的图片那一章。在源头标记内容的两种方式,见水印那一章。该把这个工具收起来的情形,汇集在什么时候不要用它。本站所有演示都汇集在演示页面,课程目录在理解页面。
来源
- WaveFake: A Data Set to Facilitate Audio Deepfake Detection Joel Frank, Lea Schönherr,2021 年。该文确立:合成人声检测的研究依靠生成音频中可辨识的信号处理伪影,并提供了一个用于研究它们的基准数据集。
- ASVspoof 2021: Towards Spoofed and Deepfake Speech Detection in the Wild Xuechen Liu, Xin Wang, Md Sahidullah, Jose Patino, Hector Delgado, Tomi Kinnunen, Massimiliano Todisco, Junichi Yamagishi, Nicholas Evans, Andreas Nautsch, Kong Aik Lee,2021 年。该文确立:合成语音检测系统面对真实声学环境仍然不够稳健,对训练时未见过的生成方法泛化得很差。
- FCC Makes AI-Generated Voices in Robocalls Illegal(已通过的声明:FCC 24-17) 美国联邦通信委员会(FCC),2024 年。该文确立:一家美国公共机构记录并在法律上处罚了一起真实的欺诈行动,该行动在一次选举前向选民播放了用人工智能克隆、模仿一位政界人士的声音。
- Neural Codec Language Models are Zero-Shot Text to Speech Synthesizers Chengyi Wang, Sanyuan Chen, Yu Wu, Ziqiang Zhang, Long Zhou, Shujie Liu, Zhuo Chen, Yanqing Liu, Huaming Wang, Jinyu Li, Lei He, Sheng Zhao, Furu Wei,2023 年。该文确立:VALL-E 系统能凭一段仅三秒的录音,为一个它从未听过的人合成出被评为高质量的个性化语音。