Voice-driven respiratory triage assistant for code-switched Nigerian speech (English, Pidgin, Yoruba, Igbo, Hausa). Benchmarks Sahara, Whisper & Azure STT, then uses Gemini + a rule-based engine to route symptoms to a CHW referral action. Built for the MLC x Intron Voice AI Challenge.
\# 🫁 Emi — Voice-Driven Respiratory Triage Assistant
Built for the MLC (Africa) × Intron Agentic Voice AI Challenge, Deep Learning Indaba 2026.
Emi listens to how people in Nigeria actually speak — mixing English, Pidgin, Yoruba, Igbo, and Hausa in the same breath — and turns a spoken symptom description into a concrete triage decision and referral action, not just a transcript.
\## The problem
Nigeria records an estimated 510,000 new TB cases annually, with roughly 63,000 going undetected each year. Voice AI systems built and tested on clean, monolingual speech tend to break down exactly where they're needed most: in real, messy, multilingual conversations. Emi is a small step toward closing that gap — a voice-driven respiratory symptom screener that works with how patients actually talk, not how a system wishes they'd talk.
\## How it works
1\. A patient describes their symptoms out loud, in any mix of English, Pidgin, Yoruba, Igbo, or Hausa
2\. Speech is transcribed (benchmarked across three models — see `BENCHMARK\_REPORT.md`)
3\. Gemini extracts structured symptom data from the transcript, specifically prompted for code-switched Nigerian speech
4\. A rule-based triage engine, grounded in WHO's TB symptom-screening criteria, classifies the case: Urgent / Follow-up / Routine
5\. A referral packet is generated — formatted like an SMS dispatch a community health worker could act on directly
Emi is a triage and routing tool, not a diagnostic one. Every tier results in a recommendation to a human, never an autonomous clinical action. See `ETHICS\_NOTE.md` for more.
\## Running it locally
```bash
git clone
github.com
cd emi-voice-triage
python -m venv venv
venv\\Scripts\\activate # Windows
pip install -r requirements.txt
```
Create a `.env` file with:
GEMINI\_API\_KEY=my\_key
INTRON\_API\_KEY=my\_key
AZURE\_SPEECH\_KEY=my\_key
AZURE\_SPEECH\_REGION=my\_region
Run the app:
```bas …