让照片人物开口说话,SadTalker 安装及使用(避坑指南)

2023-10-11 23:10

本文主要是介绍让照片人物开口说话,SadTalker 安装及使用(避坑指南),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

AI技术突飞猛进,不断的改变着人们的工作和生活。数字人直播作为新兴形式,必将成为未来趋势,具有巨大的、广阔的、惊人的市场前景。它将不断融合创新技术和跨界合作,提供更具个性化和多样化的互动体验,成为未来的一种趋势。

SadTalker介绍

西安交通大学开源了人工智能SadTaker模型,通过从音频中学习生成3D运动系数,使用全新的3D面部渲染器来生成头部运动,可以实现图片+音频就能生成高质量的视频。内含多个踩坑的解决办法,值得玩一玩。

SadTalker地址

可以根据一张图片、一段音频,合成面部说这段语音的视频。图片需要真人或者接近真人。目前项目已经支持stable diffusion webui,可以SD出图后,结合一段音频合成面部说话的视频(抖音常见的数字人)

环境准备

Anaconda介绍

Anaconda,中文大蟒蛇,是一个开源的Anaconda是专注于数据分析的Python发行版本,包含了conda、Python等190多个科学包及其依赖项。

Anaconda就是可以便捷获取包且对包能够进行管理,包括了python和很多常见的软件库和一个包管理器conda。常见的科学计算类的库都包含在里面了,使得安装比常规python安装要容易,同时对环境可以统一管理的发行版本。

下载地址:https://repo.anaconda.com/archive/

Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

为什么要安装Anaconda?

Anaconda对于python初学者而言及其友好,相比单独安装python主程序,选择Anaconda可以帮助省去很多麻烦,Anaconda里添加了许多常用的功能包,如果单独安装python,这些功能包则需要一条一条自行安装,在Anaconda中则不需要考虑这些,同时Anaconda还附带捆绑了两个非常好用的交互式代码编辑器(Spyder、Jupyter notebook)。

总的来说,在Anaconda中conda可以理解为一个工具,也是一个可执行命令,其核心功能是包管理与环境管理。所以对虚拟环境进行创建、删除等操作需要使用conda命令。

annoconda环境安装

annoconda环境安装与使用详见:环境安装

配置镜像源

conda config --add channels https://pypi.tuna.tsinghua.edu.cn/simple
#豆瓣源
conda config --add channels http://pypi.douban.com/simple/ # 阿里源
conda config --add channels https://mirrors.aliyun.com/pypi/simple/#中科大源
conda config --add channels https://pypi.mirrors.ustc.edu.cn/simple/conda config --remove channels https://pypi.mirrors.ustc.edu.cn/simple/
conda config --remove-key channelsconda install numpy=1.19.2conda create --name myenv python=3.8
conda env list
conda activate myenv
conda deactivate
conda env remove --name myenv

注:给pip添加镜像和给conda添加镜像源是不同的,上述conda config添加的源实测不能用的(上述的是pip的镜像源,不能在conda下用),正确应该是:

给pip添加清华通道:

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

给conda添加清华通道:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main

给conda添加社区通道:

conda config --add channels conda-forge

conda的镜像源也可以直接修改.condarc 的文件,conda 应用程序的配置文件。

Windows 用户无法直接创建名为 .condarc 的文件,可先执行 conda config --set show_channel_urls yes 生成该文件之后再修改。文件的一个示例:

channels:- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
ssl_verify: true
show_channel_urls: true

另附几个常用的镜像源:

# 清华源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge 
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free# 中科大源
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/bioconda/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/menpo/

SadTalker安装

SadTalker安装倒不复杂,但是安装成功非常的不容易。所以这里给出了避坑指南。主要是依赖和需要下载的东西太多太大了,光pytouch都需要2.1G,模型文件又是几个G。

这里有个坑是:最好使用conda来安装需要的包,且指定python的版本为3.8才行。如果指定版本为3.10,最后老半天来个个别pytouch的包找不到安装失败的尴尬,又得重来一遍,很耗时。

还有需要注意的是,一定要提前设置好镜像源啊,否则几天都别想安装成功,需要下载好几个G的东西。

