← Avatar lab
IDENTITY + MOTION + VOICE

Photo + voice → video → review

Local CPU preview available · RunPod not connected

Start with your photo and voice. Local rendering makes a small face/head video. Reference analysis is optional and does not animate the body. Inputs and local outputs stay on this Mac.

Reference & experiment library

Save each reference with its own sample ID. Loading restores its photo, audio, measurements and review.

1. Your avatar photo

Selected identity

Reference video · optional for local render

The original mouth movement will not match new words automatically.

New voice

2. Motion analysis · head, shoulders, arms, torso, legs

Not analyzed.

Mapping method, formulas & limits

Method v1.0.0: body pose + face mesh + expression coefficients. Yellow points: estimated face surface; green lines: visible body joints.

Joint angle: acos((A−B)·(C−B) / (|A−B||C−B|)), converted to degrees, using aspect-corrected image coordinates. Normalized position: (point − shoulder midpoint) / shoulder width. Motion speed: displacement / elapsed seconds / frame diagonal × 100. Coverage: accepted frames / sampled frames × 100.

Mouth opening: lip gap / mouth width. Eye opening: eyelid gap / eye width. Brow height and chin/cheek proportions use face dimensions for scale. Neck-axis tilt uses ear midpoint relative to shoulder midpoint; it is not a clinical neck angle.

Body landmarks require visibility ≥ 0.6 and must be inside the frame. Face mesh has no individual landmark visibility gate; occluded face points may be inferred. Facial coefficients are model estimates (not emotions or biometric identity). Approximately two samples/sec can miss blinks and fast motions.

Not measured: individual teeth, tongue, hair strands, neck skin surface, detailed fingers, physical inch measurements or audio-lip accuracy. No smoothing or retargeting is applied. Camera angle/occlusion affect all measurements.

Face model documentation · Body model documentation

Only visible, confident landmarks are measured. A chest-up reference cannot supply reliable leg motion. Arms/wrists and facial landmarks are measured; detailed fingers require separate analysis. These readings are not yet converted into an animation model’s conditioning format.

2. Render & download

Local photo + voice preview

SadTalker on this Mac · no RunPod. Face/head only, 256 px. Reference video and body/expression controls are not used by this engine. A 3-second CPU preview may take 15 minutes or more.

Download first local test · 3 seconds

Uses your photo and new voice from Inputs. Keep this page open until the result is attached.

Advanced reference/body settings · not connected to local render

Local face/head rendering is available above. Reference-driven body rendering is not connected.

Reference/body route: web testing. Review the motion overlay and saved readings first. RunPod is the planned GPU provider. No GPU request or charge is made by this page. The skeleton is an analysis preview, not a generated avatar video.

Body motion requires a separate compatible engine. These controls are not yet mapped to a running GPU model. Exported plans must be validated by an engine adapter.

Completed output

Already rendered elsewhere? Attach that MP4 here, preview it, then download it. This does not render or modify the video.

No completed render attached.

No completed video attached.

Generation readiness

Loading local inputs…

3. Quality review

Attach your completed video in step 2 · Render & download, then review it here.

Compare all previous renders →

4. Save & delivery

A result is finished only after an actual rendered video is attached and its QA decision is Pass. Saving inputs or running mapping does not produce a new video.

  1. In Render & download, attach the completed MP4. Then in QA choose “Save result to dashboard QA”.
  2. Run comparison, save observations, then record Pass / Rework / Reject in the QA register.
  3. For a passed result, open Dashboard → Delivery and provide its hosted HTTPS video URL.
Open QA decisions →

Open website delivery →

Public hosting and automatic version promotion are not connected. Local files cannot be embedded on a client website.

Each new sample has a separate ID. Save updates the currently selected sample; New sample preserves it and starts another. Uploaded files are stored locally with it; large files may exceed browser storage limits. Only the Local Render button starts CPU generation. Mapping and saving do not render video.