Audio-Driven Facial Animation 论文解读

介绍一种端到端学习方法,利用语音数据生成逼真的3D面部动画。该方法不仅考虑了面部肌肉间的复杂关系,还能捕捉不同说话人的风格及情感状态。通过引入额外的latent数据与损失函数,确保了动画的真实感与时序稳定性。

文章链接: Audio-Driven Facial Animation by Joint End-to-End Learning of Pose and Emotion

1.Introduction和论文解读

Audio-driven facial animation目的是输入语音数据,生成真实的3D脸部动画。为了让结果更自然,模型需要考虑复杂的脸部肌肉和皮肤组织之间的关系,考虑phoneme(音素)之间的相互依赖,作者采用data-driven的方法,端到端训练神经网络,学习训练数据中的复杂运动关系。虽然现在的神经网络在各种推理和分类任务中很有效,但在训练数据存在模糊和歧义时,倾向于回归均值。

作者的contribution可以整理为:

  • 提出一个有效的神经网络结构,专门处理人们说话,以及泛化至不同的说话人风格。
  • 一个新颖的方法用于发现训练数据中无法用语音来解释的变化规律,比如emotion state
  • 引入三个损失函数用于训练中约束时间稳定性,以及动画过程中保证响应速度。

本文不仅可以对单一人物进行建模,也可以从不同性别、口音、语种的人得到合理的驱动结果。

2.Related Work

Models based on linguistics:大量的工作分析和理解语言的结构,并迁移于面部表情中。比如音轨提供了关于音素内容的信息,动画则相应是基于视素的特征。目前存在大量的方法实现音素和视素的一一映射,比如近期的JALI工作。JALI将面部动画和下巴、嘴唇运动联系起来,能够不受实际音频内容的影响,可靠的复现一系列说话风格和情绪状态。这类方法核心优势是可以在全过程中可以明确控制嘴唇正确的张合。缺点则是在过程中复杂性会逐渐递增,需要特定的语言规则,需要非常完美的录音质量,对非音素声音的效果不够好,缺乏理论依据去处理非下巴和嘴唇以外的部位动画。

Models based on machine learning:早期有很多基于传统机器学习的方法。Voice puppetry完全使用音频,不进行语音结构的明确分析。在训练阶段,它根据视频中观察到的人脸动态估计一个隐马尔可夫模型(HMM)。在推理过程中,对HMM进行采样,并通过考虑全局语言的轨迹优化来合成最可能的序列。后续工作改进了轨迹采样(Anderson等),对HMM进行分段线性近似,比如使用Guassian latent、semi-Markov模型、RNN网络。

接下来机器学习被应用于学习协同发音,然后是合成动画的串联阶段,或用于在各个阶段之间进行映射,例如音素分类,将文本映射到音素,将音素映射到视素,或将输入音频特征映射到高斯混合模型的控制参数。

Extracting and controlling the emotional state:这部分主要集中于音频中分离具体的emotion states。Chuang引入线性模型从音素终分离显性的表情基。Elgammal and Lee在这个基础上引入了非线性表情基。Cao使用向量机提取表情,并且仿真生成3D动画。它们计算一组预定义情感状态之间的映射,并让用户指定用于动画合成的状态。Anderson等使用聚类自适应训练来推导情绪状态的基础,以便可以对其进行插值和外推。他们还提出了一项用户研究,对emotion仿真的结果进行评级。

本文主要是引入latent进行表征模型,本质上就是做成了embedding,进行网络训练和学习。

3.端到端网络结构

给定一个音频窗口数据,模型负责输出窗口中心时间点的脸部表情参数。作者用与一个固定拓扑的脸部mesh的逐顶点差分向量表示表情。实际inference时,沿着音频的时间滑窗,每一个step进行推理驱动mesh动画。每个窗口单独作为输入。每个step单独推理,虽然没有像RNN网络一样记忆前后帧的关系,但是滑窗窗口本身窗口让模型具备了前后帧稳定性。

Audio Process

使用520ms音频窗口作为输入,用于获取音素发音等相关信息。每一个输入audio再经过LPC算法生成32*64的特征。

Representation of emotion states

语音生成脸部动画本质是一个非常模棱两可不确定的问题,同样的音频可以产生不同的脸部表情。为了解决这种不确定性问题,作者将少量的latent data与训练样本关联(即作为模型的第二个输入),让模型有足够的确定信息去预测正确的输出pose。理想状态下,这个新加入latent data可以编码训练样本邻近帧动画相关的参数,这些参数往往并不能单通过语音本身预测出来,比如说话风格、脸部表情、发音pattern。而在推理阶段,该latent输入也允许混合多种不同的emotion states(可以理解为状态基),从而生成可控制的不同风格的动画。由于表情无法标注,没有绝对的对错,因此作者采用data-driven的方案让模型在训练的过程中自动训练得到latent。

作者采用E维的向量表示emotion states,其中E可调,实际应用中可设置为16-24维,并从高斯分布随机初始化该向量。每一个训练样本分配一个向量,存储这些向量的矩阵构成emotion database。Emotion state会append到articulation network的所有layers的激活层中,作为计算图的一部分,随着训练过程的反向传播一直更新。E的维度设置太小,无法消除歧义性。如果太大,则会影响过大导致音频的推理效果不好。

Emotion state存在的问题是,因为没有赋予实际的物理含义,有可能学到的东西和audio是一样的。音频输入是限制在520ms窗口内,因此防止重复学习的方法是禁止emotion state学到短期变化的东西。Emotion state聚焦于长期时序特征,因此即使给定固定的emotion state也可以使模型产生合理的动画。作者引入专门的loss function用来惩罚快速变化。

