自己本机Video retalking制作数字人

首先需要注意的是,这个要求你的笔记本显存和内存都比较大。我的电脑内存是64G,显卡是8G,操作系统是Windows 11,勉强能够运行出来,但是效果不是很好。
效果如下,无法上传视频,只能通过图片展示出来:
在这里插入图片描述

需要先安装python,我这里安装的是python 3.10.9,在命令行里边输入python --version,可以看到自己安装的python版本。
在这里插入图片描述

你需要自己准备mp4原始视频和wav原始语音,而我这里,D:\VideoSoft\test\again.mp4是原始视频,D:\VideoSoft\test\voiceOfGrandma.WAV是我想要给原始视频添加的声音。

安装ffmpeg

下载并安装ffmpeg,这一步的作用是语音格式的各种转换,虚拟数字人能开口说话,需要我们上传自己的语音,如果格式不符合会自动转换。
到https://ffmpeg.org/download.html选择自己操作系统然后选择下载格式。
在这里插入图片描述

选择下载的类型,我选择全量版的。
在这里插入图片描述

然后我解压到D:\VideoSoft目录下。
在这里插入图片描述

需要配置环境变量了。
Windows+r同时按下,然后输入SYSTEMPROPERTIESADVANCED,然后点击确定。

在这里插入图片描述

然后选择高级,点击环境变量
在这里插入图片描述

选择Path,然后点击编辑
在这里插入图片描述

然后点击新建
在这里插入图片描述

把你上边解压的目录找到bin那级的目录放到环境变量里边,然后点击确定
在这里插入图片描述

把上一级窗口也点击确定
在这里插入图片描述

系统属性这一级窗口也点击确定
在这里插入图片描述

然后同时按下Windows+r,输入cmd然后按下确定键。
在这里插入图片描述

然后输入ffmpeg -version,要是显示出来很多内容,那么就是正常安装好了。
在这里插入图片描述

下载Video retalking

到https://github.com/OpenTalker/video-retalking里边下载源代码,因为我自己电脑上没有安装git,所以我直接到网页上下载源代码。
点击Code按钮,然后选择Download ZIP
图片
下载完代码之后,我把代码解压到D:\VideoSoft\video-retalking里边。
在这里插入图片描述

然后到https://drive.google.com/drive/folders/18rhjMpxK8LVVxf7PI6XwOidt8Vouv_H0里边下载各个文件,之后放入到D:\VideoSoft\video-retalking\checkpoints里边。
在这里插入图片描述

然后到D:\VideoSoft\video-retalking目录下,在目录名称所在那栏输入cmd
在这里插入图片描述
在这里插入图片描述
安装上图中输入cmd,然后按下回车键,就可以进入到命令行。
在这里插入图片描述
命令行里边输入pip install -r requirements.txt,然后等着下载依赖包。
在这里插入图片描述

发现报错如下:

