只有一个源视频的Deepfakes简介

article/2025/11/7 20:53:07

2f16abd43b43b87c54432160ca3f0bfa.png

Deepfakes 简介

Deepfakes 是人工智能生成的任何人或名人的合成视频,它冒充真实的人,并让他们采取行动或说出他们从未做过的任何事情。

Deepfake 的创建过程在技术上很复杂,通常需要大量数据,然后将这些数据输入神经网络以训练和生成合成视频。

Deepfakes 的影响

Deepfakes 和 AI 虚拟形象可能会产生不同的影响,具体取决于其使用方式。虽然 deepfake 的负面影响可能令人恐惧,但它在其他情况下会很有用。

Deepfakes 的优点

  • Deepfakes 可以作为一种艺术形式,让过去的人们重获新生。例如,一幅蒙娜丽莎的画可以用来生成一个会说话的蒙娜丽莎的合成图像。

  • Deepfake 技术可用于在训练视频中创建 AI 头像。在疫情期间,总部位于伦敦的 Synthesia 等初创公司越来越受到企业界的关注,因为封锁和健康问题使涉及真人的视频拍摄变得更加困难。

  • Deepfakes 可用于创建个人头像,可以用于试穿衣服或新发型。

Deepfakes 还可用于调查新闻报道、金融等各个领域的身份保护和匿名化。

Deepfakes 的缺点

  • Deepfakes 可用于通过名人的换脸视频传播假新闻。

  • Deepfakes 也可能被误用于在社交媒体上发起错误信息宣传活动,从而改变公众舆论并导致负面后果。

创建 Deepfakes

尽管可以通过多种方式使用或误用Deepfakes,但随着 AI 日新月异的进步,创建它们变得越来越容易。

我们现在可以用一个人的小视频源创建一个Deepfakes。是的,随着神经网络的最新进展,这现在很容易实现。

让我们将解决方案分解为两部分

  • 声音克隆

  • 视频口型同步

Deepfakes 的语音克隆部分 

SV2TTS 是一个深度学习框架,可以通过训练将音频量化并以数字和参数的形式表现出来,这些数字和参数的基础是一个人的声音的一小段音频。

语音样本的这种数字描述可用于指导和训练一个从文本到语音的模型,以使用任何文本数据作为输入,生成具有相同语音的新音频。因此,使用从样本源视频中提取的音频,可以使用 SV2TTS 轻松创建语音克隆。

04b0e90ec73b109d0849d6c368a4e5c7.png

图:SV2TTS 工作流程

SV2TTS 工作流程

  • 扬声器编码器接收从源视频中提取的目标人物的音频,并将带有嵌入的编码输出传递给合成器。

  • 合成器根据目标音频和成对的文本记录进行训练,并合成输入

  • 神经声码器将合成器产生的频谱图转换为输出波形

Deepfakes 的视频口形同步部分

Wav2lip 是一种口型同步 GAN,它以人说话的音频样本和等长视频样本作为输入,并将人的口型与输入音频同步。因此,它会生成同一个人说出输入音频的合成视频,而不是原始样本视频中的实际音频。

966f021ef3700e2cb3f7787c58ca0738.png

图:Wav2Lip 工作流程

视频口型同步工作流程

  • 生成器使用身份编码器、语音编码器和面部解码器来生成视频帧

  • 判别器在训练过程中因生成不准确而惩罚生成器

  • 生成器-鉴别器的对抗训练导致最终输出视频具有尽可能高的准确度

示例合成视频

这是我制作的奥巴马与我们交谈的合成视频!用于创建语音克隆音频的文字记录显示:“Hey guys, this is Barack Obama. As you can see, this is not a real video. My creator, Suvojit, generated this synthetic video with Generative Adversarial Networks….”

  • https://youtu.be/5BpxgU-0vbc

深入了解 SV2TTS 的步骤和代码

让我们深入了解 SV2TTS 和 Wav2Lip 的步骤和代码。

