基于Wav2Lip+GFPGAN的高清版AI主播

这篇具有很好参考价值的文章主要介绍了基于Wav2Lip+GFPGAN的高清版AI主播。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

继上一篇 基于Wav2Lip的AI主播 的内容之后很多小伙伴反应一个问题就是生成的AI人物并不是很清晰,尤其是放到编辑器里会出现明显的痕迹,因此这次带来的了 Wav2Lip+GFPGAN 高清版的内容,如果不太了解这个项目实做什么的可以来先看一下效果。该项目暂时没有中文介绍,我这个应该是首发。

这个项目是基于基于Wav2Lip的AI主播 项目的环境延伸,如果没有该环境的请先去该文章进行配置。

基于Wav2Lip自制高清版,用自己形象做数字人清楚多了

虽然说是自制但是也基于git大佬的源代码按照自己的需求进行的修改,整体的原理就是基于视频的每一帧进行高清处理,然后进行合并拼接成视频,最后拼接音频形成完整的视频。

准备工作

  1. Python环境需要基于 Anaconda 环境。Python初学者在不同系统上安装Python的保姆级指引
  2. 配置好 GPU 的 Pytorch 环境。Win10+Python3.9+GPU版pytorch环境搭建最简流程
  3. github上下载源码,对应预训练模型不用着急,在第一次启动的时候没有预训练模型会自动进行下载。如果网络太慢可以将对应的下载地址放到迅雷中下载,并复制到对应的项目地址中即可。
  4. 自行创建虚拟环境。Python虚拟环境的安装和使用
  5. 如果都不会或者懒的话,直接看文章最下方的的网盘分享一键包。

pip 项目依赖

pip install basicsr>=1.3.4.0
pip install facexlib>=0.2.3
pip install lmdb
pip install pyyaml
pip install scipy
pip install tb-nightly
pip install yapf
pip install realesrgan
pip install ffmpeg

pip install torch==1.10.2+cu113 torchvision==0.3.0 --extra-index-url https://download.pytorch.org/whl/cu113

生产流程

首先你要确定几个生产目录,即下面代码中需要使用到的。

  • inputs:制作口播视频的基础视频。
  • outputs:输出制作好成品以及基础数据。

inputs 数据文件

创建一个自己的项目,例如用自己的昵称作为文件夹。这里需要将音频文件和数字人的视频文件分开存储。

wav2lip-gfpgan,Python AI数字人,人工智能,python,深度学习,数字人
脚本会自动的搜索 source_audio 下的文件并在 output 中创建对应的文件目录。

wav2lip-gfpgan,Python AI数字人,人工智能,python,深度学习,数字人

source_video 是你制作数字人的视频素材,建议不要超过1分钟,具体为什么不多说。

wav2lip-gfpgan,Python AI数字人,人工智能,python,深度学习,数字人

执行代码脱手制作

如果对自己机器性能有信心的话可以在下面多进程那个地方解开注释,使用多进程进行高清处理。

import os
import random
import shutil
import cv2
from tqdm import tqdm
from os import path
import numpy as np
import threading

basePath = "."

# 需要的算法框架目录
wav2lipFolderName = 'Wav2Lip-master'
gfpganFolderName = 'GFPGAN-master'
wav2lipPath = basePath + '/' + wav2lipFolderName
gfpganPath = basePath + '/' + gfpganFolderName

# 确定需要制作的用户视频
userPath = "Mr数据杨"

# 获取本次需要合成视频的音频文件
userAudioPathList = os.listdir("inputs/" + userPath + "/source_audio")

