连接到 A2F-3D Authoring 微服务的示例应用程序#

注意

本示例应用程序章节的目的仅在于检查微服务端点。

请使用 Maya-ACE 连接到 A2F-3D Authoring 微服务以进行交互式头像调整。

按照本节设置连接。

提供了两个示例应用程序来演示如何与 Audio2Face-3D Authoring 微服务通信。

设置#

克隆存储库: NVIDIA/Audio2Face-3D-Samples

转到 early_access/a2f-3d-authoring-sample-app 子文件夹。

在里面你会找到多个文件,最重要的文件是

  • README.md - 解释如何设置和使用示例应用程序。

  • client_local_deploy.py - 用于与 Audio2Face-3D Authoring 微服务的本地部署进行交互和延迟检查的示例应用程序。请参阅 client_local_deploy.py

  • client_nvcf_deploy.py - 用于与 NVCF 上托管的 Audio2Face-3D Authoring 微服务进行交互的示例应用程序。请参阅 client_nvcf_deploy.py

按照下载的 README.md 中的说明,即 Requirements 部分进行操作。

使用本地部署#

按照 容器部署 中的说明进行操作,以获得 Authoring Audio2Face-3D 微服务的本地部署。

client_local_deploy.py python 应用程序与 Audio2Face-3D Authoring 服务的本地部署进行交互。

此应用程序有 3 种模式

  • health_check:检查服务是否可访问。

  • data_capture:从完整音频剪辑捕获数据。

  • latency:记录 Authoring 服务的延迟数据。

该应用程序可以按如下方式使用

$ python3 client_local_deploy.py --help
$ python3 client_local_deploy.py health_check --url <url>
$ python3 client_local_deploy.py data_capture --url <url> --audio-clip <audio_file.wav> [--print-bs-names]
$ python3 client_local_deploy.py latency --url <url> --audio-clip <audio_file.wav> --number-requests <number_requests> --concurrent <number_parallel_connections>  [--print-bs-names]
  • <url> 是正在运行的 Audio2Face-3D Authoring 微服务实例的 url。例如 0.0.0.0:50051

  • <audio_file.wav> 是 PCM 16 位格式的音频文件。

  • <number_requests> 和 <number_parallel_connections> 是可以调整的 2 个参数。过高的并发性会增加延迟。过低的并发性会增加处理时间。

  • –print-bs-names:可选。如果启用,该命令将打印返回的 blendshape 的名称。

健康检查

假设 Authoring 微服务在 0.0.0.0:50051 上运行

$ python3 client_local_deploy.py health_check --url 0.0.0.0:50051
  Service 0.0.0.0:50051 is ONLINE

如果使用无效的 url

$ python3 client_local_deploy.py health_check --url 0.0.0.0:50052
  Error checking health: <_InactiveRpcError of RPC that terminated with:
    status = StatusCode.UNAVAILABLE
    details = "failed to connect to all addresses; last error: UNKNOWN: ipv4:0.0.0.0:50052: Failed to connect to remote host: Connection refused"
    debug_error_string = "UNKNOWN:Error received from peer  {grpc_message:"failed to connect to all addresses; last error: UNKNOWN: ipv4:0.0.0.0:50052: Failed to connect to remote host: Connection refused", grpc_status:14, created_time:"2024-09-06T17:58:55.301073978+02:00"}"
  >
  Service 0.0.0.0:50052 is OFFLINE

处理音频剪辑

此调用会将 blendshape 和情绪保存到 csv 文件,类似于 A2F-3D 示例应用程序,例如 Claire_neutral.wav 音频文件。你可以提供任何 16 位 PCM wav 格式的音频文件。

$ python3 client_local_deploy.py data_capture --url 0.0.0.0:50051 --audio-clip ../../example_audio/Claire_neutral.wav
  audio_clip_hash=5c8de20d275e53fcfceba0f39505f8b2b1fd960294518fbadf210d51dcc3a2e4
  Perform sequential requests for the full audio clip...
  3.73 seconds processed
  Saved results to output_blendshape.csv
  Saved results to output_emotions.csv

结果保存在 2 个文件中

  • output_blendshape.csv:包含 blendshape 及其名称、值和时间码。

  • output_emotions.csv:包含情绪及其名称、值和时间码。