源视频

选择源视频——视频可以是任意长度,并且应该只有目标角色在前面发言,并尽可能少的中断。

请注意,生成的最终合成视频将与输入视频的大小相同,因此你可以根据需要裁剪视频。

音频提取

从源视频中提取音频。该音频将作为 SV2TTS 生成语音克隆的训练数据。

导入库

对于 SV2TTS,在Notebook中导入必要的库。

# importing all the necessary libraries
import os
from os.path import exists, join, basename, splitext
import sys
from IPython.display import display, Audio, clear_output
from IPython.utils import io
import ipywidgets as widgets
import numpy as np
from dl_colab_notebooks.audio import record_audio, upload_audio
from synthesizer.inference import Synthesizer
from encoder import inference as encoder
from vocoder import inference as vocoder
from pathlib import Path

克隆 SV2TTS 存储库

克隆基于SV2TTS的实时语音克隆repo并安装requirements。

sys.path.append(name_of_proj)
#url of svt2tts
git_repo_url = 'https://github.com/CorentinJ/Real-Time-Voice-Cloning.git'
name_of_proj = splitext(basename(git_repo_url))[0]
# clone repo recursively and install dependencies
if not exists(name_of_proj):# clone and install!git clone -q --recursive {git_repo_url}# install dependencies!cd {name_of_proj}
!pip install -q -r requirements.txt!pip install -q gdown!apt-get install -qq libportaudio2!pip install -q https://github.com/tugstugi/dl-colab-notebooks/archive/colab_utils.zip

加载预训练模型

下载并加载预训练的模型和合成器。

# load pretrained modelencoder.load_model(project_name / Path("encoder/saved_models/pretrained.pt"))# create synthesizer objectsynthesizer = Synthesizer(project_name / Path("synthesizer/saved_models/pretrained/pretrained.pt"))# load model to vocodervocoder.load_model(project_name / Path("vocoder/saved_models/pretrained/pretrained.pt"))

上传音频和计算嵌入

设置采样率,编码器嵌入,以及上传或记录音频的选项。在这种情况下,我们将上传音频。

# choose appropriate sample rate
SAMPLE_RATE = 22050
# create option to upload or record audio, enter audio duration
rec_upl = "Upld (.mp3 or .wav)" #@param ["Recrd", "Upld (.mp3 or .wav)"]
record_seconds =   600#@param {type:"number", min:1, max:10, step:1}
embedding = None
# compute embeddings
def _compute_embedding(audio):display(Audio(audio, rate=SAMPLE_RATE, autoplay=True))global embeddingembedding = Noneembedding = encoder.embed_utterance(encoder.preprocess_wav(audio, SAMPLE_RATE))
#function for recording your own voice and computing embeddings
def _record_audio(b):clear_output()audio = record_audio(record_seconds, sample_rate=SAMPLE_RATE)_compute_embedding(audio)
#function for uploading audio and computing embeddings
def _upload_audio(b):clear_output()audio = upload_audio(sample_rate=SAMPLE_RATE)_compute_embedding(audio)
if record_or_upload == "Record":button = widgets.Button(description="Record Your Voice")button.on_click(_record_audio)display(button)
else:#button = widgets.Button(description="Upload Voice File")#button.on_click(_upload_audio)_upload_audio("")

生成语音克隆

最后,合成音频并生成输出波形

# text for the voice clone to read out in the synthetically generated audio
text = "Hey guys this is Barack Obama. As you can see, this is not a real video. My creator, Suvojit generated this synthetic video with Generative Adversarial Networks. Like and share this video, and message Suvojit if you want to know more details. Bye" #@param {type:"string"}
def synthesize(embed, text):print("Synthesizing new audio...")# synthesize the spectrogramsspecs = synthesizer.synthesize_spectrograms([text],
)generated_wav = vocoder.infer_waveform(specs[0])# generate output waveformgenerated_wav = np.pad(generated_wav, (0, synthesizer.sample_rate), mode="constant")clear_output()display(Audio(generated_wav, rate=synthesizer.sample_rate, autoplay=True))
if embedding is None:
print(“upload the audio”)
else:
synthesize(embedding, text)

