当前位置: 首页 > news >正文

【大模型系列篇】数字人音唇同步模型——腾讯开源MuseTalk

之前有一期我们体验了阿里开源的半身数字人项目EchoMimicV2,感兴趣的小伙伴可跳转至《AI半身数字人开箱体验——开源项目EchoMimicV2》,今天带大家来体验腾讯开源的数字人音唇同步模型MuseTalk。

MuseTalk 是一个实时高品质音频驱动的唇形同步模型,是在 ft-mse-vae 的潜在空间中进行训练,该模型:

  1. 能够根据输入的音频修改未知的面部动作,面部区域大小为 256 x 256

  2. 支持中文、英文和日文等多种语言的音频。

  3. 在 NVIDIA Tesla V100 上支持超过 30fps 的实时推理。

  4. 支持修改面部区域中心点,这对生成结果有显著影响。

  5. 在 HDTF 数据集上训练的模型checkpoint。

MuseTalk 是在潜在空间中进行训练,其中图像由冻结的 VAE 编码,音频由冻结的 whisper-tiny 模型编码。生成网络的架构借鉴了 stable-diffusion-v1-4 的 UNet,其中音频嵌入通过交叉注意力与图像嵌入融合。

注:尽管MuseTalk使用的架构与 Stable Diffusion 非常相似,但 MuseTalk 的独特之处在于它不是一个扩散模型。相反,MuseTalk 是通过在潜在空间中单步修复来操作。

安装部署

https://github.com/TMElyralab/MuseTalk

1. 构建基础环境

Python version=3.10
Cuda version=12.4

2. 安装依赖

pip install -r requirements.txt

  mmlab packages

pip install --no-cache-dir -U openmim 
mim install mmengine 
mim install "mmcv>=2.0.1" 
mim install "mmdet>=3.1.0" 
mim install "mmpose>=1.1.0" 

 3. 安装ffmpeg-static

wget https://www.johnvansickle.com/ffmpeg/old-releases/ffmpeg-4.4-amd64-static.tar.xz
tar -xf ffmpeg-4.4-amd64-static.tar.xz
export FFMPEG_PATH=/path/to/ffmpeg-4.4-amd64-static

4. 安装MuseTalk权重

wget https://hf-mirror.com/TMElyralab/MuseTalk/resolve/main/musetalk/musetalk.json
wget https://hf-mirror.com/TMElyralab/MuseTalk/resolve/main/musetalk/pytorch_model.bin

5. 安装其他组件权重

  • sd-vae-ft-mse

  • whisper

  • dwpose

  • face-parse-bisent

  • resnet18

# sd-vae-ft-mse
git clone https://hf-mirror.com/stabilityai/sd-vae-ft-mse
# whisper
wget https://openaipublic.azureedge.net/main/whisper/models/65147644a518d12f04e32d6f3b26facc3f8dd46e5390956a9424a650c0ce22b9/tiny.pt
# dwpose
git clone https://hf-mirror.com/yzd-v/DWPose
# face-parse-bisent
git clone https://hf-mirror.com/ManyOtherFunctions/face-parse-bisent
# resnet18
wget https://download.pytorch.org/models/resnet18-5c106cde.pth

 模型权重路径结构

快速入门 

推理

python -m scripts.inference --inference_config configs/inference/test.yaml

configs/inference/test.yaml是推理配置文件的路径,包含视频路径(video_path)和音频路径(audio_path)。视频路径可以是视频文件、图像文件或者图像目录。 

建议输入帧率为25帧每秒的视频,这与训练模型时使用的帧率相同。如果你的视频帧率远低于25帧每秒,建议进行帧插值处理,或者直接使用ffmpeg将视频转换为25帧每秒。

使用bbox_shift来获得可调节的结果

我们发现遮罩的上边界对嘴巴张开程度有重要影响。因此,为了控制遮罩区域,建议使用bbox_shift参数。正值(朝下半部分移动)会增加嘴巴张开程度,而负值(朝上半部分移动)会减小嘴巴张开程度。

你可以先使用默认配置运行以获取可调节值的范围,然后在此范围内重新运行脚本。

例如,以孙新颖的情况为例,运行默认配置后,显示可调节值范围是[-9, 9]。然后,若要减小嘴巴张开程度,可将该值设为-7

python -m scripts.inference --inference_config configs/inference/test.yaml --bbox_shift -7

更多技术细节可在bbox_shift部分找到。

结合 MuseV和 MuseTalk

作为虚拟人物生成的完整解决方案,建议你首先参考相关内容使用“MuseV”来生成视频(文本转视频、图像转视频或姿态转视频)。建议进行帧插值以提高帧率。然后,你可以参考相关内容使用“MuseTalk”来生成唇形同步视频。 

实时推理

在此,我们提供推理脚本。该脚本会预先进行必要的预处理,如人脸检测、人脸解析以及变分自编码器(VAE)编码等操作。在推理过程中,仅涉及生成对抗网络(UNet)和变分自编码器解码器,这使得“MuseTalk”具备实时性。

