DEV Community

Cover image for TrailBird: an offline bird-call identifier for your next hike
Hamid Naeem Khan
Hamid Naeem Khan

Posted on

TrailBird: an offline bird-call identifier for your next hike

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass

What I Built

TrailBird is a local bird-call identifier for hikers. You give it a short recording, and it returns the top 3 likely species with confidence scores. It flags low-confidence results as uncertain and shows a short listening note. The screen is meant for a quick glance, so the walk stays the main event. Audio never leaves your laptop. It's for hikers and casual birders who want to put the phone down and look up.

Demo

A live demo isn't deployed yet. The repo is public, and I'm finishing the model wiring and UI now. I'll add a demo video and link to this post when it's ready.

Code

GitHub logo HamidKhan1001 / trailbird

Offline bird-call identifier (BirdNET, Gradio) for the Hacktoberfest Touch Grass challenge

TrailBird: offline bird-call identifier

Identify a bird from a short recording on the trail, with no internet and no audio leaving your laptop.

Status: work in progress (Hacktoberfest 2026, "Touch Grass" challenge). Done so far: audio loading/resampling/chunking (trailbird/audio.py) and top-3 / uncertainty / disclaimer formatting (trailbird/results.py). Still to do: BirdNET inference wiring, Gradio UI, tests, demo audio.

Planned model

BirdNET via the birdnet Python package (~6,000 species), run locally with ONNX.

  • Code: MIT. Model weights: CC BY-NC-SA 4.0 (non-commercial, share-alike, attribution required). Fine for this non-commercial project; not OSI-open weights.

Disclaimer

Results are an assistive prediction, not a definitive identification.

License

Project code: MIT. BirdNET model weights: CC BY-NC-SA 4.0.




Current state: audio loading, resampling and chunking, plus top-3 ranking, uncertainty flagging and the disclaimer, are in the repo. BirdNET inference, the Gradio UI and tests are still in progress.

How I Built It

  • Model: BirdNET, an open-weight model covering about 6,000 species, run locally through the birdnet Python package with ONNX.
  • Audio pipeline (Python): mono conversion, resampling to 48 kHz, and 3-second chunking.
  • Result handling: the top-3 results are marked uncertain when the best score is under 50% or within 10 points of second place. Every result carries an "assistive prediction, not a definitive identification" disclaimer.
  • UI: Gradio, planned.
  • Licenses: the code is MIT. The BirdNET weights are CC BY-NC-SA 4.0, so non-commercial use with attribution and share-alike. BirdNET is by the Cornell Lab of Ornithology and Chemnitz University of Technology.

Why Does Open Innovation Matter?

Open weights let identification run on a laptop with no signal, no API key and no upload of where you were or what you recorded. A closed API needs connectivity, which trails often lack, and sends your recordings to someone else's server. Open code and weights also mean anyone can audit, fix or extend it, for example with regional species notes.

My Agent Session

Built with Claude Code. [Add your DevRelay session embed here, or delete this section.]

Top comments (0)