conda create -n sadtalker python=3.8conda activate sadtalker

网上给出的安装步骤如下:

conda create -n sadtalker python=3.8conda activate sadtalkerpip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113conda install ffmpegpip install -r requirements.txt

其实也可以直接执行webui.bat脚本即可,会自动的下载所有的依赖包(注:这种方式pytouch和下载的包都在venv的目录里,不支持指定下载pytorch的版本,默认的下载内容在launcher.py文件种能查看到)。

E:\test\python\SadTalker> .\webui.bat

如果以上成功,仅代表环境安装ok,但是仍然是无法使用的,需要下载模型。在 sadtalker项目根目录下新建两个目录checkpoints gfpgan,下载好的模型分别放在这两个文件夹。模型比较大,checkpoints内的文件就有3.3G大小,gfpgan下的文件大小600M左右。不建议从github上下载,那样下载太慢了。

这里给出百度云盘地址:

  • 模型checkpoints, 提取码: sadt.
  • gfpgan, 提取码: sadt.

另外下载github上的资源,推荐使用镜像站点的方式下载。

这里推荐一个:GitHub Proxy 代理加速

再推荐几个快速访问和下载github资源的站点:

#通过代理网站下载
#Release、Code(ZIP) 文件加速:
https://gh.api.99988866.xyz
https://github.rc1844.workers...
https://ghgo.feizhuqwq.worker...
https://git.yumenaka.net
https://github.com.cnpmjs.org
https://mirror.ghproxy.com/
https://ghproxy.com/
https://toolwa.com/github/#Git Clone 加速:
https://github.do
https://gitclone.com
https://hub.fastgit.xyz
https://ghproxy.com
https://hub.0z.gs

具体哪个速度快,请自行找一些大文件来测速。我常使用的是ghproxy.com下载github上的文件,因为名字好记,速度也不错,比百度网盘快很多。 

如何使用

启动UI的方式生成

E:\test\python\SadTalker> .\webui.bat

命令行方式视频生成
通过图片+语音生成视频:

python inference.py --driven_audio data/sample.wav --source_image data/sample.png

通过视频片段+语音生成视频:

python inference.py --driven_audio data/sample.wav --source_image data/sample.mp4

通过参数对生成的视频进行控制:

--preprocess full 表示完整图片--still 可以减少头部运动--enhancer gfpgan

参数1是保留全身,如果不加这个参数,则视频中只剩头部

参数2是减少头部晃动,头部晃动是会和脖子的连接部位脱节

参数3是基于gfpgan对视频进行增强

查看webui.bat文件内容可知,如果是直接执行webui.bat,默认会把pytorch下载到SadTalker项目的venv目录下,这样如果直接执行上述命令行方式的话是不行的,会提示pytorch和其它一些未安装。如果确实需命令行下执行,可参考webui.bat文件内容,临时更改环境变量。

call .\venv\Scripts\activate.batset PYTHON="venv\Scripts\Python.exe"$PYTHON inference.py --driven_audio data/sample.wav --source_image data/sample.png

webui.bat文件内容如下:

@echo offIF NOT EXIST venv (
python -m venv venv
) ELSE (
echo venv folder already exists, skipping creation...
)
call .\venv\Scripts\activate.batset PYTHON="venv\Scripts\Python.exe"
echo venv %PYTHON%%PYTHON% Launcher.pyecho.
echo Launch unsuccessful. Exiting.
pause

最终测试效果:

成功生成视频:

 

可以完美跑起来,就是生成视频的速度太慢太慢啦,要等一会儿才完成。这也跟语音文件大小有关系,平均十多秒才处理一张图片。另外一个原因,cmd窗口提示:

Launching SadTalker Web UI
E:\test\python\SadTalker\venv\lib\site-packages\torch\cuda\__init__.py:83: UserWarning: CUDA initialization: CUDA driver initialization failed, you might not have a CUDA gpu. (Triggered internally at  C:\actions-runner\_work\pytorch\pytorch\builder\windows\pytorch\c10\cuda\CUDAFunctions.cpp:109.)return torch._C._cuda_getDeviceCount() > 0

电脑没有安装cuda,没利用GPU的运算能力。

关于cuda

