File size: 2,385 Bytes
b05542b 670e9a7 b05542b 8d525d1 b05542b f234692 c3a0314 3ab287a b05542b 3ab287a 01601b9 b05542b 670e9a7 b05542b 7825141 b05542b 7825141 b05542b 7825141 b05542b 7825141 b05542b 9c8200e f234692 9c8200e b05542b 3ab287a 8d525d1 b05542b 8d525d1 b05542b f234692 b05542b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | ---
title: Patient Virtuel · Français en médecine dentaire
emoji: 🦷
colorFrom: yellow
colorTo: gray
sdk: gradio
sdk_version: 6.16.0
python_version: "3.12"
app_file: src/server_app.py
pinned: false
license: apache-2.0
tags:
- hackathon
- build-small-hackathon
- backyard-ai
- voice-ai
- french-learning
- dental
- gradio
- modal
- llama-cpp
- gemma
- track:backyard
- sponsor:modal
- achievement:offgrid
- achievement:offbrand
- achievement:llama
- achievement:sharing
- achievement:fieldnotes
---
# Patient Virtuel · Français en médecine dentaire
A voice-based French practice tool for dental hygienists. Roleplay a 60-minute hygiene session with a virtual patient, then receive structured grammar and vocabulary feedback.
**Backyard AI** — built for a real learner training to improve professional French.
## How it works
1. Press the mic button and speak in French to the patient
2. The patient responds naturally, using French regionalisms
3. When you say "Fin de la séance", the app switches to tutor mode
4. Receive a structured recap with corrections and explanations
## Custom UI
This app uses `gradio.Server` with a fully custom HTML/CSS/JS frontend instead of the default Gradio component UI. The backend provides Gradio API endpoints while the frontend is a standalone vanilla HTML page using the `@gradio/client` JavaScript library.
## Model credits
- **LLM**: [Gemma 4 26B-A4B](https://huggingface.co/google/gemma-4-26B-A4B) via Modal (L4 GPU) — Apache 2.0
- **TTS**: [piper-tts](https://github.com/OHF-Voice/piper1-gpl) (local, `fr_FR-siwis-medium` voice)
- **STT**: [faster-whisper-large-v3-turbo](https://github.com/SYSTRAN/faster-whisper) via Modal (T4 GPU) — MIT
## Modal
Both GPU workloads (LLM + STT) run on Modal serverless containers. See `modal_app.py` for the full deployment config.
## Social
[Demo video](https://youtu.be/oP3KrlZFUPk) · [LinkedIn post](https://www.linkedin.com/posts/carlosduplar_my-wife-is-a-dentist-re-entering-the-workforce-activity-7471897489332289536-p5Ne)
## License
All components are Apache 2.0 or MIT licensed.
## Environment variables
| Variable | Purpose |
|---|---|
| `MODAL_ENDPOINT_LLM` | Modal endpoint for Gemma 4 LLM |
| `MODAL_ENDPOINT_WHISPER` | Modal endpoint for Whisper STT |
| `MODAL_AUTH_TOKEN` | Shared auth token (matching Modal's EXPECTED_TOKEN) |
|