AVI-Talking——能通过语音生成很自然的 3D 说话面孔
概述
论文地址:https://arxiv.org/pdf/2402.16124v1.pdf
逼真的人脸三维动画在娱乐业中至关重要,包括数字人物动画、电影视觉配音和虚拟化身的创建。以往的研究曾试图建立动态头部姿势与音频节奏之间的关联模型,或使用情感标签或视频剪辑作为风格参考,但这些方法的表现力有限,无法捕捉到情感的细微差别。它们还要求用户手动选择风格源,这往往会导致应用不自然。
本文提出了一种更自然的方法。它旨在利用人类语音中的风格信息,生成能直接反映说话者情绪和风格的富有表现力的说话表情。从音频中合成各种逼真的面部动作是一项复杂而具有挑战性的任务,同时还要保持准确的唇部同步。为了解决这个问题,我们正在开发一个名为 AVI-Talking 的新系统。该系统可通过视听引导系统生成富有表现力的说话表情。
AVI-Talking 通过使用中间视觉教学表征而不是直接从音频中学习,有效地弥补了视听差距。具体来说,该框架将生成过程分为两个阶段,每个阶段都有一套明确的目标,从而大大降低了优化的复杂性。此外,将视觉指令作为中间输出的呈现方式提高了模型的可解释性,并为用户根据自己的意愿进行指令和修改提供了灵活性。
这项技术有望开辟娱乐技术的新天地。
AVI-Talking 概述
AVI-Talking 的目标是根据语音片段生成具有同步嘴唇动作和一致面部表情的三维动画人脸。它不是根据直接语音合成会说话的人脸,而是利用大规模语言模型来有效指导生成过程。
下图概述了 AVI-Talking 系统的流程。该系统由两个主要阶段组成:第一个阶段是 “通过 LLMs 进行视听教学”。第二个阶段是 “会说话的面部 指令系统”。在这里,三维面部动作是根据指导实时合成的。其目的是从输入语音中生成三维参数系数的时间序列。
这种方法能够真实地再现说话者的自然面部表情和嘴部动作,为观众提供更逼真的视觉体验。

实验和结果
对生成的指南和会说话的面孔的质量进行量化评估。评估分为两类:第一类是视听指令预测。在这里,自然语言生成领域广泛采用的指标被用来评估使用 BLEU1、BLEU4、METEOR、ROUGE-L、CIDEr 和 SPICE 生成的指南的准确性。使用 GAN 指标 FID 和 KID 评估面部保真度,并通过多样性得分进一步衡量特定语音片段的面部表情多样性。它还通过计算不同噪音条件下风格特征之间的距离来量化生成面部表情的变化,并使用 LSE-D 来衡量唇部同步的准确性。
在 MeadText 和 RAVEDESS 数据集上获得的 "三维会说话的人脸合成 "结果如下表所示。在许多评估指标上,AVI-Talking 都表现出色。不过,在唇音同步的准确性方面,它可能略逊于其他方法,这主要是由于 SyncNet 是基于无表情视频预先训练的,因此偏向于中性面部表情。

AVI-Talking 的重点是面部表情,这是影响得分的一个因素。不过,它获得的 LSE-D 分数接近参考视频,这表明生成精确的唇音同步视频是可能的。
本文还进行了定量评估。主观评估对于验证模型在生成任务中的表现至关重要。下图显示了AVI-Talking 与传统技术在三种不同情况下的比较结果。结果表明,AVI-Talking可根据说话者的状态生成可靠的视听指令和富有表现力的面部细节。

关于唇语同步的性能,据观察,CodeTalker 和 Faceformer 等其他方法可以在没有面部表情的情况下产生更自然的发音。然而,根据这项研究,在涉及情绪的场景中,可以观察到唇部动作的轻微失真。这一观察结果与上述表格中的 LSE-D 分数也是一致的,后者是一种定量评估。
此外,论文还包括一项用户研究,15 名参与者对AVI-Talking 和三种竞争方法生成的共 30 个视频进行了评分。这些视频是使用从 MeadText 测试集中随机抽取的 20 段口语音频和从 RAVEDESS 中抽取的 10 段音频生成的。
评估采用业内广泛使用的 MOS。参与者从三个维度对每段视频进行 1 到 5 分的评分。
- 唇语同步质量:评估与口语内容同步的嘴部动作。
- 动作的表现力:评估面部细节的丰富程度。
- 面部表情的一致性:评估面部动作与说话者表情的一致性。
结果如下表所示,由于 MeshTalk 采用了简单的 UNet 架构设计,因此在各方面的得分都最低。另一方面,EmoTalk 和 CodeTalker(引入了转换器块)的唇音同步质量得分较高。

