【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)

在这里插入图片描述


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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

有了WPF后Winform还有活路吗?

近年来,随着技术的不断发展,Windows Presentation Foundation(WPF)和Windows Forms(WinForms)这两种技术在开发桌面应用程序方面一直备受关注。虽然WPF以其强大的功能和灵活性吸引了众多开发者,…

谷歌-BERT-第四步:模型部署

1 需求 需求1:基于gradio实现大模型的WEB UI交互界面 2 接口 3 示例 import gradio as gr from transformers import *classifier pipeline("text-classification", model"./model", tokenizer"./model")gr.Interface.from_pipel…

HarmonyOS NEXT 应用开发实战(三、ArkUI页面底部导航TabBar的实现)

在开发HarmonyOS NEXT应用时,TabBar是用户界面设计中不可或缺的一部分。本文将通过代码示例,带领大家一同实现一个常用的TabBar,涵盖三个主要的内容页:首页、知乎日报和我的页面。以模仿知乎日报的项目为背景驱动,设定…

搭建`mongodb`副本集-开启权限认证 mongo:7.0.5

搭建mongodb副本集-开启权限认证 mongo:7.0.5 1.5.1、创建文件 创建配置文件保存目录和数据保存目录 mkdir -p /data/mongodb/{/conf,/data,/logs}生成和设置权限 这个文件一定要在一个服务里面生成然后复制到其它服务器,所有服务器的这个key一定是相同的。 op…

Python数据分析-Scipy科学计算法

1.认识Scipy SciPy(发音为 "Sigh Pie")是一个开源的 Python 算法库和数学工具包。 通常与 NumPy、Matplotlib 和 pandas 等库一起使用,这些库共同构成了 Python 的科学计算基础。 2.使用Scipy基本函数 2.1 引用Scipy函数 impor…

HarmonyOS NEXT应用开发实战(二、封装比UniApp和小程序更简单好用的网络库)

网络访问接口,使用频次最高。之前习惯了uniapp下的网络接口风格,使用起来贼简单方便。转战到鸿蒙上后,原始网络接口写着真累啊!目标让鸿蒙上网络接口使用,简单程度比肩uniapp,比Axios更轻量级。源码量也不多…

antd table合并复杂单元格、分组合并行、分组合并列、动态渲染列、嵌套表头

项目里遇到个需求,涉及到比较复杂的单元格合并 、嵌套表头、分组合并行、合并列等,并且数据列还是动态的,效果图如下: 可以分组设置【显示列】例如:当前组为【合同约定】,显示列为【合同节点】和【节点金额…

文件完整性监控:如何提高企业的数据安全性

企业网络庞大而复杂,需要处理大量关键业务数据,这些敏感文件在企业网络中不断传输,并由多个用户和实体存储、共享和访问。FIM 工具或具有 FIM 功能的 SIEM 解决方案使企业能够跟踪未经授权的文件更改、对敏感信息的恶意访问、数据篡改尝试和内…

VSCode 使用 EmmyLua 对lua进行调试

时间:2024年10月 其他:win10,EmmyLua v0.8.20 参考:https://blog.csdn.net/ShenHaoDeHao/article/details/140268354 有几个概念搞清楚就好理解了。一般开发中,我们编写的lua文件由宿主程序的来解析、执行&#xff1…

[Linux#65][TCP] 详解 延迟应答 | 捎带应答 | 流量控制 | 拥塞控制

目录 一、延迟应答 二、捎带应答 三. 流量控制 总结 四. 拥塞控制 1. 拥塞控制 2. 慢启动机制: 3.思考 4.拥塞避免算法 5. 快速恢复算法 一、延迟应答 1. 立即应答问题 接收数据的主机若立刻返回ACK应答,可能返回的窗口较小。例如&#xff1…

RabbitMQ 入门(三)SpringAMQP

一、Spring AMQP 简介 SpringAMQP是基于RabbitMQ封装的一套模板,并且还利用SpringBoot对其实现了自动装配,使用起来非常方便。 SpringAmqp的官方地址:https://spring.io/projects/spring-amqp SpringAMQP提供了三个功能: - 自动…

【嵌入式软件-STM32】STM32简介

目录 一、STM32定义 二、STM32用途 三、STM32特点 四、STM32 四个系列 五、了解ARM 六、芯片解释 七、片上资源 八、命名规则 九、系统结构 内核 Flash DMA 外设种类和分布 十、引脚定义 类型 名称 引脚 十一、启动配置 十二、STM32最小系统电路 STM32及供电 供电引脚 滤波电容…

FFmpeg的简单使用【Windows】--- 视频倒叙播放

实现功能 点击【选择文件】按钮可以选择视频,当点击【开始处理】按钮之后,会先将视频上传到服务器,然后开始进行视频倒叙播放的处理,当视频处理完毕之后会将输出的文件路径返回,同时在页面中将处理好的视频展示出来。…

【特赞-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

低代码开发技术:驱动MES系统创新与制造业数字化转型的融合之路

低代码开发与生产管理MES系统的融合,是当今制造业数字化转型的一个重要趋势。以下是对这一融合现象的详细分析: 一、低代码开发的概念与特点 低代码开发是一种通过图形化界面和预构建模块来简化应用程序开发过程的方法。它允许开发人员使用拖放组件和最…

【视觉分割新SOTA|论文解读2】一种最先进的图像分割模型——Segment Anything Model (SAM)模型架构!

【视觉分割新SOTA|论文解读2】一种最先进的图像分割模型——Segment Anything Model (SAM)模型架构! 【视觉分割新SOTA|论文解读2】一种最先进的图像分割模型——Segment Anything Model (SAM)模型架构! 文章目录 【视觉分割新SOTA|论文解读2】一种最先…

Matlab详细学习教程 MATLAB使用教程与知识点总结

Matlab语言教程 章节目录 一、Matlab简介与基础操作 二、变量与数据类型 三、矩阵与数组操作 四、基本数学运算与函数 五、图形绘制与数据可视化 六、控制流与逻辑运算 七、脚本与函数编写 八、数据导入与导出 九、Matlab应用实例分析 一、Matlab简介与基础操作 重点内容知识…

DM8数据库用户和表空间管理

1 说明 DM8用户管理和表空间管理常用的管理命令,包括创建、修改和查看信息操作等。 2 用户管理 2.1 创建用户 创建一个用户lu9up,密码为"admin2024.",未制定表空间,使用默认的表空间main。 SQL> create user lu…

八大排序--08快速排序

现有 arr {4,8,9,2,7}数组,请用快速排序的方式实现从小到大排序: 方法: 1.定义待排序数组中的第一个值为基准数; 2.定义j游标,从后向前移动找到第一个比基准数小的值停下; 3.定义i游标,从后向…

黑马程序员-redis项目实践笔记1

目录 一、 基于Session实现登录 发送验证码 验证用户输入验证码 校验登录状态 Redis代替Session登录 发送验证码修改 验证用户输入验证码 登录拦截器的优化 二、 商铺查询缓存 缓存更新策略 数据库和缓存不一致解决方案 缓存更新策略的最佳实践方案 实现商铺缓…