01Decompose the avatar pipeline first
The browser workflow is not one model call. JoyVASA converts audio into motion, while LivePortrait performs appearance extraction, motion extraction, lip retargeting, stitching, feature warping and SPADE image generation. Keeping those stages separate creates useful validation boundaries: audio-driver error, keypoint error, warping error and final generator error can be measured independently rather than diagnosed from one incorrect-looking face.
03Rewrite trilinear sampling with supported operations
A target depth coordinate lies between slices d0 and d1. The rewrite performs supported 4D bilinear GridSample on both planes, then interpolates the two results using the fractional depth coordinate alpha. Depth slices are arranged as batches so WebGPU can process them in parallel and then restored to the original spatial layout. A verified shared-XY structure in the sparse-motion grid removes redundant sampling. The rewritten graph grew from 277 to 316 nodes, but every operation could run in the browser.
05Solve the browser runtime around the graph
The WebGPU workers configure matching ONNX Runtime Asyncify JavaScript and WASM files and create execution-provider sessions serially. The render worker retains the portrait appearance feature for reuse. Summing the JoyVASA and LivePortrait configured artifacts gives 738,879,580 bytes for preview, or 949,593,258 bytes for both resolution tiers: approximately 739 MB and 950 MB respectively, equivalent to 705 MiB and 906 MiB. These are file-size calculations, excluding the application, runtime and inference memory; they are not measured downloads. The model files are loaded from a pinned hosted revision.
07Separate the historical media report from a current demonstration
The development note reports that model-part loading, WebGPU setup, 50-step JoyVASA motion, LivePortrait rendering, WebM encoding, browser playback and visual-track replacement completed. It describes a playable 3.56-second WebM, changing mouth states, head and eye movement, and no browser console errors after completion. The original voiceover, output video and full run log were not supplied with that note and were not revalidated in this assessment. The report establishes what was recorded during development; it is not a new synchronized audiovisual example a reader can inspect here.
A fresh practical acceptance run should preserve the exact portrait, speech, intermediate video and final export with sound. The current avatar encoder adds only a video track to the intermediate WebM. Audio must be verified after the timeline export rather than inferred from a successful video encode.
08Keep tensor contracts available for a future rerun
A useful graph-port record should identify tensor names, rank, axis order, numeric type and output ownership. Batch, channel, depth, height and width have distinct meanings in the feature volume; reshapes and transposes must preserve them. The preserved port note supplies baseline graph hashes and fixed-input error statistics, while the smoke script documents a small renderer path.
That smoke script runs WASM and requests fixed lip ratios; it is not a JoyVASA audio-driven browser benchmark. Dynamic-shape coverage, mixed-precision regression, current WebGPU speed and audiovisual alignment would need separate tests and retained artifacts. We did not execute those tests in this review and do not claim that the recorded fixed-input comparison covers them.