时间码相对于音频文件的开头。

延迟测试

以下调用将执行延迟性能记录,可以调整 2 个参数,即请求数和并行连接数。过高的并发性会增加延迟。过低的并发性会增加处理时间。

$ python3 client_local_deploy.py latency --url 0.0.0.0:50051 --audio-clip ../../example_audio/Claire_neutral.wav --number-requests 1000 --concurrent 10
  Computing data for 1000 requests with concurrency of 10
  audio_clip_hash=5c8de20d275e53fcfceba0f39505f8b2b1fd960294518fbadf210d51dcc3a2e4
  .......................................................................................
  .......................................................................................
  .......................................................................................
  Saved latency data in output_perf.txt
  Plotted latency data in output_latency.png

结果保存在 2 个文件中

  • output_perf.txt:包含有关延迟的统计信息。

  • output_latency.png:将所有请求的延迟分布绘制为直方图,并标记不同的百分位数。

使用 NVCF#

client_nvcf_deploy.py python 应用程序与部署在 NVCF 上的 Audio2Face-3D Authoring 服务进行交互。

与本地执行情况一样,此应用程序有 3 种模式

  • health_check:检查服务是否可访问。

  • data_capture:从完整音频剪辑捕获数据。

  • latency:记录 Authoring 服务的延迟数据。

该应用程序可以按如下方式使用

$ python3 client_nvcf_deploy.py --help
$ python3 client_nvcf_deploy.py health_check --function-id <function_id> --version-id <version_id> --apikey <api_key>
$ python3 client_nvcf_deploy.py data_capture --function-id <function_id> --version-id <version_id> --apikey <api_key> --audio-clip <audio_file.wav> [--print-bs-names]
$ python3 client_nvcf_deploy.py latency --function-id <function_id> --version-id <version_id> --apikey <api_key> --audio-clip <audio_file.wav> --number-requests <number_requests> --concurrent <number_parallel_connections> [--print-bs-names]
  • <api_key> 是 NVIDIA 客户经理提供给你的运行密钥。

  • <function_id> 和 <version_id> 用于访问 API 功能

  • <audio_file.wav> 是 PCM 16 位格式的音频文件。

  • <number_requests> 和 <number_parallel_connections> 是可以调整的 2 个参数。过高的并发性会增加延迟。过低的并发性会增加处理时间。

  • –print-bs-names:可选。如果启用,该命令将打印返回的 blendshape 的名称。

健康检查

$ python3 client_nvcf_deploy.py health_check --function-id {FUNCTION_ID} --version-id {VERSION_ID} --apikey {API_KEY}
  NVCF Service is ONLINE

处理音频剪辑

此调用会将 blendshape 和情绪保存到 csv 文件,类似于 A2F-3D 示例应用程序,例如 Claire_neutral.wav 音频文件。你可以提供任何 16 位 PCM wav 格式的音频文件。

$ python3 client_nvcf_deploy.py data_capture --function-id {FUNCTION_ID} --version-id {VERSION_ID} --apikey {API_KEY} --audio-clip ../../example_audio/Claire_neutral.wav

结果保存在 2 个文件中

  • output_blendshape.csv:包含 blendshape 及其名称、值和时间码。

  • output_emotions.csv:包含情绪及其名称、值和时间码。

时间码相对于音频文件的开头。

延迟测试

以下调用将执行延迟性能记录,可以调整 2 个参数,即请求数和并行连接数。过高的并发性会增加延迟。过低的并发性会增加处理时间。

$ python3 client_nvcf_deploy.py latency --function-id {FUNCTION_ID} --version-id {VERSION_ID} --apikey {API_KEY} --audio-clip ../../example_audio/Claire_neutral.wav --number-requests 1000 --concurrent 10
  Computing data for 1000 requests with concurrency of 10
  audio_clip_hash=5c8de20d275e53fcfceba0f39505f8b2b1fd960294518fbadf210d51dcc3a2e4
  .......................................................................................
  .......................................................................................
  .......................................................................................
  Saved latency data in output_perf.txt
  Plotted latency data in output_latency.png

结果保存在 2 个文件中

  • output_perf.txt:包含有关延迟的统计信息。

  • output_latency.png:将所有请求的延迟分布绘制为直方图,并标记不同的百分位数。