three.ws · audio2face · amplitude lipsync
Two NVIDIA models on one face
Type a line. It's spoken in NVIDIA Magpie's voice, and that exact audio is sent to NVIDIA Audio2Face-3D, which returns a per-frame ARKit blendshape track. The avatar's mouth and face animate frame-for-frame with the real voice — mapped onto whatever morph-target convention the loaded GLB ships (ARKit, common avatar-platform, VRM, Oculus visemes). If Audio2Face is unavailable, the avatar still speaks and falls back to amplitude lipsync — never a frozen face.
Powered by /api/a2f (NVIDIA Audio2Face-3D over NVCF gRPC) and
/api/tts/speak (NVIDIA Magpie). The blendshape→morph mapping lives in
src/voice/a2f-player.js — it reuses the ARKit/VRM/Oculus vocabulary in
src/voice/arkit-blendshapes.js, so any humanoid rig lip-syncs without a
per-rig allowlist. See the amplitude-only lipsync demo for the
fallback path on its own.