Non-contact optical & acoustic polygraph

Six physiological waveforms.
One webcam. No black box.

VitalsGraph is an autonomic-arousal and cognitive-load oscilloscope. Remote photoplethysmography, optical-flow respiration, ocular dynamics, FACS kinematics and vocal micro-tremor are written to a synchronized strip chart — and every deviation is measured in σ from the subject’s own baseline.

Open the workstationRead the methodsRuns entirely in your browser · nothing leaves the device unless you sync it

The poly-streams

Continuous waveforms, not scalar verdicts

All channels share a 30 Hz master clock with a fixed 1 s pen delay, so micro-events across vision and audio align sample-for-sample.

CH1

Cardiovascular

RGB forehead & cheek ROIs

POS chrominance projection · 0.75–3.0 Hz Butterworth · Welch PSD · IBI

Watch for: Pulse-amplitude constriction, shortened inter-beat intervals, RMSSD suppression.

CH2

Thoracic respiration

Shoulder / clavicle optical flow

Pyramidal Lucas–Kanade vertical displacement · 0.15–0.5 Hz band-pass

Watch for: Flat-lining before speech (breath-hold) then shallow, fast recovery breaths.

CH3

Ocular & cognitive load

Iris & eyelid landmarks

Eye aspect ratio · blink state machine · iris angular velocity

Watch for: Blink suppression plateau followed by a dense flurry of blinks.

CH4

Upper-face affect leakage

FACS AU1 · AU2 · AU4 · AU6

2–10 Hz band-passed derivative envelope · residual optical strain

Watch for: Transient brow raise / furrow micro-spikes right after a keyword.

CH5

Lower-face squelch & asymmetry

FACS AU12 · AU14 · AU17 · AU23/24

Bilateral L/R differential · lip-press tension envelope (VAD-gated)

Watch for: Post-answer lip clamping or unilateral mouth-corner tightening.

CH6

Vocal micro-tremor & pitch

Microphone PCM

YIN F0 · pitch-synchronous jitter / shimmer · 8–12 Hz contour modulation

Watch for: Upward F0 drift and loss of the 8–12 Hz physiological micro-tremor.

Session workflow

Built around CQT and CIT protocols

  1. 01

    Hardware lock & pre-flight

    Freezes exposure, gain and white balance where the camera allows it, then checks forehead lighting, background flicker, face-mesh stability, shoulder tracking and the microphone noise floor.

  2. 02

    Baseline calibration · 60 s

    The subject rests and answers neutral questions. A personal mean vector and shrinkage-regularised covariance are fitted; traces turn from amber to phosphor green when the baseline locks.

  3. 03

    Interrogation & stimulus tagging

    Q-START/Q-END markers from the operator, A-START/A-END from voice activity. Each 0–8 s response window is scored against the baseline while VAD gates speech-contaminated channels.

  4. 04

    Synchronized replay

    Video, six telemetry channels and markers stay locked together. Click any spike to scrub the video to that frame with the optical-strain heatmap and FACS bars overlaid.

Relative, not absolute

Human baselines vary wildly. Every score is a deviation from this subject’s calibrated distribution — per-channel z and a composite Mahalanobis distance on the currently admissible features.

Context-aware gating

Speaking moves the lower face and the thorax. Voice-activity detection mutes those channels while the subject talks and activates vocal analysis — the gate is drawn on the chart so you always see what was scored.

Engineered for the browser

A C++23 DSP core compiled to WebAssembly with Clang/LLVM runs beside MediaPipe in a worker; a WebGL strip chart renders at display rate; sessions are stored locally in IndexedDB, with optional private Supabase sync.

This is not a lie detector. Physiological arousal has many causes, and no physiological measure — contact or remote — reliably identifies deception. Use VitalsGraph for research, education and interview training, with informed consent, and never as the basis for decisions about people. Limitations →