【AI视频】AI虚拟主播制作初体验:从生成数字人到视频创作全流程


在这里插入图片描述

博客主页: [小ᶻZ࿆]
本文专栏: AI视频 | AI数字人

文章目录

  • 💯AI虚拟主播
  • 💯使用AI绘画工具生成数字人
    • 借助GPT生成数字人所需的提示词
    • 方案一:使用Midjourney生成数字人
    • 方案二:使用TensAI生成数字人
    • 补充方案三:在D-ID内直接生成数字人
  • 💯使用D-ID生成数字人视频
    • D-ID注册与消耗积分说明
    • D-ID 让数字人“活”起来
  • 💯小结


在这里插入图片描述


最终效果呈现:

AI虚拟主播


💯AI虚拟主播

随着人工智能技术的不断进步,AI虚拟主播正逐渐成为内容创作领域的一大热点。通过AI技术生成的虚拟形象不仅能够高度还原真人的外观,还能够与观众进行互动,提供更加个性化的内容体验。无论是在广告宣传、教育培训,还是在直播与社交平台上,AI虚拟主播都展现出了巨大的潜力。本文将带你进行一次初步探索,感受AI虚拟主播的魅力。通过使用AI绘画工具生成逼真的数字人形象,并借助D-ID等平台让这些静态的形象“活”起来。
在这里插入图片描述


💯使用AI绘画工具生成数字人

首先,我们要使用AI绘画工具为我们生成一个虚拟的数字人形象,这种数字人会非常接近真人的形象。这里使用的AI绘画工具比较推荐Midjourney,如果没有Midjourney也没关系,还会推荐一款在线网页版的文生图的国内AI网站也可生成数字人,供我们使用。
补充:D-ID内也可直接生成数字人形象。
在这里插入图片描述


借助GPT生成数字人所需的提示词

首先我们要去构思如何编写创建数字人形象的提示词,我们通常会设定一些条件,比如他所从事的行业、年龄范围以及五官的具体特征等。这些设定有助于生成一个更符合我们需求的虚拟形象。

  • 以下是一些参数可以参考:
参数
基础国家、身份(学生/上班族/明星/网红/女装模特)、年龄
容貌面部(眼睛/鼻子/嘴巴/脸型)、肤色、身材、追加附魔词
服装面部(眼睛/鼻子/嘴巴/脸型)、肤色、身材、追加附魔词
场景地点、时间、天气、光线
摄影现实、人像摄影、构图 (占比)
动作默认也可以设定
比例9:16或3:4宽高比
  • 这里提供一个现成模板用于测试
中国、网红
女明星,五官立体,身材好,
白色连衣裙
街拍,购物街道,
索尼,85mm
走路,
9:16
  • 可以让AI为我们生成提示词
现在你是一名基于输入描述的提示词生成器,你会将我输入的自然语言想象为完整的画面生成提示词。请注意,你生成后的内容服务于一个绘画AI,它只能理解具象的提示词而非抽象的概念。我将提供简短的中文描述,生成器需要为我提供准确的提示词,必要时优化和重组以提供更准确的内容,也只输出翻译后的英文内容。
请模仿示例的结构生成完美的提示词。
示例输入:“一个坐在路边的办公室女职员”
示例输出:1 girl, office lady, solo, 16yo,beautiful detailed eyes, light blush, black hair, long hair, mole under eye, nose blush , looking at viewer, suits, white shirt, striped miniskirt, lace black pantyhose, black heels, LV bags, 
thighhighs,sitting, street, shop border, akihabara , tokyo, tree, rain, cloudy, beautifully detailed background, depth of field, loli, realistic, ambient light, cinematic composition, neon lights, HDR, Accent Lighting, pantyshot, fish eye lens.
请仔细阅读我的要求,并严格按照规则生成提示词,如果你明白了,请回复"我准备好了",当我输入中文内容后,请生成我需要的英文内容。注意,英文连着写,不要标序号。
  • 使用KIMI、文心一言等AI工具也同样可以帮助我们生成提示词,这里以GPT为例:
    在这里插入图片描述
    在这里插入图片描述
  • 以下是生成好的提示词,已加上分辨率9:16