error: subprocess-exited-with-error× Running setup.py install for dlib did not run successfully.│ exit code: 1╰─> [9 lines of output]running installD:\Python0310\lib\site-packages\setuptools\command\install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.warnings.warn(running buildrunning build_pyrunning build_extERROR: CMake must be installed to build dlib[end of output]note: This error originates from a subprocess, and is likely not a problem with pip.
error: legacy-install-failure× Encountered error while trying to install package.
╰─> dlib

在这里插入图片描述
需要使用pip install cmake先安装cmake。
在这里插入图片描述
再次执行pip install -r requirements.txt
在这里插入图片描述
完成之后如下图:
在这里插入图片描述
python inference.py --face D:\VideoSoft\test\again.mp4 --audio D:\VideoSoft\test\voiceOfGrandma.WAV --outfile D:\VideoSoft\test\result.mp4执行,D:\VideoSoft\test\again.mp4是原始视频,D:\VideoSoft\test\voiceOfGrandma.WAV是我想要给原始视频添加的声音,D:\VideoSoft\test\result.mp4是最后产出的视频。
发现还需要下载文件:
在这里插入图片描述

最后发现报错如下:

RuntimeError: unexpected EOF, expected 19873 more bytes. The file might be corrupted.

在这里插入图片描述
我把D:\VideoSoft\video-retalking\checkpoints\GFPGANv1.3.pth删除重新到https://drive.google.com/drive/folders/18rhjMpxK8LVVxf7PI6XwOidt8Vouv_H0下载一遍,完成之后如下图:
在这里插入图片描述

发现还是报原来的错误。
在这里插入图片描述

我把D:\Python0310\lib\site-packages\facexlib\weights这个目录删除了,然后再次执行python inference.py --face D:\VideoSoft\test\again.mp4 --audio D:\VideoSoft\test\voiceOfGrandma.WAV --outfile D:\VideoSoft\test\result.mp4
发现终于重新下载一些东西了,但是最后还是报错了:
OSError: [Errno 22] Invalid argument: './temp/D:\\VideoSoft\\test\\again.mp4_landmarks.txt'
在这里插入图片描述
再次执行python inference.py --face test\again.mp4 --audio D:\VideoSoft\test\voiceOfGrandma.WAV --outfile test\result.mp4
发现报错FileNotFoundError: [Errno 2] No such file or directory: './temp/test\\again.mp4_landmarks.txt'
在这里插入图片描述
我只好把D:\VideoSoft\video-retalking\inference.py第82行代码中修改为

lm = kp_extractor.extract_keypoint(frames_pil,base_name+'_landmarks.txt')

然后我还把'temp/'+字符串都删除。
在这里插入图片描述

再次执行python inference.py --face test\again.mp4 --audio D:\VideoSoft\test\voiceOfGrandma.WAV --outfile test\result.mp4,中间还溢出过一次,重新启动了。
在这里插入图片描述

我是知识星球上约有3万人的AI破局俱乐部初创合伙人,我的微信号是zhaoseaside,欢迎大家加我,相互学习AI知识和个人IP知识,毕竟这是未来两大风口。
大家要是需要文档中的文件,可以加我备注video retalking,我用百度网盘发给你。

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

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

相关文章

[分章:阅读]《我的第一本算法书》

第一章数据结构 1.链表 1、数据结构之一,线性排列数据,指针链接数据;访问O(n),删除/添加O(1) 2、类似链条。 2.数组 1、线性排列数据,含数据下标(即索引&…

C++如何在0和1之间取随机数

在C中&#xff0c;你可以使用 <random> 库来生成0和1之间的随机数。这个库提供了各种生成随机数的方法&#xff0c;包括均匀分布的随机数。 下面是一个简单的例子&#xff0c;展示如何使用 <random> 库来生成0和1之间的随机数&#xff1a; cpp复制代码 #include…

二、docker的常用命令(持续补充img)

目录 一、启动相关1.设置容器开机启动 二、查询相关1.查询所有容器&#xff08;包括停止的&#xff09; 三、修改相关1.指定容器开机自启动 一、启动相关 1.设置容器开机启动 在我们使用镜像run一个容器的时候&#xff0c;希望这个容器随着docker的启动而启动&#xff08;我的…

Ubuntu20.04.3LTS桌面版与Window10双系统并存

Ubuntu20.04.3LTS桌面版与Window10双系统并存 文章目录 Ubuntu20.04.3LTS桌面版与Window10双系统并存1.分区与安装1. 硬盘分区1. 一般用途2. 服务器用 2. 操作系统版本及分区信息3. 安装时创建用户4. 安装后修改root设置用户密码&#xff1a;3. 安装时指定ip4. 设置静态IP 2. 安…

【leetcode100-051到054】【图论】四题合集

【岛屿数量】 给你一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的的二维网格&#xff0c;请你计算网格中岛屿的数量。 岛屿总是被水包围&#xff0c;并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外&#xff0c;你可以假设…

Java线程池七大参数详解和配置(面试重点)

一、corePoolSize核心线程数 二、maximunPoolSize最大线程数 三、keepAliveTime空闲线程存活时间 四、unit空闲线程存活时间的单位 五、workQueue线程工作队列 1、ArrayBlockingQueue FIFO有界阻塞队列 2、LinkedBlockingQueue FIFO无限队列 3、PriorityBlockingQueue V…

【代码随想录】刷题笔记Day54

前言 差单调栈就结束代码随想录一刷啦&#xff0c;回家二刷打算改用python补充进博客&#xff0c;小涛加油&#xff01;&#xff01;&#xff01; 647. 回文子串 - 力扣&#xff08;LeetCode&#xff09; 双指针法 中心点外扩&#xff0c;注意中心点可能有一个元素可能有两个…

neo4j jdk17下 dump 报错

更换jdk版本 只需要改下bin目录下的neo4j.bat, 把set "JAVA_HOMEXXXX"加入进去就行 windows SET "JAVA_HOMEc:\...." linux bin目录下 neo4j 在首行添加JAVA_HOME/usr/local/jdk文件夹即可 tomcat 指定jdk 找到bin下的setclasspath.bat文件&#xff1b;在…

Supervised Contrastive 损失函数详解

有什么不对的及时指出&#xff0c;共同学习进步。(●’◡’●) 有监督对比学习将自监督批量对比方法扩展到完全监督设置&#xff0c;能够有效地利用标签信息。属于同一类的点簇在嵌入空间中被拉到一起&#xff0c;同时将来自不同类的样本簇推开。这种损失显示出对自然损坏很稳…

【Linux C | 进程】进程终止、等待 | exit、_exit、wait、waitpid

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

【Kafka】开发实战和Springboot集成kafka

目录 消息的发送与接收生产者消费者 SpringBoot 集成kafka服务端参数配置 消息的发送与接收 生产者 生产者主要的对象有&#xff1a; KafkaProducer &#xff0c; ProducerRecord 。 其中 KafkaProducer 是用于发送消息的类&#xff0c; ProducerRecord 类用于封装Kafka的消息…

C 练习实例39

题目&#xff1a;有一个已经排好序的数组。现输入一个数&#xff0c;要求按原来的规律将它插入数组中。 代码&#xff1a; #include <stdio.h> #define N 10 int main() {int a[N]{1,3,5,7,9,11,13,15,17}; //元素数组int nN;int i,temp;printf("原始数组是:\n&qu…

仅使用K-M法+Cox比例风险模型就能发二区文章 | SEER公共数据库周报(1.17)

欢迎各位参加本周中山大学著名卫生统计学家方积乾教授公益直播讲座&#xff01; 就在本周三晚&#xff0c;主题为“真实世界研究与RCT研究”&#xff0c;欢迎各位预约参加&#xff01; SEER&#xff08;The Surveillance, Epidemiology, and End Results&#xff09;数据库是由…

回溯算法篇-01:全排列

力扣46&#xff1a;全排列 题目分析 这道题属于上一篇——“回溯算法解题框架与思路”中的 “元素不重复不可复用” 那一类中的 排列类问题。 我们来回顾一下当时是怎么说的&#xff1a; 排列和组合的区别在于&#xff0c;排列对“顺序”有要求。比如 [1,2] 和 [2,1] 是两个不…

【AI】深度学习在编码中的应用(10)

目录 先看2个定义&#xff1a;P帧和B帧 基于层次学习的高效视频压缩技术 基于B帧的B-EPIC方法 今天来学习编码配置优化技术。 先看2个定义&#xff1a;P帧和B帧 在视频压缩中&#xff0c;P帧和B帧都是关键的概念&#xff0c;它们与I帧一起构成了视频压缩的三种基本帧类型。…

柔性数组和C语言内存划分

柔性数组和C语言内存划分 1. 柔性数组1.1 柔性数组的特点&#xff1a;1.2 柔性数组的使用1.3 柔性数组的优势 2. 总结C/C中程序内存区域划分 1. 柔性数组 也许你从来没有听说过柔性数组&#xff08;flexible array)这个概念&#xff0c;但是它确实是存在的。 C99 中&#xff…

力扣740. 删除并获得点数

动态规划 思路&#xff1a; 选择元素 x&#xff0c;获得其点数&#xff0c;删除 x 1 和 x - 1&#xff0c;则其他的 x 的点数也会被获得&#xff1b;可以将数组转换成一个有序 map&#xff0c;key 为 x&#xff0c; value 为对应所有 x 的和&#xff1b;则问题转换成了不能同…

Postman基本使用、测试环境(Environment)配置

文章目录 准备测试项目DemoController测试代码Interceptor模拟拦截配置 Postman模块简单介绍Postman通用环境配置新建环境(Environment)配置环境(Environment)设置域名变量引用域名变量查看请求结果打印 Postman脚本设置变量登录成功后设置全局Auth-Token脚本编写脚本查看conso…

即插即用篇 | UniRepLKNet:用于音频、视频、点云、时间序列和图像识别的通用感知大卷积神经网络 | DRepConv

大卷积神经网络(ConvNets)近来受到了广泛研究关注,但存在两个未解决且需要进一步研究的关键问题。1)现有大卷积神经网络的架构主要遵循传统ConvNets或变压器的设计原则,而针对大卷积神经网络的架构设计仍未得到解决。2)随着变压器在多个领域的主导地位,有待研究ConvNets…

软件设计师——项目管理(一)

&#x1f4d1;前言 本文主要是【项目管理】——软件设计师——项目管理的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304…