The problem
The app screen: a live recording, the top match, and the runners-up with honest confidence numbers.
Bird sound guides assume you already know what you are listening for. I wanted the opposite: point a phone at something making noise and have it tell you what it heard.
What I built
- A training pipeline over field recordings, with augmentation built from the noise I actually recorded near traffic and wind
- A TFLite conversion and quantization pass tuned so the compressed model still matched the original on the samples I cared about
- On-device feature extraction, so the audio is never uploaded anywhere
- A species shortlist with confidence shown honestly instead of a single confident guess
Why it runs on the phone
Everything happens locally. There is no account, no upload, and no API key. That was a constraint I set early because it made the privacy story simple and the latency predictable.
Stack
Python, PyTorch, TFLite, and a small inference layer tuned for mobile.
Availability
The code for this one is still private while I clean it up, so there is nothing to link to yet.