Chinese celebrity, internet star, female, detailed facial features, attractive body, white dress, street photography, shopping street, Sony 85mm lens, walking, realistic, urban background, fashion, vibrant colors, natural lighting, candid moment. --ar 9:16

方案一:使用Midjourney生成数字人

  1. 向Midjourney输入上一步GPT给我们生成的提示词
    在这里插入图片描述
  2. 放大我们需要的那张图,保存到本地。
    在这里插入图片描述

方案二:使用TensAI生成数字人

如果没有Midjourney,可先使用这个国内的AI工具,使用在线文生图功能:
TensAI:https://tensai.tenclass.com/?invite_code=4fdhLK

  1. 选择文生图功能,工具勾选M-J-P生成人像效果更佳。
    在这里插入图片描述

  2. 接着跟Midjourney一样输入提示词
    在这里插入图片描述

  3. 生成后找一张适合的进行放大
    在这里插入图片描述

  4. 保存到本地。
    在这里插入图片描述


  • 注意:以上是列举了两个相对容易上手的AI绘画工具,分别是Midjourney和TensAI,用于生成数字人图像。当然,除了这两个工具外,其他AI绘画工具也同样适用,例如Stable Diffusion等。选择哪种工具取决于你的具体需求和使用习惯,每种工具都有其独特的功能和优势,灵活选择能够帮助你更好地实现创作目标。

补充方案三:在D-ID内直接生成数字人

  • 写到一半才发现D-ID原来也可以在线生成数字人。
    在这里插入图片描述
  • 生成速度挺快的,效果也不错,这样子方便很多。
    在这里插入图片描述

💯使用D-ID生成数字人视频

  • 在生成了逼真的数字人图像后,下一步就是让这些静态的图片形象“活”起来。这时,我们可以借助D-ID来实现这一目标。D-ID 是一款先进的AI技术平台,它能够将静态的图像转化为生动的面部动画和视频。通过D-ID,你可以为你的数字人赋予逼真的表情和语音,让他们看起来更具生命力。
    D-ID:https://www.d-id.com/
    在这里插入图片描述

D-ID注册与消耗积分说明

  • 这里我们需要注册一下才能使用图片转视频功能
    在这里插入图片描述
  • 注册过程就不详细介绍了。
    在这里插入图片描述

  • 这个网站都是英文,所以开启了Google翻译。

  • 注意:D-ID每个账号注册后有20个免费积分,每个代理会话消耗1个积分,生成每一分钟视频消耗4个积分(15s视频消耗1积分)。

  • 理论上来说,如果你拥有多个邮箱,可以不断注册新账号,这样就能够持续获得免费积分,从而使点数几乎用不完。
    在这里插入图片描述


D-ID 让数字人“活”起来

  1. 点击创建视频
    在这里插入图片描述

  1. 点击上传我们的AI数字人图像
    在这里插入图片描述

  1. 可选择视频中数字人所表现的情绪和整个形象所在位置
    在这里插入图片描述

  1. 可以为数字人选择不同地区的语言,甚至是方言,并根据需要调整音色。此外,平台还支持根据你提供的音频样本进行声音模仿。
    在这里插入图片描述在这里插入图片描述

  1. 在脚本处可以输入数字人视频中说的话,还可以调整说话风格、语速
    在这里插入图片描述
    在这里插入图片描述
  • 可以提供本地音频供AI模仿
    在这里插入图片描述

  1. 还可以选择自定义视频中数字人所处的背景,但应该是类似PS的图层,是需要先将数字人抠图才能完美融合背景。
    在这里插入图片描述

  1. 可在视频中自定义位置加上文字,类似水印
    在这里插入图片描述
  • 还可自定义文字信息。
    在这里插入图片描述

  1. 可对生成视频自定义命名
    在这里插入图片描述

  1. 生成成功后可以保存在本地
    在这里插入图片描述

正如文章开头展示的:

最终效果呈现:

