ADX LipSync应用/Unreal篇

LipSync说明

LipSync是最新推出的,针对口型匹配的新解决方案。能够实时以及预先分析声音素材,得到声音素材所包含的信息后,将其运用于模型上,通过变更模型的变形效果,综合控制口型的变化,以达到口型和语音匹配的目的。

LipSync主要有两种应用模式,实时解析和预先分析。

  1. 实时解析可以通过话筒录入实时分析录入的声音内容,进行分析最终得到相关的口型数据,进行模型变形匹配声音口型。
  2. 预先分析是通过将已经录音处理好的wav文件进行分析,得到相关的分析数据,当播放相关的wav文件时,可以使用事先分析好的数据进行模型的变形以匹配声音口型。

LipSync也拥有两种应用方法,单独使用和与ADX2联合使用

  1. 单独使用是LipSync单独应用,直接使用LipSync进行声音分析,最终得到口型数据和效果。
  2. 与ADX2联合使用,这种方式LipSync作为ADX2的插件使用,能够分析ADX2中Cue中Track轨道上的波形文件,生成相应的声音数据。分析相应的数据也可以事先分析或者实时分析,这种应用方式称为ADX LipSync也是本文中介绍的重点内容。
模型数据创建指南

由于口型同步需要声音数据和模型的变形效果,因此模型的变形效果制作的好坏也是决定口型同步效果的一大因素。

LipSync主要通过声音数据,驱动模型的变形效果,综合的变更各个模型变形的参数来集体的把控口型的变化自然和效果。

在模型的数据创建中,我们通过使用3D Max或者3D Maya等3d模型工具,创建相关的变形数据如图:

可以从上图看到,我们创建了相关变形器,并且添加了相关的变形数据,当我们变更变形数据的数值时就能看到变形效果:

这样一来我们的模型变形效果就处理完成,可以通过声音数据驱动变形效果的数值发生变化,同步口型。

ADX LipSync

ADX LipSync是将LipSync结合在ADX2中进行使用的方式,这种方式主要分为两种,预先分析和实时分析。本文会介绍如何在ADX2中进行预先分析,同时使用分析的结果在Unity中同步口型。

ADX LipSync的预先分析

当使用ADX LipSync时,将素材拖入到Track后,就能够看到声音文件对应的口型数据分析结果。

如上图所示,右下角显示的就是分析后的结果。

分析数据

经过LipSync的分析后,主要产出两种分析数据

  1. 宽度高度模式,这种分析结果数据,对应于口型变化的宽度和高度结果,通过对声音进行分析,得到对应声音时刻变化的宽度和高度曲线,同时可以在ADX2中进行高度和宽度曲线的调整,以应对自动分析不满意的效果。
  2. 音素混合量分析模式,这种分析结果数据是分析语音中各个音素量的占比,通过占比决定各个音素口型的权重从而动态的变化模型变形效果,同样如果对于自动分析结果并不满意,则可以手动修改。

通过这两种数据,我们可以变更口型变化效果,来实现口型同步。

注意:

  1. 对于宽度和高度模式,没有任何语言限制,所有语种都可以使用,但是解析精度相对低。
  2. 对于因素量混合分析模式,和语种相关,目前提供日语的AEUIO几个元音进行解析,因此对日语的匹配度较高。
ADX LipSync在Unreal中的应用

首先要将模型文件导入到Unreal中,导入后我们在Unreal中打开模型文件可以看到相关信息:

在导入后的模型中我们能够看到变形的相关参数,这也是我们同步口型变化中需要实时变更的参数。

首先我们要使用模型创建一个蓝图类:

创建完成后在其中添加 Atom Component组件,用于播放声音内容。在Atom component中我们选择需要播放的cue的内容:

添加完成后,在事件宏中创建一个名称为:SetupAdxLipsyncAnalyzer的宏,此时我们已经将所有资源准备到位,将处理相关内容以进行口型同步。

SetupAdxLipsyncAnalyzer宏的作用主要用于初始化口型信息,使其调用Atom Sound的相关声音信息来解析口型数据:

我们通过创建上述宏的内容后用于初始化相关口型信息,完成后我们需要对获得信息内容进行处理,使之与模型参数相对应,因为我们拥有两种不同的口型处理模式,宽度高度模式和音素混合量分析模式,因此我们创建两个不同的宏对应处理这两种不同的数据:

  1. 宽度高度模式宏:UpdateMouthShapeBasedOnWidthAndHeight处理宽度高度模式,我们采用了信息中的宽度和高度来影响我们在模型中创建的LipWidthOpen以及LipHeightOpen两个变形参数,当声音分析得到的数据变化时能够每帧更改模型的变形参数就可以达到口型对应的效果。
  2. 音素混合量分析宏:UpdateMouthShapeBasedOnJapaneaseVowel同样类似的方式我们可以获得声音分析数据中关于AEUIO的各项数据,用来变化模型中对应的A,E,U,I,O对应的变形效果,每帧变更数据来变化口型效果。

这样一来我们的初始化操作和数据处理就已经完成了,下面需要针对这些数据进行每帧的调用,回到我们蓝图类的事件图表中创建一个bool类型的参数:

参数的作用用于决定使用口型分析的类型,当为ture时使用音素量混合模式,当为false时使用宽度高度模式,据此我们在事件图表中创建相关蓝图:

完成后,当我们运行场景,就能够看到口型和语音同步播放了。

如上图所示,我们还可以通过更改bool参数IsLipSyncBasedOnJapaneaseVowel的值来更改口型模式,可以选用高度宽度模式以及音素混合量分析模式。

同时我们可以更改Atom Component组件的Sound选择需要播放的Cue,当Cue更改时我们的口型也会同步的进行分析和匹配。

Ringo

CRI Middleware Global Expansion Group

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据