Audio2Face-3D Authoring 微服务#
概述#
Audio2Face-3D (A2F-3D) Authoring 微服务是我们面部动画技术栈的补充组件。它旨在迭代指定音频剪辑的面部和情感参数。这允许实时查看 Avatar 面部上的参数更新。
通信#
A2F-3D Authoring 微服务响应来自客户端 RPC 的请求。有两种请求
- UploadAudioClip:
此 RPC 将音频剪辑上传到 AuthoringService 进行处理。它返回与哈希音频剪辑对应的哈希值和 blendshape 键列表。
- GetAvatarFacePose:
此 RPC 请求指定时间码的单个动画帧。它返回与此音频时间码和参数对应的 blendshape 值和情感值列表。要探索可以创作的内容,请查看 Protobuf 数据 中 GetAvatarFacePose 方法输入的 Protobuf 定义。
注意
Audio2Face-3D Authoring 微服务单独处理帧以进行推理。诸如 emotion_contrast
和 live_blend_coef
等后处理参数依赖于多个帧进行平滑处理,使其在此上下文中不适用。
目前,我们仅支持 mono 16-bits PCM 音频格式,采样率任意。
面部参数
Audio2Face-3D Authoring 支持的面部参数包括
参数 |
最小值 |
最大值 |
描述 |
---|---|---|---|
skinStrength |
0.0 |
2.0 |
控制皮肤的运动范围。 |
upperFaceStrength |
0.0 |
2.0 |
控制面部上部区域的运动范围。 |
lowerFaceStrength |
0.0 |
2.0 |
控制面部下部区域的运动范围。 |
eyelidOpenOffset |
-1.0 |
1.0 |
调整眼睑的默认姿势(-1.0 表示完全闭合。1.0 表示完全张开。) |
lipOpenOffset |
-0.2 |
0.2 |
调整嘴唇的默认姿势(-1.0 表示完全闭合。1.0 表示完全张开。) |
upperFaceSmoothing |
0.0 |
0.1 |
平滑面部上部区域的运动。 |
lowerFaceSmoothing |
0.0 |
0.1 |
平滑面部下部区域的运动。 |
faceMaskLevel |
0.0 |
1.0 |
确定面部上部和下部区域之间的边界。 |
faceMaskSoftness |
0.001 |
0.5 |
确定面部上部和下部区域在蒙版边界上的平滑融合程度。 |
其他参数可能会偶尔出现在配置文件中;但是,它们不会影响头像的面部表情。此类参数的示例包括 blinkStrength
、tongueStrength
、tongueHeightOffset
和 tongueDepthOffset
。
注意
Audio2Face-3D Authoring 微服务单独处理帧以进行推理。诸如 upperFaceSmoothing
和 lowerFaceSmoothing
等参数依赖于多个帧进行平滑处理,使其在此上下文中不适用。
Blendshapes
Audio2Face-3D Authoring 输出 blendshape。有关更多信息,请参阅 ARKit blendShape 文档。
Audio2Face-3D 不会动画头部、舌头和眼睛运动。
以下 blend shape 值将始终为 0
EyeLookDownRight
EyeLookInRight
EyeLookOutRight
EyeLookUpRight
EyeLookDownLeft
EyeLookInLeft
EyeLookOutLeft
EyeLookUpLeft
TongueOut
HeadRoll_deprecated
HeadPitch_deprecated
HeadYaw_deprecated
在 Audio2Face-3D Authoring 输出中。
注意
blendshape mouthClose
的定义偏离了标准 ARKit 版本。该形状包括下颌的张开。
批处理大小#
Audio2Face-3D Authoring 正在执行批处理推理,以优化计算并同时为多个用户提供服务。部署微服务时,您可以在配置文件中更新此批处理大小。
批处理大小越高
整体吞吐量越好
延迟越高
GPU RAM 使用率越高
整体吞吐量受 gpu 处理能力限制。
配置#
以下配置文件用于 A2F-3D Authoring MS。
注意
clib_db_ttl_refresh 和 clib_db_ttl_check_interval_seconds 选项的名称中包含拼写错误。这将在即将发布的版本中更正。
对于 James
james_v2.3-config.json
{
"a2e_batch_size": 10,
"a2e_config_path": "/app/configs/a2e-config.json",
"a2f_batch_size": 10,
"a2f_config_path": "/app/configs/james_v2.3-proc-config.json",
"endpoint": "0.0.0.0:50051",
"clip_db_ttl_seconds": 3600,
"clip_db_max_size_bytes": 10737418240,
"clib_db_ttl_refresh_on_use": false,
"clib_db_ttl_check_interval_seconds": 60
}
对于 Mark
mark_v2.3-config.json
{
"a2e_batch_size": 10,
"a2e_config_path": "/app/configs/a2e-config.json",
"a2f_batch_size": 10,
"a2f_config_path": "/app/configs/mark_v2.3-proc-config.json",
"endpoint": "0.0.0.0:50051",
"clip_db_ttl_seconds": 3600,
"clip_db_max_size_bytes": 10737418240,
"clib_db_ttl_refresh_on_use": false,
"clib_db_ttl_check_interval_seconds": 60
}
对于 Claire
claire_v2.3-config.json
{
"a2e_batch_size": 10,
"a2e_config_path": "/app/configs/a2e-config.json",
"a2f_batch_size": 10,
"a2f_config_path": "/app/configs/claire_v2.3-proc-config.json",
"endpoint": "0.0.0.0:50051",
"clip_db_ttl_seconds": 3600,
"clip_db_max_size_bytes": 10737418240,
"clib_db_ttl_refresh_on_use": false,
"clib_db_ttl_check_interval_seconds": 60
}
我们建议仅在需要时调整配置文件中的以下参数
a2e_batch_size:您可以将此数字设置为 1 到 256 之间的数字;我们建议设置为 10。
a2f_batch_size:您可以将此数字设置为 1 到 256 之间的数字;我们建议设置为 10。
endpoint:如果需要,您可以将端口从 50051 更新为您方便的另一个端口。默认为:“0.0.0.0:50051”。
clip_db_max_size_bytes:音频存储的最大大小(以字节为单位)。默认为 10737418240 字节 (10 GiB)。
clip_db_ttl_seconds:音频文件在服务器上保留的时间(以秒为单位)。默认为 3600 秒(1 小时)。
clib_db_ttl_refresh_on_use:指示是否应在使用时(例如,在服务请求期间)重置音频文件的 TTL 倒计时。默认为 false
clib_db_ttl_check_interval_seconds:系统检查过期 TTL 的频率(以秒为单位)。默认为 60 秒(1 分钟)。
有关音频剪辑存储的更多信息,请参阅此页面。