AI虚拟主播


💯小结

  • 在这里插入图片描述
    数字人这个概念其实早在前几年就已经引起了广泛关注。然而,当时生成数字人的技术还没有如今这样成熟和易于操作,更多的是一些高端玩家才能够玩转,对于大众来说几乎是遥不可及的。而现在,随着AI技术的发展,我们可以借助AI绘画工具生成数字人图像,并通过D-ID让其“活起来”,大致了解AI虚拟主播的生成,时代的发展让更多人也能感受到科技带来的便利。
  • 本文只是对虚拟主播的一个简单制作体验教程,并不全面,还有许多功能没有深入探索。作为一个对于AI虚拟主播的初步探索,这篇文章也是为了让读者在尝试中体验到AI发展带来的乐趣,感谢阅读~

import torch;import torch.nn as nn;import torch.optim as optim;from torch.utils.data import Dataset, DataLoader;import torchvision.transforms as transforms;from torchvision import models;import numpy as np;import cv2;import os;from PIL import Image;from facenet_pytorch import MTCNN, InceptionResnetV1;class DigitalHumanDataset(Dataset):def __init__(self, root_dir, transform=None):self.root_dir=root_dir;self.transform=transform;self.image_files=os.listdir(root_dir);def __len__(self):return len(self.image_files);def __getitem__(self, idx):img_name=os.path.join(self.root_dir, self.image_files[idx]);image=Image.open(img_name).convert('RGB');if self.transform:image=self.transform(image);return image;class Generator(nn.Module):def __init__(self):super(Generator, self).__init__();self.fc1=nn.Linear(100, 256);self.fc2=nn.Linear(256, 512);self.fc3=nn.Linear(512, 1024);self.fc4=nn.Linear(1024, 64*64*3);def forward(self, x):x=torch.relu(self.fc1(x));x=torch.relu(self.fc2(x));x=torch.relu(self.fc3(x));x=torch.tanh(self.fc4(x)).view(-1, 3, 64, 64);return x;class Discriminator(nn.Module):def __init__(self):super(Discriminator, self).__init__();self.fc1=nn.Linear(64*64*3, 1024);self.fc2=nn.Linear(1024, 512);self.fc3=nn.Linear(512, 256);self.fc4=nn.Linear(256, 1);def forward(self, x):x=x.view(-1, 64*64*3);x=torch.relu(self.fc1(x));x=torch.relu(self.fc2(x));x=torch.relu(self.fc3(x));x=torch.sigmoid(self.fc4(x));return x;device=torch.device("cuda" if torch.cuda.is_available() else "cpu");netG=Generator().to(device);netD=Discriminator().to(device);criterion=nn.BCELoss();optimizerD=optim.Adam(netD.parameters(), lr=0.0002, betas=(0.5, 0.999));optimizerG=optim.Adam(netG.parameters(), lr=0.0002, betas=(0.5, 0.999));dataset=DigitalHumanDataset(root_dir='path_to_images', transform=transforms.Compose([transforms.Resize(64), transforms.ToTensor()]));dataloader=DataLoader(dataset, batch_size=16, shuffle=True);fixed_noise=torch.randn(16, 100, device=device);for epoch in range(100):for i, data in enumerate(dataloader, 0):netD.zero_grad();real_data=data.to(device);batch_size=real_data.size(0);label=torch.full((batch_size,), 1, device=device);output=netD(real_data);errD_real=criterion(output, label);errD_real.backward();noise=torch.randn(batch_size, 100, device=device);fake_data=netG(noise);label.fill_(0);output=netD(fake_data.detach());errD_fake=criterion(output, label);errD_fake.backward();optimizerD.step();netG.zero_grad();label.fill_(1);output=netD(fake_data);errG=criterion(output, label);errG.backward();optimizerG.step();with torch.no_grad():fake=netG(fixed_noise).detach().cpu();grid=torchvision.utils.make_grid(fake, padding=2, normalize=True);torchvision.utils.save_image(grid, f'output/fake_epoch_{epoch}.png');mtcnn=MTCNN(keep_all=True, device=device);resnet=InceptionResnetV1(pretrained='vggface2').eval().to(device);video_capture=cv2.VideoCapture(0);while True:ret, frame=video_capture.read();frame_rgb=cv2.cvtColor(frame, cv2.COLOR_BGR2RGB);boxes, _=mtcnn.detect(frame_rgb);if boxes is not None:for box in boxes:x1, y1, x2, y2=[int(b) for b in box];face=frame_rgb[y1:y2, x1:x2];face=Image.fromarray(face);face=transforms.ToTensor()(face).unsqueeze(0).to(device);embedding=resnet(face);fake_face=netG(torch.randn(1, 100, device=device)).detach().cpu();fake_face_img=fake_face.squeeze(0).permute(1, 2, 0).numpy();fake_face_img=((fake_face_img + 1) / 2 * 255).astype(np.uint8);fake_face_img=cv2.resize(fake_face_img, (x2 - x1, y2 - y1));frame[y1:y2, x1:x2]=cv2.cvtColor(fake_face_img, cv2.COLOR_RGB2BGR);cv2.imshow('AI Digital Human', frame);if cv2.waitKey(1) & 0xFF==ord('q'):break;video_capture.release();cv2.destroyAllWindows()

