【硬核HeyGen平替】在window平台上使用MyHeyGen

最近在研究HeyGen的平替开源项目,然后发现了MyHeyGen这个项目,但是文档上面并没有说明如果在window平台上使用,考虑到非window平台安装显卡驱动什么的比较繁琐,所以尝试硬着头皮干...

前提

开源项目中所需的环境准备要先准备好

1.拉取项目

git clone https://github.com/AIFSH/MyHeyGen.git

调整安装脚本 install.sh,注释掉底下的 apt 安装,这里主要是要安装 ffmpeg,这个稍后需要在window平台上安装。

pip install ninja==1.10.2.3
pip install dlib --verbose
# pip install librosa==0.9.2#apt update
#apt install ffmpeg

然后就可以通过pip安装所需要的组件库了

2.安装 pip 组件库

这里碰到的第一个问题就是window的命令窗口不能够直接执行 sh 脚本,bash 命令window平台并没有,那么我们可以用 Git Bash,这里面执行这个脚本,同时,也能解决 window 平台没有Linux的一些常用命令,如cp、mv和rm等命令。

3.安装 ffmpeg

ffmpeg下载地址

笔者选择的是release-full版本,跟shared版本没太大区别。

 

解压出来的目录文件,bin目录下只有三个执行文件。

然后配置系统环境变量,就是在系统变量的path里面,添加这个bin目录路径就可以了。

要验证是否配置好了,重新打开一个命令行窗口,输入: ffmpeg -version,有版本信息输出,则证明配置成功。

3.安装 Microsoft C++ 库

在安装TTS的时候,可能会提示错误 "ERROR: Could not build wheels for tts, which is required to install pyproject"。

下载Microsoft C++ 生成工具,并安装。

4.执行转换

作者给的测试命令是基于 Linux 环境的,但是我们是window平台,所以这里就需要解决文件路径的问题。

1)video-retalking目录下的 inference.py

第一个调整点:

这个脚本涉及到转换过程中的文件复制删除、截取文件名等操作,所以要调整为window风格的。

可以打开文本编辑器,全文搜索一下 split 关键词,要将这里的 "/" 改为 "\\",这种情况有多处的,全部都需要修改一下。

调整后

第二个调整点:

不清楚是不是ffmpeg版本的问题,走到这行的时候,会提示 rf 是一个不合法的参数,所以笔者将后面的删除操作去掉了,这里应该是清除一些临时文件。

调整后

5.其他 

剩下的就是安装过程中,pip组件库的版本冲突,不兼容,网络超时等情况,这些都好解决...

如有小伙伴们有遇到什么问题,也欢迎一起讨论

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

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

相关文章

测试15k薪资第1步 —— 自动化测试理论基础

目录 1、自动化测试定义 2、自动化测试分类&工具 3、未来发展趋势 1.1、什么是自动化测试 自动化测试指的是利用软件工具或脚本来执行测试任务,以替代手动测试过程的一种测试方法。它的主要目的是通过自动化执行、验证和评估软件应用的功能、稳定性、性能等方面…

Kotlin(十一) 标准函数with、run和apply

with with函数接收两个参数:第一个参数可以是一个任意类型的对象,第二个参数是一个Lambda表达式。with函数会在Lambda表达式中提供第一个参数对象的上下文,并使用Lambda表达式中的最后一行代码作为返回值返回。示例代码如下: va…

python常用第三方模块 --- Pyinstaller(把程序打包成可执行程序)

打包方法: 在cmd下进行 pyinstaller -F 路径/程序文件名 注意:使用pyinstaller之前需要安装 pip install pyinstaller

ELK架构

经典的ELK 经典的ELK主要是由Filebeat Logstash Elasticsearch Kibana组成,如下图:(早期的ELK只有Logstash Elasticsearch Kibana) 此架构主要适用于数据量小的开发环境,存在数据丢失的危险。 整合消息队列Ngin…

如何用网格交易做ETF套利

ETF套利是指利用ETF基金的交易机制,通过短期的买卖差价或组合投资来获取利润。 具体来说,ETF套利最常用的套利方法则是:价格套利和波动套利。 1. 价格套利:当ETF二级市场的价格与一级市场的净值出现偏差时,投资者可以通…

【SwiftUI】7.预览及其内部机制

上一篇讲到了组件及组件化,从概念和优/缺点两个方向说明了组件化的意义,更为重要的是,组件和组件化是一个在编程领域,放之四海皆可以的概念,理解和运用它是非常必要的,希望大家能掌握。今天我们介绍另一个特…

Element UI的Tabs 标签页位置导航栏去除线条

在实际开发中,我们调整了相关样式,导致导航栏的相关样式跟随不上,如下图所示: 因为我跳转了前边文字的样式并以在导航栏添加了相关头像,导致右边的线条定位出现问题,我在想,要不我继续调整右边…

