"""Create deterministic browser runtime data for the pinned JoyVASA model.""" from __future__ import annotations import argparse import hashlib import json import pickle from pathlib import Path, PosixPath import numpy as np import torch EXPECTED_CHECKPOINT_SHA256 = "9dd869329725caedf5f0c13dd383abec1e385f566d8afe2047b141f604844e80" EXPECTED_TEMPLATE_SHA256 = "294ce67350b18031b375361756f654c76d5e14c8f1e319cf9ed07f759ef81a98" def sha256(path: Path) -> str: digest = hashlib.sha256(path.read_bytes()).hexdigest() return digest def main() -> None: parser = argparse.ArgumentParser() parser.add_argument("--checkpoint", type=Path, required=True) parser.add_argument("--template", type=Path, required=True) parser.add_argument("--output-dir", type=Path, required=True) args = parser.parse_args() if sha256(args.checkpoint) != EXPECTED_CHECKPOINT_SHA256: raise RuntimeError("Unexpected JoyVASA checkpoint") if sha256(args.template) != EXPECTED_TEMPLATE_SHA256: raise RuntimeError("Unexpected JoyVASA motion template") torch.serialization.add_safe_globals([argparse.Namespace, PosixPath]) payload = torch.load(args.checkpoint, map_location="cpu", weights_only=True) # The pinned 3.6KB pickle was audited before use and contains only a dict, # NumPy ndarray reconstruction, ndarray, and dtype globals. with args.template.open("rb") as handle: template = pickle.load(handle) args.output_dir.mkdir(parents=True, exist_ok=True) conditioning_parts = [ ("start_audio_feat", payload["model"]["start_audio_feat"].numpy()), ("start_motion_feat", payload["model"]["start_motion_feat"].numpy()), ("null_audio_feat", payload["model"]["null_audio_feat"].numpy()), ] conditioning = np.concatenate([value.reshape(-1) for _, value in conditioning_parts]).astype("