【AI视频】复刻抖音爆款AI数字人作品初体验


在这里插入图片描述

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

文章目录

  • 💯前言
  • 💯抖音上的爆火AI数字人视频
  • 💯注册HeyGen账号
  • 💯复刻抖音爆款AI数字人
  • 💯最终生成效果
  • 💯小结


对比原视频效果

左为原视频,右为本文生成

本文生成输入视频的完整效果:(注意:背景音乐是后期加上去的)

本文数字人视频完整生成结果


在这里插入图片描述


💯前言

  • 随着人工智能技术的迅速发展,数字人不再是科幻电影中的虚构产物,而是逐渐走进了我们的日常生活。曾经只有大型企业和专业团队才能运用的这项技术,如今已经触手可及,大众也可以轻松使用。无论是内容创作者、企业宣传,还是个人娱乐,数字人都提供了一种全新的表达方式,让每个人都能够通过人工智能的力量,打造出独具特色的作品。
    HeyGen在这里插入图片描述

💯抖音上的爆火AI数字人视频

  • 数字人在抖音上是一种非常新颖且有吸引力的表现形式。由于其独特的视觉效果和流畅的交互体验,AI数字人迅速成为了短视频平台上的热门趋势。不论是用于知识分享、品牌宣传,还是娱乐内容,这种技术都为创作者带来了前所未有的可能性。它不仅突破了传统真人视频的限制,还能够以高效、低成本的方式实现个性化的内容表达,吸引了大量用户的关注和互动。
    在这里插入图片描述

  • 本文将以这个点赞量12.6w的爆款数字人视频为例,手把手教你如何从零开始,初步体验AI数字人技术的入门步骤。这篇文章适合新手,内容简单易懂,不需要你具备太多技术背景。本文将带你了解如何选择基础的AI工具、简单地调整内容呈现方式,并进行基本的后期处理。通过这篇入门级教程,你将轻松掌握AI数字人制作的基础概念,开启你的数字创作之旅!
    在这里插入图片描述


💯注册HeyGen账号

  1. 进入HeyGen官网点击Get started。
    在这里插入图片描述

  2. 点击注册,如果有Google邮箱的话可以直接用Google在这里插入图片描述

  3. 填写邮箱
    在这里插入图片描述

  4. 登录邮箱拿到验证码填入
    在这里插入图片描述

  5. 设置密码,长度必须为 8 到 35 个字符,包括大写、小写字母、数字和特殊字符。
    在这里插入图片描述

  6. 注册成功后会跳转到HeyGen主界面,注意:一个账号一个月可以免费生成三次视频。
    在这里插入图片描述


💯复刻抖音爆款AI数字人

  1. 在HeyGen主界面中,您可以轻松地开始您的视频制作。进入界面后,点击左侧菜单中的“Create video”按钮,即“创建视频”,如图所示。
    在这里插入图片描述

  2. 在选择视频布局时,您可以根据需求选择横屏或竖屏模式。为了更好地展示数字人,我们建议选择竖屏模式。在创建视频的界面中,点击“Use portrait”按钮,即“使用肖像”选项
    在这里插入图片描述

  3. 在这一步骤中,您需要选择一个合适的头像来作为视频中的数字人。进入头像选择界面后,点击“Studio Avatar”(工作室头像)选项
    在这里插入图片描述

  4. 在选择头像的界面中,往下滚动页面,找到与爆款视频相同的数字人形象,如图中红框所示。在这里插入图片描述

