--- 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) |