让照片人物开口说话,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,一经查实,立即删除!

相关文章

仓库数据增量更新加载算法(支持混乱日期跑批)

1、 建库及测试数据插入脚本 --建增量更新目标表 -- Create table create table EDW_T100_BAL_IU ( ID VARCHAR2(8) not null,BAL NUMBER(22,2),UPDATE_DT VARCHAR2(8) ); -- Add comments to the table comment on table EDW_T100_BAL_IUis 余额(增…

2023年湘潭大学OJ作业1 XTU OJ 1063,1064,1065,1066,1067 2023年下学期《C语言》作业0x00-输入输出

第一题 #include<stdio.h>int main() {int a;scanf("%d",&a);printf("%d,%X",a,a);return 0; } 十六进制使用%x来表示&#xff0c;注意x是大写就出输出的是大写字母&#xff0c;x是小写就输出的是小写字母 第二题 #include<stdio.h>in…

[C++基础]-多态

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正。 本期学习目标&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中&#xff0c;并且使用一个数组依次存储元音字母的下标。 然后将字符串sv进行反转&#xff0c;并遍历元音下标数组&#xff0c;将反转后的字符串sv依次插入到源字符串s中 AC Code class Solution { public:string reverseVowels(string s) {…

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

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

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

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

软考 系统架构设计师系列知识点之软件架构风格(7)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之软件架构风格&#xff08;6&#xff09; 这个十一注定是一个不能放松、保持“紧”的十一。由于报名了全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff0c;11月4号就要考试&#xff0c;因此…

SQL创建与删除索引

索引创建、删除与使用&#xff1a; 1.1 create方式创建索引&#xff1a;CREATE [UNIQUE – 唯一索引 | FULLTEXT – 全文索引 ] INDEX index_name ON table_name – 不指定唯一或全文时默认普通索引 (column1[(length) [DESC|ASC]] [,column2,…]) – 可以对多列建立组合索引 …

【JS原型链,常见的修改原型对象的方法有哪些?】

原型链 什么是原型链修改原型对象的方法1. 修改原型对象上的属性和方法2. 重写原型对象3. 使用Object.create创建新的原型对象4. 使用Object.setPrototypeOf修改原型链 什么是原型链 JavaScript中每个对象都有一个内部属性[[Prototype]]指向它的原型对象&#xff0c;原型对象也…

acwing算法基础之基础算法--高精度乘法算法

目录 1 知识点2 模板 1 知识点 大数乘以小数 大数的每一位与小数相乘 2 模板 //A是大数&#xff0c;b是小数 //最后去除高位上的0 vector<int> mul(vector<int>& A, int b) {vector<int> C;int t 0;for (int i 0; i < A.size() || t; i) {if (i …

8.2 JUC - 7.线程安全集合类概述

目录 一、遗留的线程安全集合二、使用 Collections 装饰的线程安全集合三、java.util.concurrent.* 包下的对象 线程安全集合类可以分为三大类&#xff1a; 一、遗留的线程安全集合 Hashtable &#xff0c; Vector 二、使用 Collections 装饰的线程安全集合 Collections.sy…

salesforce点击classic按钮调用lightning组件

创建按钮&#xff0c;选择visualforce 页面&#xff0c;然后创建visualforce页面。 how to Call a Lightning component from a Classic custom button You can definitely call a Lightning Component from a Classic custom button. However, the process is not straightfo…

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

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

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

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

Java异常:基本概念、分类和处理

Java异常&#xff1a;基本概念、分类和处理 在Java编程中&#xff0c;异常处理是一个非常重要的部分。了解如何识别、处理和避免异常对于编写健壮、可维护的代码至关重要。本文将介绍Java异常的基本概念、分类和处理方法&#xff0c;并通过简单的代码示例进行说明。 一、什么…

Flask实现注册登录模块

&#x1f64c;秋名山码民的主页 &#x1f602;oi退役选手&#xff0c;Java、大数据、单片机、IoT均有所涉猎&#xff0c;热爱技术&#xff0c;技术无罪 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; 获取源码&#xff0c;添加WX 目录 前言1.…

AIGC(生成式AI)试用 8 -- 曾经的难题

长假&#xff0c;远离电脑、远离手机、远离社交。 阴雨连绵&#xff0c;望着窗外发呆&#xff0c;AIGC为何物&#xff1f;有什么问题要问AIGC&#xff1f;AIGC可以代替我来发呆&#xff0c;还是可是为我空出时间发呆&#xff1f; 如果可以替代我发呆&#xff0c;要我何…

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

文章目录 总述SGD(Stochastic Gradient Descent)(随机梯度下降&#xff09;Batch &#xff08;批量&#xff09;mini Batch (迷你批量&#xff09; 总述 SGD, Batch, and Mini Batch是可用于神经网络的监督学习计算权重更新的方案&#xff0c;即∆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" :…