论文:https://arxiv.org/pdf/2008.10010.pdf

训练源码:https://github.com/Rudrabha/Wav2Lip

经过调整过的代码:https://gitee.com/sparkle__code__guy/wave2lip 

ffmpeg的安装:https://blog.csdn.net/sslfk/article/details/123050218 ,可以window,也可以linux

训练配置:首先必须依赖GPU

下载源码,下载专家判别系统:Sign in to your account

并将模型放到 checkpoints文件目录下

第一步:准备视频数据,爬取可以通过硕鼠爬取想要的人物说话风格数据

第二步:执行preprocess.py,执行命令如下:

python preprocess.py --ngpu 1 --data_root data/original_data2 --preprocessed_root data/preprocessed_root2

其中,data_root为原始视频地址,preprocessed_root为处理完的视频存放的位置;准备的视频数量至少为3个才可以。

第三步骤:获取对应的文件列表并更新到filelists/train.txt和filelists/eval.txt。只保存对应的视频名称即可。代码可以参考,对视频样本重命名并生成对应的命名列表,此处视频文件数量过少<2,会报错:

import time
from glob import glob
import shutil,os

from sklearn.model_selection import train_test_split


#去除名字的特殊符号,统一序号视频文件命名

def original_video_name_format():
    base_path = "data/original_data"
    result = list(glob("{}/*".format(base_path),recursive=False))
    file_num = 0
    result_list = []

    for each in result:
        file_num +=1
        new_position ="{0}{1}".format( int(time.time()),file_num)
        result_list.append(new_position)
        shutil.move(each, os.path.join(base_path,new_position+".mp4"))
        pass

def trained_data_name_format():
    base_path = "data/preprocessed_root/original_data"
    result = list(glob("{}/*".format(base_path)))
    print(result)
    result_list = []
    for i,dirpath in enumerate(result):
        shutil.move(dirpath,"{0}/{1}".format(base_path,i))
        result_list.append(str(i))
    if len(result_list)<14:
        test_result=val_result=train_result=result_list
    else:
        train_result,test_result = train_test_split(result_list,test_size=0.15, random_state=42)
        test_result, val_result = train_test_split(test_result, test_size=0.5, random_state=42)

    for file_name,dataset in zip(("train.txt","test.txt","val.txt"),(train_result,test_result,val_result)):
        with open(os.path.join("filelists",file_name),'w',encoding='utf-8') as fi:
            fi.write("\n".join(dataset))

    print("\n".join(result_list))


第四步骤:

执行如下命令,开始训练:

python wav2lip_train.py --data_root ./data/preprocessed_root/original_data --checkpoint_dir ./savedmodel --syncnet_checkpoint_path ./checkpoints/lipsync_expert.pth --checkpoint_path ./checkpoints/wav2lip.pth

训练过程如下图:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Lya5Y-RcGFwZXLnmoTlrabmuKM=,size_20,color_FFFFFF,t_70,g_se,x_16

 其他环境配置参考:README.md · 仓库11360838 - Gitee.com

模型预测:

python inference.py --checkpoint_path Wav2Lip/savedmodel/checkpoint_step000000001.pth --face Wav2Lip/data/original_data/test.mp4 --audio Wav2Lip/data/preprocessed_root/original_data/1/audio.wav 

调整后的代码路径为: https://gitee.com/sparkle__code__guy/wave2lip

有需要联系请邮箱:1115349889@qq.com

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