Demo interaktif — chat & suara memakai mesin bicara bawaan browser (bukan Whisper/Piper self-hosted seperti aplikasi asli), tapi analisis ekspresi wajah, kontak mata, postur, gestur tangan, dan suara SUNGGUHAN berjalan — dan di akhir sesi Anda mendapat AI Evidence Panel yang dihitung dengan rumus yang sama persis dengan aplikasi lengkap.
THERA-COMM AISimulasi Komunikasi Keperawatan
Platform AIGC — Virtual Patient

Ngobrol langsung dengan pasien virtual yang membaca bahasa tubuh Anda — dinilai, bukan ditebak.

Bicara atau ketik ke Bapak Wahyu (68 th, sesak napas). Nyalakan kamera di panel kanan — ekspresi wajah, kontak mata, postur, dan gestur tangan Anda dibaca sungguhan di browser dan ikut memengaruhi balasan pasien. Tekan Akhiri & lihat bukti untuk melihat 12 parameter non-verbal sesi Anda terhadap rujukan ilmiahnya.

🙂 Ekspresi 7 kelas + campuran — nyata 👁️ Kontak mata — nyata 🧍 Postur & gestur tangan — nyata 🎙️ Suara — Web Speech API 💬 Balasan — Gemini (bawaan proyek) 📊 AI Evidence Panel — nyata
Ruang Simulasi
Menunggu
00:00
Bapak Wahyu Santoso
Pasien lansia, 68 tahun · Sesak napas