Looking for a wife? Must find a woman with a big temper. No temper is like a glass of water. Quench thirst, but tasteless. A woman with a temper is not the same. Her bark is worse than her bite. She is particularly kind. She worries about her family at home and her temper comes quickly and goes quickly. She's like a strong drink you can't forget. If you do, cherish it. Do you understand?
  1. 在这一步中,需要为您的数字人输入与目标视频相同的文案内容。点击左侧菜单中的“Script 脚本”选项,在文本框中输入视频中使用的文案内容,如上所示。
    在这里插入图片描述

  2. 在这一步中,为了让数字人能够更好地传达视频内容,您可以选择合适的语音选项。点击“Script 脚本”界面中的语音选择区域,如图所示,可以从多个语音选项中进行挑选。不同的语音有着不同的语调、情感和节奏,选择一个与视频内容最契合的语音类型,可以让数字人的表现更加自然和有吸引力。
    在这里插入图片描述

  • 这里推荐用ctrl+G搜索Molly-Newscaster更方便快捷
    在这里插入图片描述
  1. 在调整语音设置时,您可以根据需要修改数字人的语速,使其更符合视频的整体节奏和氛围。在“Script 脚本”界面中,点击语音设置旁边的选项按钮,进入“Voice settings 语音设置”菜单,如图所示。
  • 差不多是设置1.5倍速
    在这里插入图片描述
  1. text模块可在视频里面加文本和标识。
    在这里插入图片描述

  2. 为了确保数字人的画面与语音完美同步,您需要将时间轴上的数字人画面时长调整为与说话时间一致。
    在这里插入图片描述

  3. 在完成所有设置并确认无误后,最后一步就是提交生成您的AI数字人视频。在编辑页面的右上角,点击“Submit 提交”按钮,如图所示。系统将开始处理您所设定的脚本、语音和画面,生成最终的视频。
    在这里插入图片描述
    在这里插入图片描述

  4. 在视频生成完成后,您可以在HeyGen平台的主界面中看到所有已生成的视频,下载到本地。在这里插入图片描述


💯最终生成效果

本文生成的数字人视频最终效果:(注意:背景音乐是后期加上去的)

本文数字人视频完整生成结果


💯小结

  • 在这里插入图片描述
    虽然这篇文章仅是入门级别的教程,但它展示了数字人技术的无限潜力。我们可以看到,抖音上的爆款数字人视频不仅仅是娱乐内容的呈现,更是新媒体创作的一个缩影。这些技术使得创作者能够以更具创意和个性化的方式表达自我,同时也大大降低了制作门槛。

  • 在创作过程中,我们意识到,无论是内容创作者还是企业推广,掌握AI数字人技术都是一个值得尝试的方向。它不仅能够提升内容的吸引力,还能为用户带来独特的体验。我希望这篇文章能为那些和我一样对数字人技术感兴趣的朋友提供帮助,让大家在数字创作的世界中找到属于自己的风格。

  • 继续探索、不断尝试,我们都可以成为数字时代的创作者!希望你在阅读后也能感受到AI数字人带来的乐趣和可能性,期待看到更多精彩的数字人作品!


import tensorflow as tf;from tensorflow.keras import layers;import numpy as np;import matplotlib.pyplot as plt;np.random.seed(42);tf.random.set_seed(42);latent_dim=100;image_size=64;batch_size=64;epochs=10000;def build_generator():model=tf.keras.Sequential();model.add(layers.Dense(8*8*256,use_bias=False,input_shape=(latent_dim,)));model.add(layers.BatchNormalization());model.add(layers.LeakyReLU());model.add(layers.Reshape((8,8,256)));model.add(layers.Conv2DTranspose(128,(5,5),strides=(2,2),padding='same',use_bias=False));model.add(layers.BatchNormalization());model.add(layers.LeakyReLU());model.add(layers.Conv2DTranspose(64,(5,5),strides=(2,2),padding='same',use_bias=False));model.add(layers.BatchNormalization());model.add(layers.LeakyReLU());model.add(layers.Conv2DTranspose(3,(5,5),strides=(2,2),padding='same',use_bias=False,activation='tanh'));return model;def build_discriminator():model=tf.keras.Sequential();model.add(layers.Conv2D(64,(5,5),strides=(2,2),padding='same',input_shape=[image_size,image_size,3]));model.add(layers.LeakyReLU());model.add(layers.Dropout(0.3));model.add(layers.Conv2D(128,(5,5),strides=(2,2),padding='same'));model.add(layers.LeakyReLU());model.add(layers.Dropout(0.3));model.add(layers.Conv2D(256,(5,5),strides=(2,2),padding='same'));model.add(layers.LeakyReLU());model.add(layers.Dropout(0.3));model.add(layers.Flatten());model.add(layers.Dense(1));return model;def discriminator_loss(real_output,fake_output):real_loss=tf.keras.losses.BinaryCrossentropy(from_logits=True)(tf.ones_like(real_output),real_output);fake_loss=tf.keras.losses.BinaryCrossentropy(from_logits=True)(tf.zeros_like(fake_output),fake_output);return real_loss+fake_loss;def generator_loss(fake_output):return tf.keras.losses.BinaryCrossentropy(from_logits=True)(tf.ones_like(fake_output),fake_output);generator_optimizer=tf.keras.optimizers.Adam(1e-4);discriminator_optimizer=tf.keras.optimizers.Adam(1e-4);generator=build_generator();discriminator=build_discriminator();@tf.function;def train_step(images,generator,discriminator,batch_size,latent_dim):noise=tf.random.normal([batch_size,latent_dim]);with tf.GradientTape()as gen_tape,tf.GradientTape()as disc_tape:generated_images=generator(noise,training=True);real_output=discriminator(images,training=True);fake_output=discriminator(generated_images,training=True);gen_loss=generator_loss(fake_output);disc_loss=discriminator_loss(real_output,fake_output);gradients_of_generator=gen_tape.gradient(gen_loss,generator.trainable_variables);gradients_of_discriminator=disc_tape.gradient(disc_loss,discriminator.trainable_variables);generator_optimizer.apply_gradients(zip(gradients_of_generator,generator.trainable_variables));discriminator_optimizer.apply_gradients(zip(gradients_of_discriminator,discriminator.trainable_variables));return gen_loss,disc_loss;(train_images,train_labels),(_,_)=tf.keras.datasets.cifar10.load_data();train_images=train_images.reshape(train_images.shape[0],image_size,image_size,3).astype('float32');train_images=(train_images-127.5)/127.5;train_dataset=tf.data.Dataset.from_tensor_slices(train_images).shuffle(60000).batch(batch_size);def train(generator,discriminator,dataset,epochs,latent_dim,batch_size):for epoch in range(epochs):for image_batch in dataset:gen_loss,disc_loss=train_step(image_batch,generator,discriminator,batch_size,latent_dim);if epoch%100==0:print(f"Epoch {epoch}, Gen Loss: {gen_loss}, Disc Loss: {disc_loss}");generate_and_save_images(generator,epoch,latent_dim);def generate_and_save_images(model,epoch,latent_dim):noise=tf.random.normal([16,latent_dim]);generated_images=model(noise,training=False);fig=plt.figure(figsize=(4,4));for i in range(generated_images.shape[0]):plt.subplot(4,4,i+1);plt.imshow((generated_images[i]*127.5+127.5).astype(np.uint8));plt.axis('off');plt.savefig(f'generated_images_epoch_{epoch}.png');plt.show();train(generator,discriminator,train_dataset,epochs,latent_dim,batch_size)