for sourceAudioName in userAudioPathList:
    # 获取每个音频的名称
    title = sourceAudioName.split(".")[-2]
    # 每次随机从用户的原始文件中提取一个视频作为素材文件
    userVideoPathList = os.listdir("inputs/" + userPath + "/source_video")
    sourceVideoName = random.sample(userVideoPathList, 1)[0]

    # 输出项目目录
    outputPath = basePath + "/outputs/" + title
    if not os.path.exists(outputPath):
        os.makedirs(outputPath)
    # 输入音频目录
    inputAudioPath = basePath + "/inputs/" + userPath + "/source_audio/" + sourceAudioName
    # 输入视频目录
    inputVideoPath = basePath + "/inputs/" + userPath + "/source_video/" + sourceVideoName
    # 视频数据输出目录
    lipSyncedOutputPath = basePath + '/outputs/' + title + "/result.mp4"

    # wav2lip生成cmd命令行处理数据
    cmd = "F:\MyEnvsProject\Wav2Lip\python.exe {}/inference.py --checkpoint_path {}/checkpoints/wav2lip_gan.pth --face {} --audio {} --outfile {} --resize_factor 2 --fps 60  --face_det_batch_size 8 --wav2lip_batch_size 128".format(
        wav2lipFolderName, wav2lipFolderName, inputVideoPath, inputAudioPath, lipSyncedOutputPath)
    os.system(cmd)

    # 将视频中的每一帧生成图片到目录中
    inputVideoPath = outputPath + '/result.mp4'
    unProcessedFramesFolderPath = outputPath + '/frames'

    if not os.path.exists(unProcessedFramesFolderPath):
        os.makedirs(unProcessedFramesFolderPath)

    # gpu_frame = cv2.cuda_GpuMat()

    vidcap = cv2.VideoCapture(inputVideoPath)
    numberOfFrames = int(vidcap.get(cv2.CAP_PROP_FRAME_COUNT))
    fps = vidcap.get(cv2.CAP_PROP_FPS)
    # print("FPS: ", fps, "Frames: ", numberOfFrames)

    for frameNumber in tqdm(range(numberOfFrames)):
        _, image = vidcap.read()
        cv2.imwrite(path.join(unProcessedFramesFolderPath, str(frameNumber).zfill(4) + '.jpg'), image)

    # 高清处理每一帧图片
    cmd = "F:\MyEnvsProject\Wav2Lip\python.exe {}/inference_gfpgan.py -i {} -o {} -v 1.3 -s 2 --only_center_face --bg_upsampler None".format(
        gfpganPath,
        unProcessedFramesFolderPath,
        outputPath)
    os.system(cmd)

    restoredFramesPath = outputPath + '/restored_imgs/'
    if not os.path.exists(restoredFramesPath):
        os.makedirs(restoredFramesPath)
    processedVideoOutputPath = outputPath

    dir_list = os.listdir(restoredFramesPath)
    dir_list.sort()

    batch = 0
    batchSize = 600

    for i in tqdm(range(0, len(dir_list), batchSize)):
        img_array = []
        start, end = i, i + batchSize
        print("processing ", start, end)
        for filename in tqdm(dir_list[start:end]):
            filename = restoredFramesPath + filename;
            img = cv2.imread(filename)
            if img is None:
                continue
            height, width, layers = img.shape
            size = (width, height)
            img_array.append(img)

        out = cv2.VideoWriter(processedVideoOutputPath + '/batch_' + str(batch).zfill(4) + '.mp4',
                              cv2.VideoWriter_fourcc(*'DIVX'), 60, size)
        batch = batch + 1

        for i in range(len(img_array)):
            out.write(img_array[i])
        out.release()

    # 最终合成视频
    concatTextFilePath = outputPath + "/concat.txt"
    concatTextFile = open(concatTextFilePath, "w", encoding='utf8')
    for ips in range(batch):
        concatTextFile.write("file batch_" + str(ips).zfill(4) + ".mp4\n")
    concatTextFile.close()

    concatedVideoOutputPath = outputPath + "/concated_output.mp4"
    cmd = "ffmpeg -y -f concat -i {} -c copy {}".format(concatTextFilePath, concatedVideoOutputPath)
    os.system(cmd)

    finalProcessedOutputVideo = processedVideoOutputPath + '/final_with_audio.mp4'
    cmd = "ffmpeg -y -i {} -i {} -map 0 -map 1:a -c:v copy -shortest {}".format(concatedVideoOutputPath, inputAudioPath,
                                                                                finalProcessedOutputVideo)
    os.system(cmd)

outputs 数据文件

脚本执行完毕之后会在对应的 output 文件夹生成对应的文件目录。

wav2lip-gfpgan,Python AI数字人,人工智能,python,深度学习,数字人
红框的文件即最后合成高清的视频文件。

【分享】Wav2Lip-GFPGAN

百度网盘
夸克网盘 提取码:3DSr文章来源地址https://www.toymoban.com/news/detail-806684.html

