让照片人物开口说话,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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/97790.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[C++基础]-多态

前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正。 本期学习目标&am…

数据库配置mysql5.7

1 创建数据库 """ 1.管理员连接数据库 mysql -uroot -proot2.创建数据库 create database hello default charsetutf8;3.查看用户 select user,host,password from mysql.user;# 5.7往后的版本 select user,host,authentication_string from mysql.user; "…

力扣-345.反转字符串中的元音字母

Idea 将s中的元音字母存在字符串sv中,并且使用一个数组依次存储元音字母的下标。 然后将字符串sv进行反转,并遍历元音下标数组,将反转后的字符串sv依次插入到源字符串s中 AC Code class Solution { public:string reverseVowels(string s) {…

【进阶C语言】数组笔试题解析

本节内容以刷题为主,大致目录: 1.一维数组 2.字符数组 3.二维数组 学完后,你将对数组有了更全面的认识 在刷关于数组的题目前,我们先认识一下数组名: 数组名的意义:表示数组首元素的地址 但是有两个例外…

强化学习环境 - robogym - 学习 - 3

强化学习环境 - robogym - 学习 - 3 文章目录 强化学习环境 - robogym - 学习 - 3项目地址为什么选择 robogymObservation - 观测信息Action - 动作信息Initialization - 初始状态设置 项目地址 https://github.com/openai/robogym 为什么选择 robogym 自己的项目需要做一些机…

微信小程序使用路由传参和传对象的方法

近期在做微信小程序开发,在页面跳转时,需要携带参数到下一个页面,尤其是将对象传入页面。为了方便重温,特此记录。 路由传字符串参数 原始页面 传递字符串参数比较简单。路由跳转有两种方式,一种是通过navigator组件…

企业AI工程化之路:如何实现高效、低成本、高质量的落地?

MLOps工程实践 概述面临挑战目的内容简介读者对象专家推荐目录 写在末尾: 主页传送门:📀 传送 概述 作为计算机科学的一个重要领域,机器学习也是目前人工智能领域非常活跃的分支之一。机器学习通过分析海量数据、总结规律&#x…

Flask实现注册登录模块

🙌秋名山码民的主页 😂oi退役选手,Java、大数据、单片机、IoT均有所涉猎,热爱技术,技术无罪 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 获取源码,添加WX 目录 前言1.…

机器学习之SGD, Batch, and Mini Batch的简单介绍

文章目录 总述SGD(Stochastic Gradient Descent)(随机梯度下降)Batch (批量)mini Batch (迷你批量) 总述 SGD, Batch, and Mini Batch是可用于神经网络的监督学习计算权重更新的方案,即∆wij。 SGD(Stochastic Gradi…

el-tree中插入图标并且带提示信息

<template><div class"left"><!-- default-expanded-keys 默认展开 --><!-- expand-on-click-node 只有点击箭头才会展开树 --><el-tree :data"list" :props"defaultProps" node-click"handleNodeClick" :…

c语言进阶部分详解(详细解析字符串常用函数,并进行模拟实现(下))

上篇文章介绍了一些常用的字符串函数&#xff0c;大家可以跳转过去浏览一下&#xff1a;c语言进阶部分详解&#xff08;详细解析字符串常用函数&#xff0c;并进行模拟实现&#xff08;上&#xff09;&#xff09;_总之就是非常唔姆的博客-CSDN博客 今天接着来介绍一些&#x…

Linux防火墙之--SNAT和DNAT

1.SNAT是什么 SNAT又称源地址转换。源地址转换是内网地址向外访问时&#xff0c;发起访问的内网ip地址转换为指定的ip地址&#xff08;可指定具体的服务以及相应的端口或端口范围&#xff09;&#xff0c;这可以使内网中使用保留ip地址的主机访问外部网络&#xff0c;即内网的多…

腾讯云轻量和CVM有啥区别?怎么选择服务器配置?

腾讯云轻量服务器和云服务器有什么区别&#xff1f;为什么轻量应用服务器价格便宜&#xff1f;是因为轻量服务器CPU内存性能比云服务器CVM性能差吗&#xff1f;轻量应用服务器适合中小企业或个人开发者搭建企业官网、博客论坛、微信小程序或开发测试环境&#xff0c;云服务器CV…

TDengine OSS 与 qStudio 实现无缝协同,革新数据分析和管理方式

在数字化转型如火如荼的当下&#xff0c;海量爆发的时序数据处理成为转型成功的关键因素之一。为了帮助社区用户更好地进行数据分析和管理&#xff0c;丰富可视化解决方案的多样性&#xff0c;我们将开源的时序数据库&#xff08;Time Series Database&#xff09; TDengine OS…

一文看懂光模块的工作原理

你们好&#xff0c;我的网工朋友 光模块有很多类别&#xff0c;是我们经常要用到的PHY层器件。虽然封装&#xff0c;速率&#xff0c;传输距离有所不同&#xff0c;但是其内部组成基本是一致的。 以太网交换机常用的光模块有SFP&#xff0c;GBIC&#xff0c;XFP&#xff0c;X…

运行软件找不到mfc140u.dll怎么解决,mfc140u.dll是什么文件

"找不到 mfc140u.dll"是一条错误信息&#xff0c;表示您的计算机上缺少一个名为 mfc140u.dll 的动态链接库&#xff08;DLL&#xff09;文件。这个文件通常与 Microsoft Visual C Redistributable 相关。Mfc140u.dll 是 Microsoft 基础类库&#xff08;MFC&#xff0…

GD32F103x 定时器

1. 定时器的基本介绍 STM32的定时器主要分为三种&#xff1a;高级定时器、通用定时器、基本定时器。 即&#xff1a;高级定时器具有捕获/比较通道和互补输出&#xff0c;死区时间&#xff0c;通用定时器只有捕获/比较通道&#xff0c;基本定时器没有以上两者。 1. 基本定时…

【深度学习】UNIT-DDPM核心讲解

文章目录 大致介绍&#xff1a;扩散损失&#xff1a;转换损失&#xff1a;循环一致性损失&#xff1a;推理过程&#xff1a;优缺点&#xff1a; 参考文章&#xff1a; https://blog.csdn.net/ssshyeong/article/details/127210086 这篇文章对整个文章 UNIT-DDPM: UNpaired Imag…

Python为Excel中每一个单元格计算其在多个文件中的平均值

本文介绍基于Python语言&#xff0c;对大量不同的Excel文件加以跨文件、逐单元格平均值计算的方法。 首先&#xff0c;我们来明确一下本文的具体需求。现有一个文件夹&#xff0c;其中有如下所示的大量Excel文件&#xff0c;我们这里就以.csv文件为例来介绍。其中&#xff0c;每…

网工内推 | IT高级运维工程师,周末双休,包吃包住,14-20k

01 深圳朗特智能控制股份有限公司 招聘岗位&#xff1a;IT高级运维工程师 职责描述&#xff1a; 1、对集团网络基础架构的建设、运维、安全制定相关标准和准则&#xff1b; 2、负责集团数据中心、核心设备、信息安全的管理和运维&#xff1b; 3、执行网络、服务器、核心交换机…