Methodology — AvaturnBench-1
AvaturnBench-1 is a six-probe pixel-level evaluation harness for real-time avatar systems. Every probe operates on raw video and input audio. There are no human raters. The CV/ML primitives are off-the-shelf: CLIP-L, RAFT, HuBERT, FER, and x264 compression.
Why these six
GR, XPD, and IFC are definitional loop-catchers. A pre-rendered animation cycle cannot pass them without rebuilding the architecture. They are not gameable with a prompt or a fine-tune; they require generative inference. AVC is the lipsync-overlay killer: it measures the face outside the mouth region, where closed systems have nothing to perturb. LWA is the listening test. EVD is the screenshot test in numbers.
Scenario pack
Five emotion classes (joke, grief, neutral, anger, surprise). 90 seconds per scenario. N=20 identical-input replays per scenario. Audio is fixed and bit-identical across replays per the harness recording layer.
Probes
GR · Generation Rate
primitive · Per-pixel L2 above codec floorDoes the same audio twice produce the same video?
% of frames varying between two identical-input runs. A pre-rendered loop scores 0%.
GR = mean_t [ ‖frame_a(t) − frame_b(t)‖_2 > 2·codec_floor ] over identical-input runs a, b
rationale · A pre-rendered cycle returns identical frames on identical input. GR is the definitional loop-catcher.
XPD · Cross-Run Pixel Diversity
primitive · CLIP-L embedding distanceHow much does output vary across N identical-input runs?
Spread of frame-embeddings across N=20 identical-input runs.
XPD = mean_{i,j} ‖CLIP-L(frame_i) − CLIP-L(frame_j)‖_2 over N=20 identical-input runsrationale · Embedding spread across N runs distinguishes architectures that re-roll the rendering pass from those that re-play it.
AVC · Audio→Motion Causality (off-mouth)
primitive · RAFT × HuBERT, Pearson rDoes the face respond to audio outside the lipsync overlay?
Correlation between audio prosody and motion in the brows, gaze, and head pose under input perturbation.
AVC = pearson_r( HuBERT(audio), RAFT(off-mouth optical flow) )
rationale · Closed systems pass lipsync evals because they paint phoneme-aligned mouth shapes. AVC measures the rest of the face.
LWA · Listening-Window Activation
primitive · Diarized optical-flow ratioDoes the avatar move while you speak — or only when it speaks?
Ratio of motion energy during the user-speaking window vs. the avatar-speaking window. Loops sit near 1.0.
LWA = mean(motion_energy | user_speaking) / mean(motion_energy | avatar_speaking)
rationale · A loop plays its idle cycle while the user speaks. Listening avatars react during the user-speaking window.
EVD · Emotional-Valence Differentiation
primitive · FER + Fisher's discriminant ratioDifferent face on a joke vs. on grief — or the same face every time?
Class separability of facial-expression embeddings across 5 emotion classes.
EVD = Fisher_ratio( FER_embeddings ; { joke, grief, neutral, anger, surprise } )rationale · Same loop, same expression vector, low Fisher ratio. The ‘polite smile on grief’ failure mode formalized.
IFC · Idle-Loop Compression
primitive · x264 CRF compression vs. real human idleHow loop-like is the idle output compared to a real human?
A perfect loop is periodic and trivially compressible. We score against real human idle. 1.0 = indistinguishable from human; 0.0 = trivially compressible loop.
IFC = 1 − | x264_CRF(avatar_idle) − x264_CRF(human_idle) | / x264_CRF(human_idle)
rationale · A perfect loop is periodic and trivially compressible. We score against real human idle.
How this differs from the Anam/Mabyduck eval
| Anam / Mabyduck (Oct 2025) | AvaturnBench-1 (May 2026) |
|---|---|
| 5-point Likert scale | Pixel- and audio-level CV/ML primitives |
| 178 paid raters | 0 raters |
| 2-minute ‘20 Questions’ — sterile, low-stakes | 90s open scenarios; 5 emotion classes; identical-input replay |
| Loop detection: not measured | Loop detection: primary axis (GR, XPD, IFC) |
| Self-reported satisfaction | Observed pixel evidence |
| Commissioned by Anam | Open source, MIT, PR-driven |
| No public harness | One docker command |
Composite
Composite is the unweighted mean of per-probe normalizations to [0,1]. Five of the six probes are higher-is-better and divided by the field max. IFC is normalized as 1 − |v − 1| so that values close to real human idle compression score 1, and trivially-compressible loops score 0. We chose unweighted mean because per-probe weighting is the kind of knob a consortium negotiates for v2; v1 is deliberately blunt.
Disclosure
Closed-vendor scores reflect tests against published public APIs on the dates listed per vendor row. Each vendor page lists the exact endpoint and capture date. Vendors are welcome to PR a dated correction with their own rerun command line.