Tahap komunikasi

    Mesin balasan pasien

    Default: key Gemini milik proyek lewat fungsi server (/api/chat) — tidak pernah dikirim ke browser. Tanpa GEMINI_API_KEY di Vercel, mode ini jatuh ke skrip aturan.

    Percakapan

    0 giliran

    Kamera Anda

    di perangkat, tidak dikirim
    Untuk membaca ekspresi, kontak mata, postur & gestur tangan — langsung di browser.

    Terbaca dari kamera

    Aktifkan kamera untuk melihat pembacaan Anda di sini.

    Bacaan bersifat perkiraan dan dihitung di perangkat Anda sendiri — video tidak pernah dikirim. Deskriptif, bukan instruksi: sistem tidak menyuruh Anda "lihat kamera".

    Terukur dari suara

    saat mic aktif
    Volume—
    Variasi intonasi—
    Kecepatan bicara—
    Latensi respons—
    Kalibrasi mikrofon (opsional)Belum dikalibrasi — volume dilaporkan relatif (dBFS), bukan dB SPL.

    Standar ISO 9921 / ASHA (60–70 dB) memakai dB SPL; browser hanya bisa mengukur level relatif. Selisihnya bergantung mikrofon & jarak — tidak bisa dihitung, hanya bisa diukur. Cukup sekali per perangkat.

    1. Siapkan SPL meter (aplikasi HP memadai) di samping mulut Anda.
    2. Tekan rekam, bicara wajar 6 detik.
    3. Masukkan angka dB yang terbaca.

    AI Evidence Panel

    Dasar objektif penilaian non-verbal (#9 & #10), lengkap dengan rujukan ilmiahnya.

    Batas pengukuran: kontak mata, orientasi kepala, dan fokus perhatian berasal dari satu sinyal arah kepala yang sama (tidak ada eye tracker), sehingga ketiganya bukan bukti yang saling independen. Ekspresi wajah adalah klasifikasi 7 kelas, bukan pengkodean FACS. Volume dilaporkan relatif (dBFS) dan bukan dB SPL, kecuali Anda mengkalibrasi mikrofon di panel kanan. Di aplikasi lengkap, angka-angka inilah yang diserahkan ke model penilai untuk aspek #2 dan #9 — bila berstatus belum terekam, aspek itu diberi skor null, bukan skor rendah.
    Yang dipahami sistem

    Lima kanal non-verbal, satu reaksi yang terasa manusiawi, satu panel bukti

    Di aplikasi lengkap, semua ini masuk ke prompt pasien AI per giliran secara real-time, direkap menjadi 12 parameter terukur (AI Evidence Panel), dan menjadi bukti penilaian 8 dimensi / 32 aspek di akhir sesi.

    🙂

    Ekspresi wajah — 7 kelas + campuran

    face-api.js membaca seluruh distribusi (netral, senang, sedih, marah, takut, jijik, terkejut) dengan intensitas tipis/jelas/kuat. Dua kelas yang berdekatan dilaporkan sebagai campuran bernama — mis. sedih+takut → "cemas/khawatir".

    Nyata di demo ini
    👁️

    Kontak mata

    Proksi arah-hadap kepala dari landmark wajah: apakah Anda menatap atau sering mengalihkan pandangan. Panel bukti menyatakan terus terang: ini head-yaw, bukan eye tracker.

    Nyata di demo ini
    🧍

    Postur & gestur tangan

    MoveNet mendeteksi condong depan/belakang, tangan menyilang, bahu menegang — plus indeks gerak pergelangan tangan ternormalisasi lebar bahu (acuan 0,15–0,60).

    Nyata di demo ini
    🎚️

    Suara: volume, intonasi, laju, jeda, latensi

    Dari mikrofon saat Anda bicara: dBFS (atau dB SPL setelah kalibrasi), simpangan F0 dalam semitone via autokorelasi, kata/menit, jeda ≥300 ms, dan berapa lama Anda menunggu setelah pasien selesai bicara.

    Nyata di demo ini
    📟

    Keterangan langsung di layar

    Apa yang sedang dibaca kamera ditampilkan saat itu juga — deskriptif ("kontak mata terjaga"), bukan instruksi ("lihat kamera"), supaya Anda tidak berlatih untuk sensor.

    Nyata di demo ini
    📊

    AI Evidence Panel

    12 parameter (6 visual untuk indikator #9, 6 vokal untuk #10), tiap baris: angka terukur, rentang rujukan, sitasi, vonis sesuai / perlu perhatian / belum terekam. Rumus & ambang identik dengan evidence.py.

    Nyata di demo ini
    🪞

    Avatar mencerminkan ekspresi Anda

    Begitu ekspresi Anda terbaca stabil (2+ bacaan), avatar bereaksi — Anda terlihat marah → pasien tegang/menghindar, bukan ikut marah. Berkedip dengan fase kelopak tertutup, mulut membentuk viseme saat bicara.

    Nyata di demo ini
    🔁

    Pola berulang → ditanya

    Bacaan sesaat cuma mewarnai nada balasan. Kalau sinyal negatif yang sama berulang 2+ giliran, pasien wajib menyinggungnya.

    Nyata di demo ini
    🧭

    Fase komunikasi terapeutik

    Pra-interaksi → orientasi → kerja → terminasi sebagai jalur vertikal di bawah pasien, dilacak dari tag [FASE:x]. Melompat tahapan direspons dengan bingung, bukan dijawab seolah akrab.

    Nyata di demo ini
    🎭

    Bahasa tubuh pasien

    Balasan memicu gestur tubuh nyata pada avatar 3D — anggukan, menghela napas, meringis, tangan di dada — dari tabel animasi yang sama dengan gestures.ts.

    Nyata di demo ini
    📋

    Skoring 32/32 aspek & audit Edukator

    Seluruh 32 aspek instrumen (8 dimensi) dinilai AI; #2 dan #9 disandarkan pada angka Evidence Panel. Hasil langsung tampil ke mahasiswa; Edukator mengaudit setelahnya, bukan menahan.

    Butuh backend — tidak ada di demo
    📄

    Laporan ganda (.docx)

    Laporan per sesi (skor, umpan balik, 32 aspek, Evidence Panel, transkrip) dan Laporan Akhir Program 9 sesi: radar 8 dimensi, tren, progres 32 indikator awal vs akhir.

    Butuh backend — tidak ada di demo
    Transparansi

    Apa yang sungguhan berjalan vs yang disederhanakan

    Demo ini statis (Vercel tidak menjalankan backend Python), jadi sebagian komponen diganti tiruan browser-native. Berikut peta jujurnya.

    BagianStatus di demo ini
    Tata letak ruang simulasiNyata — pasien kiri, percakapan tengah, kamera & bacaan diri di kanan; di HP kamera jadi PiP pojok kanan atas dengan tab Percakapan / Kamera & Bacaan — sama dengan app/sesi/[sessionId]/page.tsx
    Avatar 3DNyata — model asli pak-slamet-riyadi.glb, three.js; kedipan 180 ms dengan fase tertutup dan viseme mulut (VISEME_STRENGTH 0,88) di-porting dari Avatar3DScene.tsx. Urutan viseme-nya disederhanakan: Web Speech API tidak memberi lini masa fonem seperti Piper, jadi bentuk mulut diganti berirama saat bicara
    Gestur/bahasa tubuh pasienNyata — tabel 17 gestur & distribusi ke tulang Head/Neck/Chest/Hips di-porting langsung dari components/gestures.ts & Avatar3DScene.tsx
    Ekspresi wajah (7 kelas, intensitas, campuran) & kontak mataNyata — face-api.js; ambang SECONDARY_MIN/GAP, label campuran, dan GAZE_YAW_THRESHOLD sama dengan lib/facialExpression.ts
    Postur & gestur tanganNyata — MoveNet; heuristik postur dan indeks pergelangan tangan (HAND_ACTIVITY_FULL_SCALE 1,5) sama dengan lib/posture.ts
    Metrik suara (dBFS, F0 semitone, jeda, laju, latensi)Nyata — dihitung dari analyser mikrofon dengan rumus yang sama dengan lib/useVoiceSession.ts; kata/menit memakai transkrip Web Speech, bukan Whisper
    AI Evidence Panel (12 parameter, rujukan, vonis)Nyata — port langsung backend/app/services/evaluation/evidence.py: ambang, sitasi, dan aturan "volume tanpa kalibrasi tidak divonis"
    Kalibrasi mikrofon dBFS → dB SPLNyata — rekam 6 detik + bacaan SPL meter, offset = SPL − dBFS, tersimpan di browser (aplikasi asli menyimpannya di profil pengguna)
    Pola non-verbal berulang → pasien bertanyaNyata — logika escalation yang sama dengan backend/app/api/v1/ws_stream.py
    Fase percakapan & reaksi saat dilompatiNyata — parser [FASE:x] & aturan satu-arahnya di-porting dari phase.py/prompt_builder.py
    Isyarat tubuh dalam kurung → gestur avatarNyata — lexicon & extractor teks yang SAMA PERSIS dengan backend/app/services/avatar/gesture.py
    Avatar mencerminkan ekspresi wajah AndaNyata — EXPRESSION_REACTIONS/nextExpressionReaction dari lib/facialExpression.ts
    Balasan pasienNyata (default) — Gemini gemini-flash-latest (default backend yang sama) lewat fungsi server api/chat.js; bisa dialihkan ke key Anda sendiri, atau ke skrip aturan (disederhanakan)
    Ucapan → teks & teks → ucapanDisederhanakan — Web Speech API, bukan Whisper + Piper dengan prosodi yang dihaluskan (length/noise scale, jeda antar kalimat, warp pitch) seperti aplikasi asli
    Nada suara (emosi vokal)Disederhanakan — didekati dari volume, bukan model speech-emotion self-hosted (yang di aplikasi asli pun opsional)
    Guardrail etik & audit semantikTidak ada — server-side only di aplikasi asli
    Skoring 8 dimensi / 32 aspek, audit Edukator, laporan .docxTidak ada — butuh backend + database; Evidence Panel di atas adalah bagian yang bisa dihitung murni di browser, dan itulah yang ditampilkan
    Di balik layar aplikasi lengkap

    Self-hosted & berorientasi latency rendah

    Baris di bawah menggambarkan aplikasi penuh — bukan demo statis ini.

    Ucapan → Teks
    faster-whisper (self-hosted, CPU)
    Teks → Ucapan
    Piper CLI + prosodi per-karakter (length/noise scale, jeda kalimat, warp pitch yang mempertahankan durasi)
    Otak percakapan
    Gemini streaming + guardrail etik, fallback offline
    Avatar
    3D Three.js, 12 blendshape (viseme + kedip + kening), 17 gestur, dirender di browser mahasiswa
    Non-verbal
    face-api.js + MoveNet + analyser mikrofon di browser; 7 metrik per ucapan dikirim sebagai utterance_meta
    Backend
    FastAPI + PostgreSQL, WebSocket per sesi, metrik non-verbal di JSONB
    Penilaian
    Instrumen Komunikasi Terapeutik 8 dimensi / 32 aspek — seluruhnya dinilai AI, #2 & #9 dari Evidence Panel; dirilis langsung, diaudit Edukator
    Pelaporan
    Laporan sesi .docx + Laporan Akhir Program 9 sesi (radar, tren, progres 32 indikator) — grafik Pillow, tanpa matplotlib
    Target skala
    70 pengguna bersamaan, per-instance sticky WebSocket