码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 让照片人物开口说话,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环境安装与使用详见:环境安装

    配置镜像源

    1. conda config --add channels https://pypi.tuna.tsinghua.edu.cn/simple
    2. #豆瓣源
    3. conda config --add channels http://pypi.douban.com/simple/
    4. # 阿里源
    5. conda config --add channels https://mirrors.aliyun.com/pypi/simple/
    6. #中科大源
    7. conda config --add channels https://pypi.mirrors.ustc.edu.cn/simple/
    8. conda config --remove channels https://pypi.mirrors.ustc.edu.cn/simple/
    9. conda config --remove-key channels
    10. conda install numpy=1.19.2
    11. conda create --name myenv python=3.8
    12. conda env list
    13. conda activate myenv
    14. conda deactivate
    15. 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添加清华通道:

    1. conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
    2. 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 生成该文件之后再修改。文件的一个示例:

    1. channels:
    2. - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
    3. - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
    4. - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
    5. ssl_verify: true
    6. show_channel_urls: true

    另附几个常用的镜像源:

    1. # 清华源
    2. conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
    3. conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2
    4. conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
    5. conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
    6. conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
    7. conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
    8. # 中科大源
    9. conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
    10. conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
    11. conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/
    12. conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/msys2/
    13. conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/bioconda/
    14. 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的东西。

    1. conda create -n sadtalker python=3.8
    2. conda activate sadtalker

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

    1. conda create -n sadtalker python=3.8
    2. conda activate sadtalker
    3. pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113
    4. conda install ffmpeg
    5. pip 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资源的站点:

    1. #通过代理网站下载
    2. #Release、Code(ZIP) 文件加速:
    3. https://gh.api.99988866.xyz
    4. https://github.rc1844.workers...
    5. https://ghgo.feizhuqwq.worker...
    6. https://git.yumenaka.net
    7. https://github.com.cnpmjs.org
    8. https://mirror.ghproxy.com/
    9. https://ghproxy.com/
    10. https://toolwa.com/github/
    11. #Git Clone 加速:
    12. https://github.do
    13. https://gitclone.com
    14. https://hub.fastgit.xyz
    15. https://ghproxy.com
    16. 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

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

    1. --preprocess full 表示完整图片
    2.  
    3. --still 可以减少头部运动
    4.  
    5. --enhancer gfpgan

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

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

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

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

    1. call .\venv\Scripts\activate.bat
    2. set PYTHON="venv\Scripts\Python.exe"
    3. $PYTHON inference.py --driven_audio data/sample.wav --source_image data/sample.png

    webui.bat文件内容如下:

    1. @echo off
    2. IF NOT EXIST venv (
    3. python -m venv venv
    4. ) ELSE (
    5. echo venv folder already exists, skipping creation...
    6. )
    7. call .\venv\Scripts\activate.bat
    8. set PYTHON="venv\Scripts\Python.exe"
    9. echo venv %PYTHON%
    10. %PYTHON% Launcher.py
    11. echo.
    12. echo Launch unsuccessful. Exiting.
    13. pause

    最终测试效果:

    成功生成视频:

     

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

    1. Launching SadTalker Web UI
    2. 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.)
    3.   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

  • 相关阅读:
    一篇文章搞定Redis Stream
    赐你一本_.武林秘籍,Lodash常用的方法帮助你快速开发。
    Java IO包中InputStreamReader和OutputStreamWriter的简介说明
    DataWhale - 吃瓜教程学习笔记(二)
    在受污染的二叉树中查找元素 C++
    【MySQL入门实战2】-事务的ACID
    OpenTiny HUICharts 正式开源发布,一个简单、易上手的图表组件库
    C#用API读取.ini非中英文路径失败问题
    【C++】list的介绍及使用说明
    怎么科学管理固定资产呢
  • 原文地址:https://blog.csdn.net/qq8864/article/details/133632123
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号