python -m scripts.realtime_inference --inference_config configs/inference/realtime.yaml --batch_size 4

configs/inference/realtime.yaml是实时推理配置文件的路径,包含准备工作(preparation)、视频路径(video_path)、bbox_shift和音频片段(audio_clips)等内容。

❗️此处代码get_image_blending有些问题,我们回退这个函数。

https://github.com/TMElyralab/MuseTalk/issues/220

realtime.yaml中将preparation设为True,以便为新的虚拟形象准备素材。(如果bbox_shift发生了变化,也需要重新准备素材。)

之后,该虚拟形象将使用从音频片段中选取的一个音频片段来生成视频。

例如使用data/audio/yongen.wav进行推理。

在“MuseTalk”进行推理时,子线程可以同时将结果推送给用户。在英伟达特斯拉V100显卡上,生成过程能够达到30帧每秒及以上的帧率。

如果想使用同一个虚拟形象生成更多视频,可将preparation设为False并运行此脚本。

❗️实时推理注意事项

如果想用同一个虚拟形象/视频生成多个视频,也可以使用此脚本来大幅加快生成过程。

在前面的脚本中,生成时间也受输入/输出(例如保存图像)的限制。如果你只是想测试生成速度而不保存图像,可以运行以下命令:

python -m scripts.realtime_inference --inference_config configs/inference/realtime.yaml --skip_save_images 

启动app

#!/bin/bashecho "entrypoint.sh"
whoami
which python
source /opt/conda/etc/profile.d/conda.sh
conda activate musev
which python
python app.py
sh entrypoint.sh

效果展示

现在就让我们来体验音唇同步的魅力。

任务1:我们将之前用EchoMimicV2生成的14s视频,融合两段不同的音频。

原视频:奋斗的路漫长,爱情是甜蜜的糖,两者交织的光,把生命都照亮。

音频1:地球已经存在45亿年,人类文明的存在对于地球来说只是眨眼间的时间。人类用了几万年的时间征服地球,毁灭只用了短短的几秒钟。核辐射污染了整个地球,使地球所有生命都即将殆尽。那些幸存的人类,也许在外太空找了几十年,也没有找到适合人类居住的行星。

音频2:我见过你最爱我的样子,所以当你开始敷衍我的时候,其实我心里早就明白,只是还放不下那段曾经。 享受了工作带来的薪酬和成长,就要接纳工作带来的委屈和辛苦。 每一刻疲惫的瞬间,我想的都是好好挣钱好好生活。

任务2:我们将MuseTalk自带的人物视频,融合EchoMimicV2官方介绍的音频(视频中提取)。

下面我们来看看MuseTalk给大家带来的效果:

相关文章:

【大模型系列篇】数字人音唇同步模型——腾讯开源MuseTalk

之前有一期我们体验了阿里开源的半身数字人项目EchoMimicV2,感兴趣的小伙伴可跳转至《AI半身数字人开箱体验——开源项目EchoMimicV2》,今天带大家来体验腾讯开源的数字人音唇同步模型MuseTalk。 MuseTalk 是一个实时高品质音频驱动的唇形同步模型&#…...

Formality:参考设计/实现设计以及顶层设计

相关阅读 Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482​​​ Formality存在两个重要的概念:参考设计/实现设计和顶层设计,本文就将对此进行详细阐述。参考设计/实现设计是中两个重要的全局概念&am…...

RPA赋能内容创作:打造小红书入门词语图片的全自动化流程

🌟 嗨,我是LucianaiB! 🌍 总有人间一两风,填我十万八千梦。 🚀 路漫漫其修远兮,吾将上下而求索。 用RPA全自动化批量生产【入门词语】图片做小红书商单,保姆级工具开发教程 最近由…...

RPC 源码解析~Apache Dubbo

解析 RPC(远程过程调用)的源码可以帮助你深入理解其工作原理和实现细节。为了更好地进行源码解析,我们选择一个流行的 RPC 框架——Apache Dubbo 作为示例。Dubbo 是一个高性能、轻量级的开源 Java RPC 框架,广泛应用于企业级应用…...

VS Code--常用的插件

原文网址:VS Code--常用的插件_IT利刃出鞘的博客-CSDN博客 简介 本文介绍VS Code(Visual Studio Code)常用的插件。 插件的配置 默认情况下,插件会放到这里:C:\Users\xxx\.vscode\extensions 修改插件位置的方法 …...

深度学习 Pytorch 张量的索引、分片、合并以及维度调整

张量作为有序的序列,也是具备数值索引的功能,并且基本索引方法和python原生的列表、numpy中的数组基本一致。 不同的是,pytorch中还定义了一种采用函数来进行索引的方式。 作为pytorch中的基本数据类型,张量既具备了列表、数组的基…...

神州数码--制作wifi

