The problem
Overwhelmed 911 systems during large emergencies can leave calls unanswered, delaying life-saving responses. The goal was to rank incoming calls by urgency, so the most critical ones are answered first.
Key decisions
- Two signals, scored separately
- What the caller says and how they sound are analyzed in separate pipelines. Whisper transcribes the speech, and sentence-transformer embeddings of the transcript feed a PyTorch classifier. In parallel, openSMILE extracts acoustic features for a random forest that picks up vocal stress.
- Built to avoid missed emergencies
- The PyTorch model is trained with a weighted loss that penalizes ranking an urgent call too low, and a logistic-regression meta-classifier fuses both predictions. Missing an emergency is far worse than a false alarm.
- A dataset built for the problem
- Real 911 audio is scarce, so the 1,351 labeled calls combine public datasets, simulated calls, and data augmentation. Speech diarization with LLM-based speaker identification isolates the caller's audio.
- Live, not batch
- Audio streams from the browser to a FastAPI backend over WebSockets, so calls are classified while they happen. The services run in Docker containers on dedicated AI hardware.
Results
- 94% classification accuracy
- 1.5% false-negative rate
Built with
Python, PyTorch, scikit-learn, Whisper, Sentence Transformers, openSMILE, FastAPI, Next.js, Docker