2024最新最强数字人实时驱动方案——DH_live 部署教程

out

数字人实时驱动技术不仅推动了技术和艺术的融合,也为各行各业提供了新的工具和方法,使得虚拟与现实的界限日益模糊。 

  • 互动性:用户可以与数字人实时交互,提供了一种更加动态和吸引人的用户体验。
  • 广泛应用:可以用于虚拟客服、在线教育、娱乐等多个领域。
  • 训练和模拟:在医疗、军事训练等领域,数字人可以提供高度逼真的交互模拟环境。

DH_live实时驱动:消耗显存不到2G

 一、环境部署

项目地址:GitHub - kleinlee/DH_live: 每个人都能用的数字人

cd checkpoint
gzip -d -c render.pth.gz.001 > render.pth

也就是解压render.pth.gz.001,得到 render.pth。

conda create -n dhlive python==3.9
conda activate dhlive
pip install -r requirement.txt

可能安装不完全,缺什么再pip单独安装。

坑点应该是其中的pytorch部分,要求是:torch==2.1.1+cu121
torchvision==0.16.1+cu121,我cuda版本是11.8,安装121的pytorch也可以运行。

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

二、素材准备

准备自己的视频,1.mp4.

python data_preparation.py 1.mp4

将生成的front.mp4 和back.mp4复制data中,再次运行python data_preparation.py 1.mp4。

就会在video_data下生成一个文件夹里面包含:circle.mp4和keypoint_rotate.pkl

(但是可能有问题,只生成某一个,我的情况是,windows电脑生成一个,ubuntu服务器生成了另一个)

三、合成视频

将video_data下生成一个文件夹重命名为test1

python demo.py video_data/test1 video_data/audio0.wav out.mp4

就生成了合成视频。

四、实时驱动

python demo_avatar.py

可以通过麦克风,实时驱动嘴型。

import time
import os
import numpy as np
from scipy.io import wavfile
import cv2
import glob
from talkingface.audio_model import AudioModel
from talkingface.render_model import RenderModel

audioModel = AudioModel()
audioModel.loadModel("checkpoint/audio.pkl")

renderModel = RenderModel()
renderModel.loadModel("checkpoint/render.pth")
test_video = "test"
pkl_path = "video_data/{}/keypoint_rotate.pkl".format(test_video)
video_path = "video_data/{}/circle.mp4".format(test_video)
renderModel.reset_charactor(video_path, pkl_path)

wavpath = "video_data/audio0.wav"
rate, wav = wavfile.read(wavpath, mmap=False)
index_ = 0
frame_index__ = 0
import sounddevice as sd
sample_rate = 16000
samples_per_read = int(0.04 * sample_rate)
with sd.InputStream(
        channels=1, dtype="float32", samplerate=sample_rate
) as s:
    while True:
        samples, _ = s.read(samples_per_read)  # a blocking read
        pcm_data = samples.reshape(-1)
        print(pcm_data.shape)
        mouth_frame = audioModel.interface_frame(pcm_data)
        frame = renderModel.interface(mouth_frame)
        cv2.imshow("s", frame)
        cv2.waitKey(10)
        index_ += 1
  1. 模块导入和初始化

    • 导入必要的模块,如timeosnumpyscipy.io.wavfilecv2glob
    • 导入自定义的AudioModelRenderModel,这些可能是用于处理音频和视频的深度学习模型。
  2. 模型加载

    • 加载音频和渲染模型的预训练权重。
  3. 视频和关键点数据处理

    • 为渲染模型设定视频路径和关键点数据路径。
  4. 音频处理

    • 读取音频文件,并使用sounddevice模块实时获取音频输入。
  5. 实时音频到视频渲染

    • 实时处理输入的音频数据,将其转换成相应的口型关键帧。
    • 使用渲染模型将这些口型关键帧转换为视频帧。
    • 通过cv2.imshow实时显示这些视频帧。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学术菜鸟小晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值