连接到 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:将所有请求的延迟分布绘制为直方图,并标记不同的百分位数。