开发B2B商城的意义

开发B2B商城的意义主要体现在以下几个方面: 采购成本低:利用互联网采购,B2B商城的采购商可直接通过线上完成全部流程操作,在提高采购效率的同时,大大降低了B2B工业品企业采购成本。推广优势大:B2B商城的曝…

YM5411 WIFI 5模块 完美替代AP6256

YM5411是沃特沃德推出的一款低成本,低功耗的模块,该模块具有Wi-Fi(2.4GHz和5GHz IEEE 802.11 a/b/g/n/ac)蓝牙(BT5.0)功能,并通过了SRRC认证,带mesh,完美替换AP6256。高度…

OpenHarmony之NAPI框架介绍

张志成 诚迈科技高级技术专家 NAPI是什么 NAPI的概念源自Nodejs,为了实现javascript脚本与C库之间的相互调用,Nodejs对V8引擎的api做了一层封装,称为NAPI。可以在Nodejs官网(https://nodejs.org/dist/latest-v20.x/docs/api/n-api…

【python爬虫】scrapy在pycharm 调试

scrapy在pycharm 调试 1、使用scrapy创建一个项目 scrapy startproject tutorial 2、在朋友pycharm中调试scrapy 2.1 通过文件run.py调试 在根目录下新建一个文件run.py(与scrapy.cfg文件的同一目录下), debug ‘run’即可 # -*- coding:utf-8 -*- from scrapy import c…

深入浅出理解libevent——2万字总结

概述 libevent,libev,libuv都是c实现的异步事件库,注册异步事件,检测异步事件,根据事件的触发先后顺序,调用相对应回调函数处理事件。处理的事件包括:网络 io 事件、定时事件以及信号事件。这三个事件驱动着服务器的运…

数字人是真人吗?

引言: 随着科技的不断进步,数字人作为一种新兴技术正逐渐崭露头角。数字人是通过计算机生成的虚拟人物,具备逼真的外貌和行为,令人难以分辨其与真人的差异。本文将探讨数字人是否可以被视为真人,并探索数字人技术在各个…

柯桥生活日语学习,打工人的日语你会吗?

打工人在日语里有几种说法: アルバイト 这是最常用的称呼,直接对应中文的“打工”。 例句: 学生の頃はスーパーでアルバイトをしていた。(我学生时代在超市打过工。) バイト これはアルバイトの略称でよく使われる。(这是アルバイト的简称,也很常用。) 例句: バイト先が決…

《第一行代码:Android》第三版-2.4.1 if 语句

本文主要讲解if语句,kotlin的if语句是可以有返回值的,就是if语句的最后一句话就是返回值。 /*** You can edit, run, and share this code.* play.kotlinlang.org*/fun main() {println("Hello, world!!!") val largelargerNumber(5,9) prin…

如何提高希音、亚马逊、国际站店铺流量转化,自养号优势及测评底层环境逻辑

随着全球贸易数字化程度加快,尤其是跨境电商的发展日新月异,在外贸出口占比越来越高,在这其中,亚马逊作为全球实力强劲的在线零售平台之一,吸引了大量的优秀卖家。 而这也加剧了亚马逊平台的竞争程度,尤其…

HCIP数据通信——BGP协议

引言 我之前写过一篇介绍ISIS的文章,我打算把BGP知识总结以后再做实验。那么现在就讲述一下BGP的一些特点和概念。 BGP特点 BGP属于EGP(EGP也是BGP前身,指的是具体协议,被淘汰了成为了BGP),无类协议。 它…

C++(14):解决lambda生命期问题

C++(11):局部函数lambda_c++11 函数中定义函数-CSDN博客 中通过实例列举了lambda使用过程中可能会有变量生命期问题。 C++14中可以通过重新定义变量,并转移,解决这个问题: #include <iostream> using namespace std;class A { public:A(int data):m_data(data){cou…

继承中:一般函数的virtual虚函数特性、析构函数的virtual虚函数特性

1、一般的同名函数 c规定&#xff0c;当一个成员函数被声明为虚函数后&#xff0c;其派生类中的同名函数都自动成为虚函数。因此&#xff0c;在子类重新声明该虚函数时&#xff0c;可以加&#xff0c;也可以不加&#xff0c;但习惯上每一层声明函数时都加virtual,使程序更加清…

postgresql数据库中update使用的坑

简介 在数据库中进行增删改查比较常见&#xff0c;经常会用到update的使用。但是在近期发现update在oracle和postgresql使用却有一些隐形区别&#xff0c;oracle 在执行update语句的时候set 后面必须跟着1对1的数据关联而postgresql数据库却可以一对多&#xff0c;这就导致数据…