作者发现将emotional states加入网络后面的层在实际运行时对效果还是有很大提升的,可能是因为emotional states可以对不同的layer有不同的控制效应。越高度抽象的层(网络越后面越抽象)越难以收敛和学习层。这个状态基可以直接作用于模型输出的效果,提升后面layer的学习能力。而将emotional states引入连接到早期的层可以对细微的动画功能(如协同发音)进行细微的控制。

4. Loss Function

Position term 顶点数为V,预测值与真值的均方差,这是该算法的主要loss,loss直接影响整体输出效果,这里需要强调下,过度依赖直接的位置回归会引入极大的抖动造成不稳定现象,但是如果训练不到位则会导致嘴唇不准确:

Motion term 对minibatch的B样本,生成邻近帧组成的B/2样本对,样本对中计算移动差分,其中m(x)表示差分,2倍的原因是为了对齐position term的样本数(本质是引入速度项进行平滑,抑制Position term的抖动):

Regularization term 限制emotion state的值趋近于平均水平(E为维度),以保证short-term音频可以作用于最终的效果,提升动态响应能力。

5. 效果

实际复现和训练,该论文效果还是不错的,能实现基础的嘴唇驱动,算法实时性很好,网络模型小、速度极快,可以应用于行业解决方案。模型结构比较简单,自建数据集需要进行面捕采集。

但是emotion states表情基的选择工作量非常大,目前暂未进行试验,后续有新的实际体验会更新过来。

作者评价效果采用的是打分制,即让用户进行打分和投票,选择他们认为好的。

编辑于 2022-06-18 10:57

<think>嗯,用户想了解SpeechFace的技术文档或教程,但关于这个主题的信息似乎不多。首先,我需要确认“SpeechFace”这个术语是否正确,是否存在拼写错误或者是否是一个较新的技术。可能用户指的是将语音处理与面部表情或面部识别相结合的技术,比如语音驱动面部动画之类的应用。 接下来,我应该检查是否有相关的知名技术或框架使用类似的名字。例如,Speech-Driven Facial Animation或者Audio-Driven Talking Face Generation,这些是近年来研究的热点。可能需要考虑像Google的AVStar、Meta的Codec Avatars,或者一些学术项目如Wav2Lip、MakeItTalk等。这些技术通常涉及多模态学习,结合语音信号和视觉信息。 然后,用户需要技术文档或教程,所以应该推荐一些可靠的资源。比如,GitHub上的开源项目,相关的论文,或者博客文章。需要确保推荐的资源是最新的,因为该领域发展迅速。另外,用户可能需要基础教程,比如如何使用Python和相关库(如PyTorch、TensorFlow)来实现语音到面部的模型。 还要考虑到用户可能对具体的应用场景感兴趣,比如虚拟助手、游戏角色动画、视频会议中的虚拟形象等。因此,在回答中可以提及这些应用,并推荐相应的案例研究或项目实例。 此外,需要检查是否有引用来源。例如,某些技术可能有官方文档,或者知名的研究论文。如果找不到直接的“SpeechFace”资料,可能需要解释类似技术,并建议用户查阅相关文献。 最后,确保回答结构清晰,分点说明可能的替代技术、推荐的学习资源、应用场景以及相关开源工具。同时,生成的问题要围绕用户可能进一步感兴趣的方向,比如技术原理、实现步骤、挑战等。</think>### SpeechFace 技术相关介绍 目前公开资料中并未有明确以“SpeechFace”命名的成熟技术框架,但根据名称推测,该技术可能与**语音驱动面部表情生成**或**语音-面部特征关联分析**相关。以下是类似技术的解析及学习资源: --- ### 一、技术方向推测 1. **语音到面部动画(Speech-Driven Facial Animation)** 通过语音信号生成对应的面部动画(如嘴唇运动、表情变化),应用于虚拟数字人、游戏角色等[^1]。 代表方法: - *Wav2Lip*:基于音频与唇部同步的模型(GitHub开源) - *VOCA* (Voice Operated Character Animation):通过语音驱动3D面部网格 2. **语音-面部特征关联分析** 研究语音信号与说话人面部特征的关联性,例如通过声音重建人脸或进行身份验证[^2]。 --- ### 二、学习资源推荐 #### 1. 开源项目与工具 - **Wav2Lip** GitHub仓库:https://github.com/Rudrabha/Wav2Lip 教程:提供Colab Notebook快速实现音频到唇部同步 ```python # 示例代码(简化) from wav2lip import Wav2Lip model = Wav2Lip() model.generate_video(audio="input.wav", face="face_image.jpg") ``` - **VOCA** 论文与代码:https://github.com/TimoBolkart/voca #### 2. 论文与文档 - 《A Lip Sync Expert Is All You Need for Speech to Lip Generation》 (Wav2Lip论文)[^3] -Learning Speech-driven 3D Conversational Gestures from Video》 (多模态语音-面部-手势生成)[^4] #### 3. 实践教程 - **Google Colab教程**:搜索“Audio-driven Talking Face Generation Colab”可找到实时演示 - **Unity面部动画集成**:Unity插件如`Oculus LipSync`支持语音驱动模型 --- ### 三、应用场景 1. 虚拟主播/数字人直播 2. 影视配音自动化 3. 无障碍通信(为听障者提供唇语视觉辅助) ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值