2006年,NVIDIA公司发布了CUDA(Compute Unified Device Architecture),是一种新的操作GPU计算的硬件和软件架构,是建立在NVIDIA的GPUs上的一个通用并行计算平台和编程模型,它提供了GPU编程的简易接口,基于CUDA编程可以构建基于GPU计算的应用程序,利用GPUs的并行计算引擎来更加高效地解决比较复杂的计算难题。它将GPU视作一个数据并行计算设备,而且无需把这些计算映射到图形API。操作系统的多任务机制可以同时管理CUDA访问GPU和图形程序的运行库,其计算特性支持利用CUDA直观地编写GPU核心程序。

CUDA提供了对其它编程语言的支持,如C/C++,Python,Fortran等语言。只有安装CUDA才能够进行复杂的并行计算。主流的深度学习框架也都是基于CUDA进行GPU并行加速的,几乎无一例外。还有一个叫做cudnn,是针对深度卷积神经网络的加速库。

CUDA在软件方面组成有:一个CUDA库、一个应用程序编程接口(API)及其运行库(Runtime)、两个较高级别的通用数学库,即CUFFT和CUBLAS。CUDA改进了DRAM的读写灵活性,使得GPU与CPU的机制相吻合。另一方面,CUDA提供了片上(on-chip)共享内存,使得线程之间可以共享数据。应用程序可以利用共享内存来减少DRAM的数据传送,更少的依赖DRAM的内存带宽。

cuda解决办法

首先检查显卡驱动,CUDA,cudnn,以及pytorch的版本是否匹配,如果不匹配,需要卸载之后重装对应的版本。

如何查看CUDA版本?

1.搜索栏输入cmd回车(进入cmd)

2.输入下面语句

nvidia-smi

或者:

PS C:\Program Files\NVIDIA Corporation\NVSMI> .\nvidia-smi.exe

能看到类似以下内容,其中就有CUDA版本信息:

如果C盘的Program Files目录下就没有NVIDIA GPU Computing Toolkit文件夹,nvdia没有安装成功,需要安装CUDA Toolkit。

在设备管理器(此电脑–右键–属性)的显示适配器中可以查看自己的显卡型号,去官网下载对应的CUDA Toolkit 。

其他资源

还是搞不懂Anaconda是什么?读这一篇文章就够了-CSDN博客

annoconda安装使用及镜像源的添加,提高软件下载速度_conda镜像安装-CSDN博客

Anaconda安装教程(带图文)及使用、配置指南含编辑器对比 - 知乎

conda常用命令详解_conda显示所有环境-CSDN博客

annoconda安装使用及镜像源的添加,提高软件下载速度_conda镜像安装-CSDN博客

深度学习环境安装 - 知乎

Anaconda 中使用 conda 配置虚拟环境与管理安装包 - 知乎

如何判断自己的电脑里有没有cuda以及查看cuda版本_CheCacao的博客-CSDN博客

八、让照片说话之SadTalk_vandh的博客-CSDN博客

手把手教安装SadTalker教程_think_张大彪的博客-CSDN博客

stable-diffussion-webui+sd-webui-text2video+SadTalker数字人生产力工具安装配置教程(Linux Ubuntu,避坑帖)_水无月繁星的博客-CSDN博客

四元数(Quaternions)

彻底搞懂“旋转矩阵/欧拉角/四元数”,让你体会三维旋转之美_欧拉角判断动作-CSDN博客

【实战】体验SadTalker-CSDN博客

SadTalker项目上手教程_Alphathur的博客-CSDN博客

SadTalker 学习笔记-CSDN博客

SadTalker(CVPR2023)-音频驱动视频生成_‘Atlas’的博客-CSDN博客

SadTalker:Stylized Audio-Driven Single Image Talking Face Animation(CVPR2023)_c2a2o2的博客-CSDN博客

MakeItTalk:让你的人物图片或者动画动起来(学习笔记)_一名不想学习的学渣的博客-CSDN博客

MakeItTalk用一段语音让一张照片动起来-CSDN博客

faceswap换脸程序安装及使用-CSDN博客

AI数字人:换脸模型Faceswap_智慧医疗探索者的博客-CSDN博客

