【大模型系列篇】数字人音唇同步模型——腾讯开源MuseTalk
之前有一期我们体验了阿里开源的半身数字人项目EchoMimicV2,感兴趣的小伙伴可跳转至《AI半身数字人开箱体验——开源项目EchoMimicV2》,今天带大家来体验腾讯开源的数字人音唇同步模型MuseTalk。
MuseTalk 是一个实时高品质音频驱动的唇形同步模型,是在 ft-mse-vae 的潜在空间中进行训练,该模型:
-
能够根据输入的音频修改未知的面部动作,面部区域大小为
256 x 256。 -
支持中文、英文和日文等多种语言的音频。
-
在 NVIDIA Tesla V100 上支持超过
30fps的实时推理。 -
支持修改面部区域中心点,这对生成结果有显著影响。
-
在 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——推送方案选型
一、前言:为何需要服务端主动推送? 在现代应用中,很多功能都依赖于“消息推送”。比如: 小红点提醒:我们经常在手机应用里看到的一个小红点提示,表示有新的消息或任务需要我们关注。新消息提醒࿱…...
山石防火墙命令行配置示例
现网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 之间关系的经验规律…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...
mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...
html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...
中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...
JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...
