nv-audio2face-3d
NIM
Note
基础配置
- 首先去NGC生成API Key。
- 然后
docker login nvcr.io,用户名:$oauthtoken,密码是上面生成的API Key。 - 随后创建
.envNGC_API_KEY=<Your-API-Key>
# 用于手动编译engine,不用再下载了。
NIM_DISABLE_MODEL_DOWNLOAD=true
- docker-compose.yaml配置:(docker使用和配置相关参考docker)
services:
nv-audio2face-3d:
container_name: nv-audio2face-3d
image: nvcr.io/nim/nvidia/audio2face-3d:latest
env_file:
- .env
deploy:
resources:
reservations:
devices:
- capabilities:
- compute
- utility
- graphics
- display
- video
driver: nvidia
device_ids: ['1']
shm_size: 8G
network_mode: bridge
tty: true
volumes:
- ./data/a2x:/tmp/a2x # 覆盖模型缓存
- ./data/configs/ue:/mnt/configs # 覆盖配置缓存,对于UE的使用需要使用特殊修改的参数,见文档。
ports:
- 52000:52000
编译Engine
参考Guide — Audio2Face-3D
# 执行容器中脚本
NGC_API_KEY=<you_api_key>
LOCAL_NIM_CACHE="./test"
# 容器内部并不是以root用户执行命令的,所以需要注意权限。
mkdir -p $LOCAL_NIM_CACHE
chmod a+w $LOCAL_NIM_CACHE
docker run -it --rm --name audio2face-3d \
--gpus all \
--network=host \
--entrypoint /bin/bash \
-e NGC_API_KEY=$NGC_API_KEY \
-v "$LOCAL_NIM_CACHE:/tmp/a2x" \
nvcr.io/nim/nvidia/audio2face-3d:latest \
-c 'cd /opt/nvidia/a2f_pipeline/service && ./generate_trt_models.py'
# 这样编译完的模型就在$LOCAL_NIM_CACHE中了,
# 运行时映射到/opt/nim/workspace中,并且关闭模型下载,
# 且映射之前编译好的模型到/tmp/a2x即可。
调用推理
参考官方文档
配置环境
git clone https://github.com/NVIDIA/Audio2Face-3D-Samples.git
git checkout tags/v1.3
cd Audio2Face-3D-Samples/scripts/audio2face_3d_microservices_interaction_app
python3 -m venv .venv
source .venv/bin/activate
pip3 install ../../proto/sample_wheel/nvidia_ace-1.2.0-py3-none-any.whl
pip3 install -r requirements.txt
执行
# healthcheck
python3 a2f_3d.py health_check --url <ip>:<port>
# 调用微服务
# - config.yml在当前目录的configs中
# - 音频wav需要是PCM 16bit格式的,且单声道(Mono)
# ffmpeg -i input.mp4 -c:a pcm_s16le -ac 1 output.wav 可以获取.
python3 a2f_3d.py run_inference <audio_file.wav> <config.yml> -u <ip>:<port> [--skip-print-to-files]