</speechmax>
Browser-based AI speech coach. 5th of 183 at UNIHACK 2026.
5th / 183
UNIHACK 2026
48 hrs
build time
30+ FPS
client-side ML inference
SPECIFICATIONS
| ROLE | TEAM PROJECT |
|---|---|
| YEAR | 2026 |
| TYPE | WEB APP |
| STATUS | 5TH / 183 · UNIHACK 2026 |
| STACK | react · typescript · mediapipe · web-speech-api · web-audio-api · gemini-2.5-flash · supabase · framer-motion +2 more |
| LINKS | [github ↗] |
| COURSE / TEAM | Team project at UNIHACK 2026 (800 participants). I owned the real-time analysis pipeline and game UX alongside a small team, shipping in 48 hours. |
“Speech therapy is boring and people drop off.”
5th place at UNIHACK 2026 (183 projects, 800 participants).A real-time AI speech coach that runs entirely in the browser.Uses MediaPipe for eye contact and posture tracking, Web Speech API for transcription, and Web Audio API for pitch analysis.Five gamified training modes target your weakest areas.
== WHAT IS THIS ==
5th place at UNIHACK 2026 (183 projects, 800 participants). A real-time AI speech coach that runs entirely in the browser. Uses MediaPipe for eye contact and posture tracking, Web Speech API for transcription, and Web Audio API for pitch analysis. Five gamified training modes target your weakest areas. All processing happens client-side for complete privacy.
== </the problem> ==
Speech therapy is boring and people drop off. 77% of people have public speaking anxiety but professional coaching costs $200/hour. Only 8% ever seek help. Existing tools are clinical and feel like homework, not something people stick with.
role & context
Team project at UNIHACK 2026 (800 participants). I owned the real-time analysis pipeline and game UX alongside a small team, shipping in 48 hours.
== </my approach> ==
Built a Duolingo-style progression system with real clinical speech therapy methods. Real-time webcam analysis using MediaPipe for eye contact and posture, Web Speech API for transcription, and Web Audio API for pitch detection. All processing runs client-side for privacy. Designed five targeted mini-games that each isolate a specific weakness.
== </the story> ==
SpeechMAX was built in 48 hours at UNIHACK 2026, a national university hackathon (183 projects, 800 participants). We placed 5th overall. The premise: 77% of people have public speaking anxiety, professional coaching costs $200/hour, and only 8% ever seek help. We built the speech coach that everyone can access for free.
The app runs entirely in the browser. Open it, grant camera and mic access, and start talking. Within seconds you get real-time feedback across five dimensions: voice clarity (filler words, WPM, pitch variation), eye contact quality (468 facial landmarks + iris tracking via MediaPipe), and body language (posture alignment, fidget detection via 33 body keypoints).
After a 30-second radar scan that scores you across all five axes, SpeechMAX recommends targeted mini-games to train your weakest areas. Filler Ninja catches your "ums" and "likes". Eye Lock trains sustained camera eye contact. Pace Racer keeps your WPM in the target zone. Pitch Surfer rewards vocal variety. Stage Presence coaches open body language and power zone gestures.
Mike, the AI speech coach powered by Gemini 2.5 Flash, sees your scores, game history, and progress and gives short, actionable coaching advice. All data syncs to Supabase with Google OAuth or anonymous guest mode.
== </architecture> ==
Frontend is React 18 with TypeScript (strict mode), Vite, and Tailwind CSS 4. State management uses Zustand 5 with localStorage persistence and Supabase sync. Framer Motion handles all animations.
The analysis pipeline is entirely client-side. MediaPipe FaceLandmarker (WASM, GPU-accelerated) tracks 468 facial landmarks for eye contact quality using a 3-signal fusion approach: iris position, head pose estimation, and gaze direction. MediaPipe PoseLandmarker tracks 33 body keypoints for posture alignment and fidget detection.
Audio processing runs through Web Speech API for real-time transcription with noise suppression, through a DynamicsCompressorNode (threshold -40dB, 4:1 ratio), into an AnalyserNode for FFT pitch detection via autocorrelation. Filler word detection uses count-based pattern matching against a configurable dictionary.
Backend is Supabase: anonymous + Google OAuth authentication, PostgreSQL with RLS for profiles/scan_results/game_results tables, and a gemini-proxy Edge Function that routes Gemini API calls through the server so the API key never touches the client.
== </key features> ==
Real-time webcam analysis
468 facial landmarks for eye contact tracking, 33 body keypoints for posture and fidget detection, all running at 30+ FPS client-side.
Five gamified training modes
Filler Ninja, Eye Lock, Pace Racer, Pitch Surfer, and Stage Presence. Each targets a specific weakness with progressive difficulty.
AI coaching with Mike
Gemini 2.5 Flash powered coach that sees your scores and game history, giving short actionable advice.
Radar scan scoring
30-second assessment across five axes calibrated against Toastmasters evaluation criteria.
== </key decisions> ==
DECISION 01
The most critical decision was running ALL ML inference client-side. MediaPipe's WASM builds load ~4MB of models but process at 30+ FPS on modern hardware. This means zero server costs for the compute-heavy parts, zero privacy concerns (no video leaves the browser), and zero latency on the feedback loop. The tradeoff is browser compatibility: Chrome 90+ required for the full experience.
DECISION 02
The gamification system was designed around deliberate practice research (Ericsson, 2008). Each mini-game isolates a specific weakness and drills it with immediate feedback and progressive difficulty. This is the exact methodology speech therapists use, digitized into a game format.
DECISION 03
Supabase over a custom backend was a speed decision for a 48-hour hackathon. Auth, database, and edge functions in one platform meant we could focus entirely on the analysis pipeline and game UX. The gemini-proxy pattern keeps the Gemini API key server-side while still allowing anonymous users to access the AI coach.
DECISION 04
The radar chart scoring system uses weighted composites calibrated against Toastmasters evaluation criteria. Each axis maps to a measurable metric: clarity = filler count + WPM consistency, confidence = eye contact %, expression = pitch standard deviation, pacing = WPM target adherence, composure = posture + fidget scores.
== </what i learned> ==
Balancing fun game feel with genuine therapeutic value requires grounding gamification in real clinical research (deliberate practice, Ericsson 2008).
Building under 48-hour pressure forces ruthless prioritization. We cut features that felt important but weren't essential to the core loop.
Client-side ML inference eliminates privacy concerns entirely, which matters deeply for something as personal as speech coaching.
react · typescript · mediapipe · web-speech-api · web-audio-api · gemini-2.5-flash · supabase · framer-motion · zustand · tailwind
5TH / 183 · UNIHACK 2026