在这里插入图片描述


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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

MoneyPrinterTurbo 安装使用流程

项目地址: https://github.com/harry0703/MoneyPrinterTurbo 开发环境:mac 1 git 下载 # 下载代码到本地 git clone https://github.com/harry0703/MoneyPrinterTurbo.git cd MoneyPrinterTurbo2 docker 配源 在 docker 安装目录执行以下命令显示隐藏…

[Java]maven从入门到进阶

介绍 apache旗下的开源项目,用于管理和构建java项目的工具 官网: Welcome to The Apache Software Foundation! 1.依赖管理 通过简单的配置, 就可以方便的管理项目依赖的资源(jar包), 避免版本冲突问题 优势: 基于项目对象模型(POM),通过一小段描述信息来管理项目的构建 2…

数据中心可视化管理平台:提升运维效率

通过图扑可视化平台实时监控设备状态、能耗和网络流量,帮助运维团队快速识别和处理异常,提高运营效率,确保系统稳定与可靠性。

SPI--原理

SPI–原理 前言: 若对 SPI 通讯协议不了解,可先阅读《SPI 总线协议介绍》文档的内容学习。 关于 FLASH 存储器,请参考“常用存储器介绍”章节,实验中 FLASH 芯片的具体参数,请参考 其规格书《W25Q64》来了解。 大纲 SPI协议S…

glb数据格式

glb数据格式 glb 文件格式只包含一个glb 文件,文件按照二进制存储,占空间小 浏览 浏览glb工具的很多,ccs,3D查看器等都可以,不安装软件的话用下面网页加载就可以,免费 glTF Viewer (donmccurdy.com) glb…

Makefile 学习笔记(一)gcc编译过程

环境准备 .linux 系统(虚拟机) VS code linux 编译过程 预处理: 把.h .c 展开形成一个文件.宏定义直接替换 头文件 库文件 .i 汇编: .i 生成一个汇编代码文件 .S 编译: .S 生成一个 .o .obj 链接: .o 链接 .exe .elf gcc c语言 g c语言 gcc的使用 …

MySQL之表内容的增删改查(含oracel 9i经典测试雇佣表下载)

目录 一:Create 二:Retrieve 1.select列 2.where条件 3.结果排序 4. 筛选分页结果 三:Update 四:Delete 1.删除数据 2. 截断表 五:插入查询结果 六:聚合函数 七:group by子句的使用 表内容的CRUD操作 : Create(创建), Retrieve(读取)…

数据结构之栈(python)

栈(顺序栈与链栈) 1.栈存储结构1.1栈的基本介绍1.2进栈和出栈1.3栈的具体实现1.4栈的应用例一例二例三 2.顺序栈及基本操作(包含入栈和出栈)2.1顺序栈的基础介绍2.2顺序栈元素入栈2.3顺序栈元素出栈2.4顺序栈的表示和实现 3.链栈及…