防火墙: #ip vrouter trust-vr#router ospf 1#router-id 8.8.8.8#network 10.0.0.0/30 area 0.0.0.0#network 10.0.0.4/30 area 0.0.0.0#network 10.0.0.8/30 area 0.0.0.0 交换机: #vlan 10;50#ip add 192.168.10.1 255.255.255.0#int vlan 50#ip add 192.168.50.…...

Web前端开发技术之HTMLCSS知识点总结

学习路线 一、新闻网界面1. 代码示例2. 效果展示3. 知识点总结3.1 HTML标签和字符实体3.2 超链接、颜色描述与标题元素3.3 关于图片和视频标签:3.4 CSS引入方式3.5 CSS选择器优先级 二、flex布局1. 代码示例2. 效果展示3. 知识点总结3.1 span标签和flex容器的区别3.…...

客户案例:致远OA与携程商旅集成方案

一、前言 本项目原型客户公司创建于1992年,主要生产并销售包括糖果系列、巧克力系列、烘焙系列、卤制品系列4大类,200多款产品。公司具有行业领先的生产能力,拥有各类生产线100条,年产能超过10万吨。同时,经过30年的发展,公司积累了完善的销售网络,核心经销商已经超过1200个,超…...

【常见BUG】Spring Boot 和 Springfox(Swagger)版本兼容问题

???欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老…...

【Python】FastAPI入门

文章目录 第一节:FastAPI入门一、FastAPI框架介绍什么是ASGI服务(WSGI)1、补充Web开发1)Web前端开发2)Web后端开发 二、FastAPI安装1、安装Python虚拟环境2、安装FastAPI 三、第一个FastAPI案例1、访问接口和文档2、接…...

JavaScript系列(32)-- WebAssembly集成详解

JavaScript WebAssembly集成详解 🚀 今天,让我们深入了解JavaScript与WebAssembly的集成,这是一项能够显著提升Web应用性能的关键技术。 WebAssembly基础概念 🌟 💡 小知识:WebAssembly(简称W…...

wps数据分析000002

目录 一、快速定位技巧 二、快速选中技巧 全选 选中部分区域 选中部分区域(升级版) 三、快速移动技巧 四、快速录入技巧 五、总结 一、快速定位技巧 ctrl→(上下左右)快速定位光标对准单元格的上下部分双击名称单元格中…...

无降智o1 pro——一次特别的ChatGPT专业模式探索

这段时间和朋友们交流 ChatGPT 的使用心得,大家都提到一个很“神秘”的服务:它基于 O1 Pro 模型,能够在对话里一直保持相对高水平的理解和回复,不会突然变得“降智”。同时,整体使用还做了免折腾的网络设置——简单一点…...

前端:前端开发任务分解 / 开发清单

一、背景 前端开发过程中,好多任务同时开发,或者一个大的任务分解为若干个子任务进行开发,分解出去的很多内容容易记不清楚 / 不易过程管理,所以记录表格如下,方便开发同事,也辅助掌握整体开发情况。 二、…...

【Django自学】Django入门:如何使用django开发一个web项目(非常详细)

测试机器:windows11 x64 python版本:3.11 一、安装Django 安装步骤非常简单,使用pip安装就行 pip install django安装完成之后,python的 Scripts 文件夹下,会多一个 django-admin.exe (管理创建django项目的工具)。…...

面试经验分享-回忆版某小公司

说说你项目中数据仓库是怎么分层的,为什么要分层? 首先是ODS层,连接数据源和数据仓库,数据会进行简单的ETL操作,数据来源通常是业务数据库,用户日志文件或者来自消息队列的数据等 中间是核心的数据仓库层&a…...

WebSocket——推送方案选型

一、前言:为何需要服务端主动推送? 在现代应用中,很多功能都依赖于“消息推送”。比如: 小红点提醒:我们经常在手机应用里看到的一个小红点提示,表示有新的消息或任务需要我们关注。新消息提醒&#xff1…...

山石防火墙命令行配置示例

现网1台山石SG6000防火墙,配置都可以通过GUI实现。 但有一些配置在命令行下配置效率更高,比如在1个已有策略中添加1个host或端口。 下面的双引号可以不加 1 创建服务 1.1 单个端口 service "tcp-901"tcp dst-port 901 1.2 端口范围 servi…...

LLM - 大模型 ScallingLaws 的 C=6ND 公式推导 教程(1)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/145185794 Scaling Laws (缩放法则) 是大模型领域中,用于描述 模型性能(Loss) 与 模型规模N、数据量D、计算资源C 之间关系的经验规律…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...

MySQL 知识小结(一)

一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...

适应性Java用于现代 API:REST、GraphQL 和事件驱动

在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...

Kafka主题运维全指南:从基础配置到故障处理

#作者:张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1:主题删除失败。常见错误2:__consumer_offsets占用太多的磁盘。 主题日常管理 …...

消息队列系统设计与实践全解析

文章目录 🚀 消息队列系统设计与实践全解析🔍 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡💡 权衡决策框架 1.3 运维复杂度评估🔧 运维成本降低策略 🏗️ 二、典型架构设计2.1 分布式事务最终一致…...