Bicara atau ketik ke Bu Mien (77 th, sesak napas). Nyalakan kamera di panel kiri — ekspresi wajah, kontak mata, dan postur Anda dibaca sungguhan di browser, lalu ikut memengaruhi balasan pasien, termasuk kapan ia balik bertanya kalau raut/nada Anda yang sama muncul berulang.
Berjalan langsung di browser Anda (MediaPipe) — video & audio tidak pernah dikirim ke mana pun.
Di aplikasi lengkap, semua ini masuk ke prompt pasien AI per giliran secara real-time (lihat
_nonverbal_block di prompt_builder.py), dan jadi bukti untuk penilaian 8 dimensi
komunikasi di akhir sesi.
MediaPipe Face Landmarker membaca blendshape wajah lalu mengklasifikasikannya jadi senang, marah, sedih, takut, terkejut, jijik, atau netral — langsung dari kamera, di browser.
Nyata di demo iniArah hadap kepala dari transformation matrix wajah: apakah Anda menatap kamera atau sering menoleh.
Nyata di demo iniMediaPipe Pose Landmarker mendeteksi lipat tangan, condong depan/belakang, dan gerakan tangan gelisah.
Nyata di demo iniEnergi & variasi pitch (autokorelasi) dihitung dari mikrofon Anda — port langsung dari heuristik backend, dijalankan di browser.
Nyata di demo iniSinyal non-verbal giliran itu ikut membentuk balasan pasien — bukan cuma dicatat untuk nilai akhir.
Ditiru di demo iniDi aplikasi asli, LLM yang memutuskan kapan menyinggungnya. Demo ini memakai aturan sederhana: sinyal negatif yang sama 2 giliran berturut-turut → pasien menyinggungnya.
Diadaptasi di demo iniBalasan pasien memicu gestur tubuh nyata pada avatar 3D — anggukan, menghela napas, meringis, tangan di dada — dari tabel animasi yang sama persis dengan components/gestures.ts aplikasi utama.
8 dimensi kompetensi komunikasi dinilai otomatis oleh LLM, hasilnya baru terbuka setelah divalidasi Edukator.
Tidak ada di demoDemo ini statis (Vercel tidak menjalankan backend Python), jadi sebagian komponen diganti tiruan browser-native. Berikut peta jujurnya.
| Bagian | Status di demo ini |
|---|---|
| Nama & identitas pasien | Nyata — Bu Mien, 77 tahun, kasus sesak napas, persis sama dengan skenario aplikasi utama |
| Avatar 3D | Nyata — model asli ibu-senang.glb/ibu-sedih.glb, dirender three.js, kepala & rahang bereaksi live |
| Gestur/bahasa tubuh pasien | Nyata — tabel animasi (17 gestur) & distribusi ke tulang Head/Neck/Chest/Hips di-porting langsung dari components/gestures.ts & Avatar3DScene.tsx |
| Ekspresi wajah (senang/marah/sedih/takut/terkejut/jijik/netral), kontak mata & postur | Nyata — MediaPipe Face + Pose Landmarker, heuristik classifyExpression yang sama dengan lib/useNonverbalSignal.ts (bukan model emosi terlatih — lihat komentar di kode) |
| Nada suara (energi & pitch) | Nyata — RMS energi + pitch autokorelasi dihitung dari mikrofon, port dari backend/app/services/voice_signal/analyzer.py |
| Pola non-verbal berulang → pasien bertanya | Diadaptasi — aplikasi asli membiarkan LLM memutuskan kapan menyinggung (prompt_builder.py); demo statis ini memakai aturan "pola sama 2 giliran berturut-turut" karena tidak ada LLM sungguhan di sini |
| Ucapan → teks & teks → ucapan | Disederhanakan — Web Speech API bawaan browser, bukan faster-whisper + Piper self-hosted |
| Balasan pasien | Disederhanakan — skrip aturan kata kunci di browser, bukan Gemini + guardrail + prompt builder |
| Skoring 8 dimensi & validasi Edukator | Tidak ada — butuh backend + database, di luar cakupan demo statis |
Baris di bawah menggambarkan aplikasi penuh (apps/virtual-patient-lansia + backend) — bukan demo statis ini.