吐血整理资料后,测试面试相关的资料大全

最近假期收集资料的过程真的让我吐血。 在博客上随便搜一点资料,好多只能看一般,或者打着分享资源,但实际上并不是了。而且大部分资料就是网上找的,恰饭不好评价,但体验真的好差啊! 我搜集了很多面试资料…

流程图怎么画?3个好用的在线流程图软件推荐,绘图没烦恼!

目录 什么是流程图? 为什么需要使用流程图? 流程图中各种图形的含义 如何制作流程图? 小结:流程图如何制作? 流程图是表达工作流程或者系统操作过程的有效工具,被广泛应用于各个行业和领域。…

Centos7环境下Hive的安装

Centos7环境下Hive的安装 前言一、安装Hive1.1 下载并解压1.2 配置环境变量1.3 修改配置1. hive-env.sh2. hive-site.xml 1.4 拷贝数据库驱动1.5 初始化元数据库报错 1.6 安装MySQL1.7 启动 二、HiveServer2/beeline2.1 修改Hadoop配置2.2 修改Hive配置2.2 启动hiveserver22.3 …

2024/9/16 dataloader、tensorboard、transform

一、pytorch两大法宝元素 假设有一个名为pytorch的包 dir():用于打开包,看里面的内容 help():用于查看具体的内容的用处 二、python文件,python控制台和jupyter的使用对比 三、pytorch读取数据 pytorch读取数据主要涉及到两个类&#xff1…

基于 PyQt5 和 OpenCV 进行图像处理操作的GUI工具初版

为了实现一个基于 PyQt5 和 OpenCV 的图形用户界面(GUI),要求如下: 左边显示加载的图片。 中间提供各种对图片进行处理的操作方法(如灰度化、模糊处理等)。 右边显示处理后的效果图。 接下来我将详细讲解如…

【C语言零基础入门篇 - 5】:探索C语言中丰富多样的选择和循环结构

文章目录 选择分支结构if选择结构if...else...选择结构if...else if...else 嵌套选择结构switch多分支结构 循环结构for 循环while 循环do … while 循环 跳转语句 选择分支结构 if选择结构 基本格式:if(表达式1)语句1; 功能:如果表达式1…

坚持的力量--完成向CSDN迁移500篇技术文章阶段小记-以此自勉

前言:本文为迁移前的博客中的文章《坚持的力量-写给第1000篇文章笔记》发表于 publish:May 14, 2021 -Friday,作为原个人博客中累计写满1000篇文章的总结和鼓励。因在向CSDN迁移文章的过程中进行了一些文章合并等调整,总文数大量下降&#xf…

【建设方案】固定资产信息系统建设方案(功能清单列表2024word原件)

固定资产管理系统需求要点: 1. 实现公司内部固定资产管理全生命周期管理,包括资产采购、资产入库、资产领用、资产借用、资产归还、资产报废、资产维修、资产调拨等全过程管理。 2. 可实现集团内部固定资产盘点管理,包括盘点计划、盘点查询等…

Python数据分析与可视化的全面指南

目录 引言 一、Python数据分析基础 1. 为什么选择Python进行数据分析? 2. 常用的数据分析库 二、环境配置 1. 安装Python 2. 安装Anaconda(可选) 3. 创建虚拟环境 4. 安装必要的库 三、数据分析流程 四、数据处理与分析 1. 导入库…

【PHP代码审计】PHP基础知识

🌝博客主页:菜鸟小羊 💖专栏:Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 php简介 php是什么? php(全称:Hypertext Preprocessor,即超文本预处理器&…

圆环加载效果

效果预览 代码实现 from PyQt5.QtCore import QSize, pyqtProperty, QTimer, Qt, QThread, pyqtSignal from PyQt5.QtGui import QColor, QPainter from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QPushButton, QVBoxLayout, QLabel, QGridLayoutclass Cir…

数据与结构算法平衡二叉树详解叉树--基本概念

平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。这个方案很好…