Audio2Face-3D Authoring 微服务#

概述#

Audio2Face-3D (A2F-3D) Authoring 微服务是我们面部动画技术栈的补充组件。它旨在迭代指定音频剪辑的面部和情感参数。这允许实时查看 Avatar 面部上的参数更新。

通信#

A2F-3D Authoring 微服务响应来自客户端 RPC 的请求。有两种请求

  1. UploadAudioClip:

    此 RPC 将音频剪辑上传到 AuthoringService 进行处理。它返回与哈希音频剪辑对应的哈希值和 blendshape 键列表。

  2. GetAvatarFacePose:

    此 RPC 请求指定时间码的单个动画帧。它返回与此音频时间码和参数对应的 blendshape 值和情感值列表。要探索可以创作的内容,请查看 Protobuf 数据GetAvatarFacePose 方法输入的 Protobuf 定义。

注意

Audio2Face-3D Authoring 微服务单独处理帧以进行推理。诸如 emotion_contrastlive_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

确定面部上部和下部区域在蒙版边界上的平滑融合程度。

其他参数可能会偶尔出现在配置文件中;但是,它们不会影响头像的面部表情。此类参数的示例包括 blinkStrengthtongueStrengthtongueHeightOffsettongueDepthOffset

注意

Audio2Face-3D Authoring 微服务单独处理帧以进行推理。诸如 upperFaceSmoothinglowerFaceSmoothing 等参数依赖于多个帧进行平滑处理,使其在此上下文中不适用。

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_refreshclib_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 分钟)。

有关音频剪辑存储的更多信息,请参阅此页面