到了这里,关于基于Wav2Lip+GFPGAN的高清版AI主播的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • AI数字人:语音驱动人脸模型Wav2Lip

    2020年,来自印度海德拉巴大学和英国巴斯大学的团队,在ACM MM2020发表了的一篇论文《A Lip Sync Expert Is All You Need for Speech to Lip Generation In The Wild 》,在文章中,他们提出一个叫做Wav2Lip的AI模型,只需要一段人物视频和一段目标语音,就能够让音频和视频合二为一,人物嘴型与

    2024年02月11日
    浏览(25)
  • Wav2Lip:深度解析、实现与应用AI数字人语音驱动模型

    Wav2Lip模型作为一种将音频波形转换为面部动画的深度学习技术的重要性。本文将深入探讨Wav2Lip模型的搭建原理、搭建流程以及应用场景,以期为读者提供更具技术深度的理解。 一、Wav2Lip的搭建原理 Wav2Lip模型的搭建基于生成对抗网络(GAN)的原理。GAN由两个主要部分组成:

    2024年03月09日
    浏览(48)
  • Wav2Lip使用教程

    提示:基本准备工作: 项目名称: Wav2Lip git地址 : https://github.com/Rudrabha/Wav2Lip.git Python 3.6 语言环境 ffmpeg: sudo apt-get install ffmpeg 安装 pip install -r requirements.txt 【系统用要求安装的依赖包】 人脸检测预训练模型应下载到Face_detection/detection/sfd/s3fd.pth。如果以上内容不起作用,请选

    2024年02月07日
    浏览(30)
  • 基于 Wav2Lip-GFPGAN 深度学习模型的数字人Demo

    工作中遇到简单整理 博文为 Wav2Lip-GFPGAN 环境搭建运行的 Demo 理解不足小伙伴帮忙指正 对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是

    2024年02月08日
    浏览(37)
  • 最新能让老外对口型讲中文的AI 视频教程,免费开源AI工具——Wav2Lip

    本期就来教大家制作海外大佬们新年祝福视频吧!对口型视频一直在全网都非常的火爆,随便一个视频都是几千赞以上,简直堪称涨粉利器! 是不是很有意思,口型完全对得上,表情也很自然逼真,不懂内行的人,还真的以为是大佬中文说得非常溜! 这种内容形态非常适合

    2024年04月25日
    浏览(24)
  • Wav2Lip视频人脸口型同步(Win10)

    最近比较火的一个AI场景,就是用原声讲外语,嘴型同步,网上找了些资料,今天也跑起来了,推荐 Wav2Lip,官网地址:Github Wav2Lip Python3.6 ffmpeg git clone https://github.com/Rudrabha/Wav2Lip.git pip install -r requirements.txt 下载人脸检测模型,并放在路径 face_detection/detection/sfd/s3fd.pth Wav2Lip模

    2024年02月01日
    浏览(24)
  • stable-diffusion-webui安装Wav2Lip

    常见错误 1.错误:Torch is not able to use GPU; add --skip-torch-cuda-test to COMMANDLINE_ARGS variable to disable this check 修改代码: 删除三个地方:

    2024年01月22日
    浏览(29)
  • wav2lip:Accurately Lip-syncing Videos In The Wild

    飞桨AI Studio - 人工智能学习与实训社区 集开放数据、开源算法、免费算力三位一体,为开发者提供高效学习和开发环境、高价值高奖金竞赛项目,支撑高校老师轻松实现AI教学,并助力开发者学习交流,加速落地AI业务场景 https://aistudio.baidu.com/aistudio/education/group/info/16651 wav

    2024年02月06日
    浏览(40)
  • 超写实虚拟数字人再升级:Wav2Lip-GFPGAN完整版教程及效果视频评测【手把手】

    在前面的一篇数字人文章中,我们介绍了AI主播虚拟人技术中的一项重要技术——Wav2Lip,并附上了完整版教程和效果评测,具体可见AI数字人虚拟主播技术实现Wav2Lip及效果演示评测【附完整版教程】。然而,我们也发现了一个问题,生成的视频中面部的画质相对模糊,缺乏细

    2024年02月16日
    浏览(36)
  • AI数字人:语音驱动面部模型及超分辨率重建Wav2Lip-HD

    数字人打造中语音驱动人脸和超分辨率重建两种必备的模型,它们被用于实现数字人的语音和图像方面的功能。通过Wav2Lip-HD项目可以快速使用这两种模型,完成高清数字人形象的打造。 项目代码地址:github地址 1.1 语音驱动面部模型wav2lip 语音驱动人脸技术主要是通过语音信

    2024年02月16日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包