唇形同步:克隆 Wav2Lip Repo

现在是生成口型同步视频的时候了。克隆 Wav2Lip 存储库并下载预训练模型以实现高度准确的唇形同步。挂载 Google 驱动器并上传和复制内容。

#download:  https://github.com/Rudrabha/Wav2Lip#training-on-datasets-other-than-lrs2
!git clone https://github.com/Rudrabha/Wav2Lip.git
# copy checkpoints from google drive to session storage
!cp -ri "/content/gdrive/MyDrive/Files/Wav2lip/wav2lip_gan.pth" /content/Wav2Lip/checkpoints/
!cp -ri "/content/gdrive/MyDrive/Files/Wav2lip/wav2lip.pth" /content/Wav2Lip/checkpoints/
!cd Wav2Lip && pip install -r requirements.txt
!wget "https://www.adrianbulat.com/downloads/python-fan/s3fd-619a316812.pth" -O "Wav2Lip/face_detection/detection/sfd/s3fd.pth"

预处理音频和视频数据

现在设置要处理的文件。

%cd sample_data/
%rm input_audio.wav
%rm input_video.mp4
from google.colab import files
uploaded = files.upload()
%cd ..
!cd Wav2Lip && python inference.py --checkpoint_path checkpoints/wav2lip_gan.pth --face "/content/sample_data/input_video.mp4" --audio "/content/sample_data/input_audio.wav"
from google.colab import files
# download the voice generated in previous steps to session storage
files.download('/content/Wav2Lip/results/result_voice.mp4') 
from IPython.display import HTML
from base64 import b64encode
# read binary of the audio file
mp4 = open('/content/Wav2Lip/results/result_voice.mp4','rb').read()
data_url = "data:video/mp4;base64," + b64encode(mp4).decode()
HTML(f"""
<video width="50%" height="50%" controls><source src="{data_url}" type="video/mp4">
</video>
""")

上传 Wav2Lip 的输入文件

上传 input_vide o.mp4 & input_audio.wav 文件。输入音频是在上一步从 SV2TTS 生成的。

%cd sample_data/
from google.colab import files
uploaded = files.upload()
%cd ..

生成口型同步视频

使用预训练模型创建 wav2lip 视频。

# set the args for checkpoint and input files and generate the lip sync video
!cd Wav2Lip && python inference.py --checkpoint_path checkpoints/wav2lip_gan.pth

将 Deepfake 下载到你的 PC

就是这样!现在你可以将 deepfake 下载到你的谷歌驱动器和你的电脑上。

files.download('/content/Wav2Lip/results/result_voice.mp4')

因此,音频克隆和唇形同步 GAN 的组合可用于制作一个deepfake ,从一个人的 10 秒短视频中生成任何人所说的任意内容(自定义内容)。

参考

SV2TTS 论文: https://arxiv.org/pdf/1806.04558.pdf

Wav2Lip 论文: https://arxiv.org/pdf/2008.10010.pdf

☆ END ☆

如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「uncle_pn」,欢迎添加小编微信「 woshicver」,每日朋友圈更新一篇高质量博文。

扫描二维码添加小编↓

e0a9dc6f046a908e2c55a31eacf29490.png


http://chatgpt.dhexx.cn/article/GssmV4mw.shtml

相关文章

Gmail文件工具:gDrive

用Gmail的空间来进行文件存储已经不是什么新鲜事了&#xff0c;Linux下有GmailFS&#xff0c;Windows下也有Gmail Driver。但是它们跟gDrive比起来&#xff0c;就实在是相形见拙了。gDrive是一个基于libgmailer的PHP脚本&#xff0c;当前版本为0.6。它可以利用Gmail的空间提供强…

