Hugging Face × YazSes: multimodal HCI lab¶
Proposal dated 2026-10-27. Research roadmap, not shipped product functionality. Epic #692.
YazSes is already a multimodal system: local speech recognition, gaze-routing, facial gestures, shared camera perception and EMG activation are documented and partly implemented. Hugging Face can make its model artifacts, evaluation methods, documentation and demos reproducible. It must not become a dependency of core offline dictation or an excuse to add unsupported claims about brain control.
Existing product prioritization remains binding
ADR-030 pauses new capability waves pending reliability and external-user evidence. This page describes a research and documentation track, not a commitment to ship new sensors or cloud inference. No automatic model downloads on hot paths; no new daemon integration without a separately reviewed decision.
Work items¶
The programme is tracked under epic #692. Existing tasks cover static synthetic Space #693, model provenance #694, camera evaluation #695 and EEG/EOG feasibility #696. Additional bounded tasks handle publishing governance #698, synthetic fixtures #699, safe multimodal fusion replay #700 and independent HF privacy preflight #701.
See the phased engineering roadmap for dependencies, milestones and acceptance criteria. Prototypes, published HF accounts/Spaces and validated biosignal capabilities remain proposed, not delivered.
Five practical HF roles¶
| HF service | YazSes use | Boundary |
|---|---|---|
| Model Hub | Versioned upstream model cards, license checks, exact commit hashes, hashes, quantization, CPU footprint and reproducible offline installation | Download/import only with explicit user action; infer locally |
| Datasets | Publish synthetic gaze/switch/audio-event traces and test schemas; compare WER, latency and false triggers | No real speech, camera frames, face templates, private corpus or participant EEG |
| Static Spaces | A browser-based synthetic multimodal interaction explainer; offline-compatible JS artifacts | Never require a hosted live webcam/mic backend |
| Gradio | Local-only researcher UI for replay of fixtures, metrics, model selection and annotation | A hosted Gradio webcam UI may send frames to its server; do not call it private/on-device |
| Hub client | hf_hub_download/snapshot_download, revision, checksums, cache inventory, license/provenance registry | Not embedded in the daemon's continuous loop; respect HF cache-first / offline semantics |
Hardware pricing/eligibility changes. Start from free static HTML/JS Space rather than assuming free hosted Python inference or GPU. Run any expensive analysis locally in a separate, opt-in researcher process. HF is a model registry and distribution surface, not a mandatory cloud inference provider.
Existing internal seams to reuse¶
src/yazses/stt/includes the pluggable STT engine andfaster_whisper.pycache-first model loading. Android has a separate checksum/pinned-revision issue #683.src/yazses/perception/definesSharedPerceptionSource,PerceptionSampleand derived gaze/head/face signals (ADR-v2-145 and eye programme). Never open a second webcam or expose raw frames to general feature consumers.src/yazses/gaze/already supports MediaPipe FaceLandmarker; improve calibration and test real hardware rather than claiming pixel-accurate eye typing.src/yazses/platform/emg/includes YESP and BrainFlow activation sources and graded squeeze logic; the hardware breadth proposal #103 is closed.design/emg-protocol.md, intent-source issue #137, external activation contract #139 and research review define the right boundary for biosignal experiments.- Interaction Kernel and grounded targets supply explicit uncertainty, authority, abstention, confirmation and outcome verification.
Camera and gaze: evidence before model churn¶
Baseline: existing OpenCV + MediaPipe FaceLandmarker, one camera owner. Candidates for a separately evaluated offline backend include ONNX Runtime for a properly licensed gaze/head-pose model; PyTorch only as an optional research dependency, not the default runtime. A Hugging Face model's presence is not evidence of accuracy or license suitability.
Use a calibration dataset with device, resolution, lighting, screen geometry, distance, glasses, head pose, participant-specific baseline, latency and dropped-frame rate. Metrics: median and 95th-percentile angular error; window-selection correctness; target abstention rate; false activations/hour; end-to-end action latency; CPU/RAM; camera power; accessibility recovery. Split by participant and device, never by adjacent frames (which leak identities and conditions across train/test). Measure X11/Wayland/macOS/Windows permissions separately; do not claim identical behavior.
Prioritize coarse gaze routing + voice deixis ('this window', 'that field') over character-level gaze typing. Camera frames are processed only in volatile RAM; derived numeric signals are not identity, emotion, fatigue or attention diagnoses. Include clear capture-on indicator, an immediate off control, and fallback to hotkey/voice when tracking fails. Existing validation #419 owns co-design.
EMG, EEG and EOG: honest roles¶
| Source | Appropriate first experiment | What cannot be claimed |
|---|---|---|
| sEMG/YESP/BrainFlow | On/off or graded squeeze to start/end a speech turn | General silent-speech transcription from one inexpensive sensor |
| EOG/eye artifacts | Deliberate blink switch with refractory period and abstention | Continuous reliable semantic eye intent without calibration |
| Scalp EEG | Bounded P300/SSVEP/motor-imagery laboratory comparisons with controls and safe visual-stimulation protocol | Consumer-grade mind reading, unconstrained word decoding or medical efficacy |
| Intracortical BCI | Literature review or externally approved research partnership | A commodity-hardware feature |
Software candidates: BrainFlow for supported device streams and synthetic boards; MNE-Python for offline EEG filtering, epochs and artifacts; Lab Streaming Layer / pylsl for local timestamped acquisition; MOABB for standardized offline benchmark datasets; scikit-learn for interpretable classifiers; LibEMG for muscle pipelines. Evaluate licenses and board capabilities individually. Keep EEG as an optional research source of high-confidence activation events, not direct actions. Never infer diagnosis, mental state, identity or consent from a biometric stream.
Interaction contract¶
flowchart LR
A["Voice / gaze / face / EMG / experimental EEG"] --> B["Local acquisition adapter"]
B --> C["Timestamped derived observation + quality"]
C --> D{"Confidence and freshness gate"}
D -->|"insufficient"| X["Abstain + visible feedback"]
D -->|"sufficient"| E["Intent/target resolver"]
E --> F{"Authority and action risk"}
F -->|"confirmation required"| G["Explicit user confirmation"]
F -->|"safe"| H["Local OS action / dictation"]
G --> H
H --> I["Verify outcome + recover"] A minimal research-only fixture schema is {schema_version, time_ms, modality, sample_type, quality, confidence, intent_candidate, target_id, decision, outcome}. No raw sensor payload, biometric identity, transcript or screen content. Timestamps are relative; file IDs synthetic. Separate observation, hypothesis, proposed action, confirmed action, and verified outcome; never let a model emit an unreviewed OS command.
First reproducible prototype: static Hugging Face Space¶
- Use an HF account/organization only if the owner chooses. Create a Static HTML Space named, for example,
yazses-multimodal-hci-lab. Placeindex.html,style.css,app.jsand syntheticfixtures.jsonin its Space repository. No backend, token or secrets are needed for synthetic public display. - Show a fake desktop with three target windows, a simulated gaze point (slider), a voice-intent dropdown, a squeeze/blink toggle, confidence and freshness, and an action-preview pane. All interactions are local Javascript and never actually inject an OS event.
- Simulate uncertain gaze, mismatched voice command, stale camera frame, and accidental double blink. Require explicit confirmation for risky action; always expose reset/stop.
- Show an evaluation table that computes accuracy, abstention, errors/hour and replay latency from documented synthetic traces. Label all numbers 'illustrative; not device benchmarks'.
- Add README/model and dataset cards with license, provenance, supported hardware, intended use, limitations, prohibited uses, test splits and versioned artifacts. Provide local launch instructions from the YazSes main repo. A GitHub→Space sync, if later added, must use reviewed least-privilege credentials, never user sensor data.
- Optionally run a local Gradio comparison dashboard on the researcher's machine. Real camera processing stays inside the local YazSes process; a hosted Space cannot be advertised as local merely because it uses Gradio.
A first local Python model catalog experiment (independent of the daemon):
from huggingface_hub import hf_hub_download
# Explicitly replace with an audited repo, exact commit and expected file.
path = hf_hub_download(
repo_id="AUDITED_ORG/AUDITED_MODEL",
filename="AUDITED_FILE",
revision="FULL_VERIFIED_COMMIT_SHA",
local_files_only=True, # never makes a network request
)
print(path)
First review actual license, model-format compatibility, hash and source. For an explicit online installation step, a separate installer can use snapshot_download(..., revision=<full commit>) after consent and verification. Do not train or share real human biosignal datasets by default.
Evidence gates and measurements¶
| Gate | Required evidence | Release consequence |
|---|---|---|
| Documentation and synthetic demo | Public fixture schema, reproducible build, clearly labeled simulations | May publish as research now |
| Model survey | License/provenance, exact revision, local inference proof, CPU budget, negative examples | Remains research |
| Live webcam/EMG pilot | Camera isolation, permission, battery/latency, per-device reliability, physical stop | Experiment only, off by default |
| EEG/EOG feasibility | Hardware protocol, ethics/consent, held-out sessions, artifacts vs neurological signal, unintended activations/hour | No product claims until validated |
| Product promotion | External daily-user request, maintainer, OS matrix, privacy threat model, accessibility co-design, reliability tests, ADR-030 re-review | Separate product decision |