在动作的表现力和面部表情的一致性方面,AVI-Talking明显优于其他方法。总体而言,AVI-Talking 在表现力合成方面优于其他模型,清楚地表明了该方法的有效性。

总结
本文提出的 AVI-Talking 是一种基于语音生成富有表现力的三维说话表情的新型系统。该系统首先将语音-视觉生成分解为两个不同的学习步骤,并通过使用中间视觉引导来促进语音驱动的说话表情生成。它还引入了一种新颖的软提示策略,利用大规模语言模型的语境知识来捕捉说话者的语音状态。此外,我们还建立了一个预训练程序,以整合唇语同步和视听指令。最后,我们利用扩散预网络将视听指令有效映射到潜在空间中,以实现高质量的生产。
不过,也发现了一些局限性。对特定语音状态的低灵敏度和说话人脸合成网络对有限视觉指示的依赖被认为是挑战。这归因于数据集的异质性,以及说话者的语音没有得到很好的识别。
未来的研究还将考虑使用检索增强生成(RAG)技术进行进一步的微调和知识注入。这将使大规模语言能够专门用于特定的跨模态视听生成任务,从而生成更具表现力的会说话的人脸。此外,通过使用强大的视觉标记器和对一般视觉基础设施模型进行微调,有望获得更通用和更有竞争力的结果。这些发展有望成为未来会说话的人脸生成技术的重要步骤。
相关文章:
AVI-Talking——能通过语音生成很自然的 3D 说话面孔
概述 论文地址:https://arxiv.org/pdf/2402.16124v1.pdf 逼真的人脸三维动画在娱乐业中至关重要,包括数字人物动画、电影视觉配音和虚拟化身的创建。以往的研究曾试图建立动态头部姿势与音频节奏之间的关联模型,或使用情感标签或视频剪辑作…...
走进虚拟机逃逸技术之VMware Escape漏洞CVE-2023-20872复现
走进虚拟机逃逸技术之VMware Escape漏洞CVE-2023-20872复现 技术分享 技术分享 起初,为了学习虚拟机逃逸相关技术,也为了搞懂硬件虚拟化。于是请教了某巨佬后告诉我一本书,看完之后为了验证我理解到的硬件虚拟化及虚拟化逃逸原理是否正确&am…...
leetcode118. 杨辉三角,老题又做
leetcode118. 杨辉三角 给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 示例 2: 输入: numRows 1…...
进程(一)(22)
1.进程是什么 进程是程序执行的过程,会去分配内存资源,cpu的调度。正在运行的程序叫进程。 并发:同一时刻可以同时完成多个任务。 进程: 是操作系统对正在运行的程序的抽象。进程不仅包括程序的代码,还包括程序的执行状态、内存…...
Excel“取消工作表保护”忘记密码并恢复原始密码
文章目录 1.前言2.破解步骤3. 最终效果4.参考文献 1.前言 有时候别人发来的Excel中有些表格不能编辑,提示如下,但是又不知道原始密码 2.破解步骤 1、打开您需要破解保护密码的Excel文件; 2、依次点击菜单栏上的视图—宏----录制宏…...
WPS关闭后,进程依然在后台运行的解决办法
问题 wps启动后 在启动wps后,什么都不做,打开进程管理器,发现居然运行了3个wps进程: win10只会显示wps进程: win11显示比较准确: 关闭后 在关闭wps,再去任务管理器查看,发现在…...
SQL每日一练-0816
今日SQL题:计算每个项目的年度收入增长率 难度系数:🌟☆☆☆☆☆☆☆☆☆ 1、题目要求 计算每个项目每年的收入总额,并计算项目收入环比增长率。找出每年收入增长率最高的项目。输出结果显示年份、项目ID、项目名称、项…...
直方图均衡化
概念 直方图均衡化是图像处理领域中利用图像直方图对对比度进行调整的方法,通过拉伸像素强度分布范围来增强图像对比度。 原理 均衡化指的是把一个分布 (给定的直方图) 映射 到另一个分布 (一个更宽更统一的强度值分布),从而令强度值分布会在整个范围内…...
Golang | Leetcode Golang题解之第342题4的幂
题目: 题解: func isPowerOfFour(n int) bool {return n > 0 && n&(n-1) 0 && n%3 1 }...
数学建模学习(116):全面解析梯度下降算法及其在机器学习中的应用与优化
文章目录 1.梯度下降简介1.1 梯度下降的数学原理1.2 学习率的选择2 梯度下降变体3.梯度下降优化器3.1 动量法(Momentum)3.2 AdaGrad3.3 RMSprop3.4 Adam3.5 Python 使用不同优化器训练线性回归模型4.案例:使用梯度下降优化加利福尼亚房价预测模型4.1. 数据准备4.2. 模型训练…...
[mysql][sql]mysql查询表大小
select table_schema as 数据库, table_name as 表名, table_rows as 记录数, truncate(data_length/1024/1024, 2) as 数据容量(MB), truncate(index_length/1024/1024, 2) as 索引容量(MB) from information_schema.tables where 11 and table_schemadb001 order by table_ro…...
8.16 mysql主从数据库(5.7版本)与python的交互及mycat
mysql数据库基本操作: [rootm ~]# tar -xf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz 解压压缩包 [rootm ~]# ls anaconda-ks.cfg mysql-5.7.44-linux-glibc2.12-x86_64 mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz [rootm ~]# cp -r mysql-5.7.44-lin…...
项目问题 | CentOS 7停止维护导致yum失效的解决办法
目录 centos停止维护意味着yum相关源伴随失效。 报错: 解决方案:将图中四个文件替换掉/etc/yum.repos.d/目录下同名文件 资源提交在博客头部,博客结尾也提供文件源码内容 CentOS-Base.repo CentOS-SCLo-scl.repo CentOS-SCLo-scl-rh.rep…...
【Docker】Docker Compose(容器编排)
一、什么是 Docker Compose docker-compose 是 Docker 官方的开源项目,使用 python 编写,实现上调用了 Docker 服务的 API 进行容器管理及编排,其官方定义为定义和运行多个 Docker 容器的应用。 docker-compose 中有两个非常重要的概念&…...
嵌入式初学-C语言-二九
C语言编译步骤 预处理编译汇编链接 什么是预处理 预处理就是在源文件(如.c文件)编译之前,所进行的一部分预备操作,这部分操作是由预处理程序自动完成,当源文件在编译时,编译器会自动调用预处理指令的解析…...
0x03 ShowDoc 文件上传漏洞(CNVD-2020-26585)复现
参考:ShowDoc文件上传漏洞(CNVD-2020-26585)_showdoc漏洞-CSDN博客 一、fofa 搜索使用该工具的网站 网络空间测绘,网络空间安全搜索引擎,网络空间搜索引擎,安全态势感知 - FOFA网络空间测绘系统 "S…...
【大模型从入门到精通34】开源库框架LangChain 利用LangChain构建聊天机器人1
这里写目录标题 利用LangChain构建聊天机器人介绍介绍对话型聊天机器人构建环境环境变量和平台设置 加载文档和创建向量存储高级检索技术对话上下文和记忆纳入聊天历史会话缓冲内存 构建对话检索链环境设置与API密钥配置选择合适的语言模型版本Q&A系统设置 利用LangChain构…...
魔法糖果工厂
LYA 是一家魔法糖果工厂的新任管理员。工厂生产的魔法糖果有七种颜色,分别用字母 a、b、c、d、e、f、g 表示。这些糖果被排列在一条传送带上,准备进行包装。为了提高效率,工厂引进了一台智能包装机器人。这个机器人可以按照预设的指令序列来包…...
NVM安装管理node.js版本(简单易懂)
一、前言 1.1 简介 NVM(Node Version Manager)是 node.js 的版本管理器,用 shell 脚本切换机器中不同版本的 nodejs。 Nodejs为什么需要多个版本? 有经验的开发者可能遇到过,某个依赖包明确nodejs是某个版本&#…...
第1章-04-Chrome及Chrome Driver安装及测试
🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年CSDN全站百大博主。 🏆数年电商行业从业经验,历任核心研发工程师&am…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...