在这里插入图片描述


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【算法篇】哈希类(笔记)

目录 一、常见的三种哈希结构 二、LeetCode 练习 1. 有效的字母异位词 2. 两个数组的交集 3. 快乐数 4. 两数之和 5. 四数相加II 6. 赎金信 7. 三数之和 8. 四数之和 一、常见的三种哈希结构 当想使用哈希法来解决问题的时候,一般会选择如下三种数据…

Java--String类

前言: 在之前的学习中,学习了和了解了一些类的基本使用,例如object类等等,但是我们用String这个引用或者说这个类其实我们已经用了好久,只不过没有具体分析过! 对于String类,它可以引用一个字符…

JavaScript web API part3

web API DOM 日期对象 > 得到当前系统的时间 new这个操作就是实例化 语法 const date new Date() or const date new Date(2004-11-3 08:00:00) 可以指定时间 > 可应用于通过系统时间和指定时间实现倒计时的操作 //得到当前时间const date new Date()console.lo…

【Python小知识 - 2】:在VSCode中切换Python解释器版本

文章目录 在VSCode中切换Python解释器版本 在VSCode中切换Python解释器版本 在VSCode中按下快捷键CtrlShiftP,出现命令框。 输入以下命令: Python: Select Interpreter输入命令回车后即出现不同的Python解释器选项,选择想要切换的Python解释器…

【题解】—— LeetCode一周小结37

🌟欢迎来到 我的博客 —— 探索技术的无限可能! 🌟博客的简介(文章目录) 【题解】—— 每日一道题目栏 上接:【题解】—— LeetCode一周小结36 9.合并零之间的节点 题目链接:2181. 合并零之间…

【最新综述】基于深度学习的超声自动无损检测(下)

4.Levels of automation 5.Basic axioms for DL-based ultrasonic NDE 在回顾了最新技术和每个自动化级别的贡献之后,我们不难发现,目前的数字语言方法论在不同论文之间存在着很大的差异。例如,有些作者提出了同时处理不同步骤的模型[121]&…

感知器神经网络

1、原理 感知器是一种前馈人工神经网络,是人工神经网络中的一种典型结构。感知器具有分层结构,信息从输入层进入网络,逐层向前传递至输出层。根据感知器神经元变换函数、隐层数以及权值调整规则的不同,可以形成具有各种功能特点的…