【YOLOV5-5.x 源码解读】google_utils.py

目录 前言0、导入需要的包1、gsutil_getsize2、safe_download、attempt_download2.1、safe_download2.2、attempt_download 3、get_token、gdrive_download&#xff08;没使用&#xff09;3.1、get_token3.2、gdrive_download 4、作者注释的函数总结 前言 源码&#xff1a; YO…

千呼万唤始出来 Google GDrive将于4月初正式推出

早在5年前&#xff0c;WSJ就有传言称Google将推出云存储服务&#xff0c;而Google也在2010年宣称这项服务将允许用户进行文件和资料的在线存储&#xff0c;但一直没有正式推出该项服务。这次&#xff0c;看来Google是来真的了。 如果消息属实&#xff0c;Google GDrive将可能在…

Google云存储服务GDrive再度浮出水面

Google 要推出GDrive的传闻已经有一段时间了&#xff0c;而现在一个Google 搜索结果页面再度证实了这一传闻。在Google 搜索中如果你输入Writely&#xff0c;搜索的结果中你可以看到一个名为Platypus&#xff08;GDrive&#xff09;的测试页面。Writely.com是Google 于2006年收…

GDrive首次现身!

还记得GDrive么&#xff1f;自从它第一次出现在Google的泄露文档上&#xff0c;它就成为了世界关注的焦点。根据传言&#xff0c;GDrive将会是Google要推出的网络存储服务&#xff0c;类似于网络硬盘&#xff0c;但它的容量是无限的。在这个消息泄露后&#xff0c;Google马上把…

Google的GDrive美如水中之月

GDrive GDrive(网络硬盘),被称为“谷歌迄今为止推出的最令人期待的产品”。GDrive可以让用户将个人文件和操作系统存储在谷歌的服务器上&#xff0c;并可通过网络访问&#xff0c;PC将成为一种用于访问网络的简单而便宜的设备&#xff0c;用户甚至可以通过谷歌的手机操作系统An…

Google网络硬盘(GDrive):千呼万唤不出来

几年来人们一直猜测Google会利用其强大的实力提供专业在线数据存储服务&#xff0c;比如说“Google网络硬盘&#xff08;GDrive&#xff09;”。最近相关传言再次兴起&#xff0c;并且更加有意思。 Google网络硬盘有什么好处呢&#xff1f;廉价&#xff08;免费&#xff1f;&am…

linux 安装 gdrive

1.下载https://www.dongganboy.com/app/gdrive-linux-x64 参考链接&#xff1a;Linux 定时备份网站文件至Google Drive - 主机宝贝 [教程]Gdrive&#xff1a;Linux下谷歌网盘同步工具、自动备份VPS文件到Google Drive – 爱玩吧 2. 复制到相应的文件夹下&#xff1b;修改权限…

win7出现问题事件名称APPCRASH的解决方法

问题故障提示&#xff1a; 在网上找了很多解决方式都没有解决&#xff0c;什么下载个 Windows清理助手64位啦&#xff0c;什么重新卸载重装啦&#xff0c; 什么删除 User Data 文件啦&#xff0c;什么删除注册表啦&#xff0c;一点用都没有&#xff0c;这个问题是由于 兼容 问…

vs2015启动无法工作,问题事件名称: APPCRASH,故障模块名称: KERNELBASE.dll

尝试了网上多种方法&#xff0c;删除注册表内容&#xff1b;安全模式&#xff1b;重启&#xff1b;修复&#xff1b;管理员权限等等&#xff0c;都以失败为告终。利用程序自带的修复了3、4次&#xff0c;也没有任何作用。一启动还是VS2015软件奔溃&#xff0c;无法工作。显示下…

IOS —— Crash分析