AI数字人:最强声音驱动面部表情模型VideoReTalking_智慧医疗探索者的博客-CSDN博客

Faceswap使用教程_face swap-CSDN博客

AI换脸软件DeepFaceLab本地安装使用教程,AI视频换脸详细步骤 - 知乎

最强的AI视频去码&图片修复模型:CodeFormer-CSDN博客

Pytorch 最全入门介绍,Pytorch入门看这一篇就够了 - 知乎

【深度学习】PyTorch基础入门(爆肝2万字)_柒筱暮的博客-CSDN博客

https://download.csdn.net/download/qq_30920479/88059273?spm=1001.2014.3001.5506

这篇关于让照片人物开口说话,SadTalker 安装及使用(避坑指南)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/191506

相关文章

如何使用celery进行异步处理和定时任务(django)

《如何使用celery进行异步处理和定时任务(django)》文章介绍了Celery的基本概念、安装方法、如何使用Celery进行异步任务处理以及如何设置定时任务,通过Celery,可以在Web应用中... 目录一、celery的作用二、安装celery三、使用celery 异步执行任务四、使用celery

使用Python绘制蛇年春节祝福艺术图

《使用Python绘制蛇年春节祝福艺术图》:本文主要介绍如何使用Python的Matplotlib库绘制一幅富有创意的“蛇年有福”艺术图,这幅图结合了数字,蛇形,花朵等装饰,需要的可以参考下... 目录1. 绘图的基本概念2. 准备工作3. 实现代码解析3.1 设置绘图画布3.2 绘制数字“2025”3.3

Jsoncpp的安装与使用方式

《Jsoncpp的安装与使用方式》JsonCpp是一个用于解析和生成JSON数据的C++库,它支持解析JSON文件或字符串到C++对象,以及将C++对象序列化回JSON格式,安装JsonCpp可以通过... 目录安装jsoncppJsoncpp的使用Value类构造函数检测保存的数据类型提取数据对json数

python使用watchdog实现文件资源监控

《python使用watchdog实现文件资源监控》watchdog支持跨平台文件资源监控,可以检测指定文件夹下文件及文件夹变动,下面我们来看看Python如何使用watchdog实现文件资源监控吧... python文件监控库watchdogs简介随着Python在各种应用领域中的广泛使用,其生态环境也

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

mac安装redis全过程

《mac安装redis全过程》文章内容主要介绍了如何从官网下载指定版本的Redis,以及如何在自定义目录下安装和启动Redis,还提到了如何修改Redis的密码和配置文件,以及使用RedisInsig... 目录MAC安装Redis安装启动redis 配置redis 常用命令总结mac安装redis官网下

springboot整合 xxl-job及使用步骤

《springboot整合xxl-job及使用步骤》XXL-JOB是一个分布式任务调度平台,用于解决分布式系统中的任务调度和管理问题,文章详细介绍了XXL-JOB的架构,包括调度中心、执行器和Web... 目录一、xxl-job是什么二、使用步骤1. 下载并运行管理端代码2. 访问管理页面,确认是否启动成功

使用Nginx来共享文件的详细教程

《使用Nginx来共享文件的详细教程》有时我们想共享电脑上的某些文件,一个比较方便的做法是,开一个HTTP服务,指向文件所在的目录,这次我们用nginx来实现这个需求,本文将通过代码示例一步步教你使用... 在本教程中,我们将向您展示如何使用开源 Web 服务器 Nginx 设置文件共享服务器步骤 0 —

Java中switch-case结构的使用方法举例详解

《Java中switch-case结构的使用方法举例详解》:本文主要介绍Java中switch-case结构使用的相关资料,switch-case结构是Java中处理多个分支条件的一种有效方式,它... 目录前言一、switch-case结构的基本语法二、使用示例三、注意事项四、总结前言对于Java初学者

Golang使用minio替代文件系统的实战教程

《Golang使用minio替代文件系统的实战教程》本文讨论项目开发中直接文件系统的限制或不足,接着介绍Minio对象存储的优势,同时给出Golang的实际示例代码,包括初始化客户端、读取minio对... 目录文件系统 vs Minio文件系统不足:对象存储:miniogolang连接Minio配置Min