Java并发常见面试题(上)

Java并发常见面试题(上) 什么是线程和进程? 一个 Java 程序的运行是 main 线程和多个其他线程同时运行 进程:程序的一次执行过程,系统运行一个程序就是一个进程从创建,运行到消亡的过程。在Java中启动main函数就是开启一个进程,main函数所…

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统 在产品将要上线之前,需要制作不同类型格式的根文件系统 在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统 优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命 【1】重启上位机nfs服…

WPF利用Path自定义画头部导航条(TOP)样式

1;新建两个多值转换器,都有用处,用来动态确定PATH的X,Y州坐标的。 EndPointConverter 该转换器主要用来动态确定X轴,和Y轴。用于画线条的。 internal class EndPointConverter : IMultiValueConverter {public object Convert(object[] val…

wifiip地址可以随便改吗?wifi的ip地址怎么改变

对于普通用户来说,WiFi IP地址的管理和修改往往显得神秘而复杂。本文旨在深入探讨WiFi IP地址是否可以随意更改,以及如何正确地改变WiFi的IP地址。虎观代理小二将详细解释WiFi IP地址的基本概念、作用以及更改时需要注意的事项,帮助用户更好地…

PPT中的图形与图片:插入、调整与格式设置技术详解

目录 引言 一、图形与图片的插入 1. 插入图形 2. 插入图片 二、图形与图片的调整 1. 调整大小与位置 2. 裁剪与旋转 3. 图形与图片的合并与组合 三、图片格式与布局设置 1. 图片格式设置 2. 图片布局设置 示例案例:制作产品展示PPT 四、结论 引言 在现…

Harmony OS DevEco Studio低代码开发流程 - HarmonyOS开发自学5

一. 为什么要用低代码开发? HarmonyOS低代码开发方式,具有丰富的UI界面编辑功能,例如基于图形化的自由拖拽、数据的参数化配置等,通过可视化界面开发方式快速构建布局,可有效降低用户的时间成本和提升用户构建UI界面的…

【JVM】类加载

1. 类加载过程 Java虚拟机(JVM)的 类加载 过程是将字节码文件(.class文件)从存储设备加载到内存,并为其创建相应的类对象的过程。类加载是Java程序运行的基础,保证了程序的动态性和安全性。JVM的类加载过程…

Unity 粒子系统参数说明

一、Particle System 1. Duration(持续时间) 粒子系统运行一次所需的时间。它决定粒子系统持续播放的时间长度。 2. Looping(循环播放) 如果启用,粒子系统将在播放完一次后自动重新开始播放,直到你停止它…

pgrouting实战应用

1)下载地区地区数据(下载数据是XYZM 四位数据) 2)下载裁剪行政区数据 3)使用arcgis pro添加路网数据和行政区数据 4)裁剪数据,仅历下行政区路网 5)arcgis pro要素转线&#xff0…

【数据结构】顺序表和链表经典题目

系列文章目录 单链表 动态顺序表实现通讯录 顺序表 文章目录 系列文章目录前言一、顺序表经典例题1. 移除元素2. 合并两个有序数组 二、链表经典例题1. 移除链表元素2. 反转链表3. 合并两个有序链表4. 链表的中间节点5. 环形链表的约瑟夫问题 总结 前言 我们通过前面对顺序表…

ArrayList 源码解析

ArrayList是Java集合框架中的一个动态数组实现,提供了可变大小的数组功能。它继承自AbstractList并实现了List接口,是顺序容器,即元素存放的数据与放进去的顺序相同,允许放入null元素,底层通过数组实现。除该类未实现同…

HTB-Vaccine(suid提权、sqlmap、john2zip)

前言 各位师傅大家好,我是qmx_07,今天来为大家讲解Vaccine靶机 渗透过程 信息搜集 服务器开放了 21FTP服务、22SSH服务、80HTTP服务 通过匿名登录FTP服务器 通过匿名登录到服务器,发现backup.zip文件,可能存在账号密码 发现b…

2024.9.16 day 1 pytorch安装及环境配置

一、配置pytorch环境,安装pytorch 1.查看python版本 python --version 2.在anaconda命令中创建pytorch环境 conda create -n pytorch python3.12(python版本) 3.pytorch安装 pytorch首页 PyTorchhttps://pytorch.org/ os为windows推荐package选择…