Crash分析 1. Crash2. 奔溃处理2.1 选择器方法未定义2.2 容器越界 2.3 NSSetUncaughtExceptionHandler 1. Crash 应用崩溃是影响 APP 体验的重要一环&#xff0c; 而崩溃定位也常常让开发者头疼。Crash的出现就是做了一些违背代码规则的操作&#xff0c;常见crash类型有&#…

iOS crash 问题分析汇总

在这里插入图片描述 iOS crash 问题分析 iOS crash 常用分析工具IOS 崩溃日志 iOS crash 原因分析1.调用悬浮指针2.数组越界访问3.调用了未实现的方法4.调用的库函数版本高于本机5.返回空cell6.类释放时未remove通知&#xff0c;之后收到通知7.类释放时delegate未置空&#xf…

安装计算机一级出现appcrash,appcrash错误如何解决

APPCRASH是Vista和Win7中特有的故障&#xff0c;导出APPCRASH问题的原因有很多&#xff0c;恶意插件&#xff0c;文件丢失或者文件错误等等。下面&#xff0c;我就给大家介绍一下APPCRASH问题的解决方法&#xff0c;有需要就一起来了解一下吧 如何解决APPCRASH错误问题呢&#…

06、app anr分析/crash/崩溃

1、anr ANR 全称&#xff1a;application not responding&#xff0c;即app无响应 分析思路&#xff1a;使用排除法去分析问题&#xff0c;对用的内容需要开发提供对应的日志监控&#xff0c;重现这个过程&#xff0c;去获取这个日志 2、crash 一般crash原因有以下几种 1&a…

Android程序Crash时的异常上报

转载请注明来源&#xff1a;http://blog.csdn.net/singwhatiwanna/article/details/17289479 前言 大家都知道&#xff0c;android应用不可避免的会发生crash&#xff0c;无论你的程序写的多完美&#xff0c;总是无法完全避免crash的发生&#xff0c;可能是由于android系统底层…

iOS Crash报告分析

文章目录 相关概念什么是 dSYM 文件dSYM 文件有什么作用 分析crash报告解析工具 umcrashtool 相关概念 什么是 dSYM 文件 Xcode编译项目后&#xff0c;我们会看到一个同名的 dSYM 文件&#xff0c;dSYM 是保存 16 进制函数地址映射信息的中转文件&#xff0c;我们调试的 symb…

Android 平台的Crash崩溃捕获-全

上层-java/kotlin&#xff1a; Android应用层java/kotlin的crash捕获相对容易。直接实现Thread.UncaughtExceptionHandler即可处理收集。Thread.UncaughtExceptionHandler&#xff1a;当某一线程因未捕获的异常而即将终止时&#xff0c;Java 虚拟机将使用 Thread.getUncaughtE…

服务器appcrash的问题怎么修复,电脑appcrash的问题怎么修复?

电脑是很复杂的程序代码设计的&#xff0c;因而有时会遇到一些奇怪的问题&#xff0c;而APPCRASH错误也是其中一种&#xff0c;如运行程序出现APPCRASH错误&#xff0c;我们在日志中查看事件名称为APPCRASH&#xff0c;这时很多朋友不知道怎么解决&#xff0c;下面小编和大家一…

iOS中“事件”的前因后果

iOS的事件是一个由触发行为到响应的过程。本文旨在表达事件如何处理响应&#xff0c;如何传递事件的。 1. 前言 国内智能手机要从2000年开始说起&#xff0c;手机的进化是飞速的&#xff0c;单从操作来看&#xff0c;最开始是数字实体键盘&#xff0c;后来出现了全字母的实体键…

AppCrash explorer问题(解决方法)

AppCrash 顾名思义 程序崩溃了 先上问题&#xff1a; 资源管理器不断地显示停止工作&#xff08;关闭后10s又出来报错&#xff09; 我也在网上找了很多资料&#xff0c;还去Google搜了一下&#xff0c;但我的错误和dll这个无关&#xff0c;修改注册表等方法都无法解决此问题&a…