This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass
What I Built
Trail Echo is an offline bird logger. It listens in 60-second chunks, identifies species with the open BirdNET model, throws away chunks where nothing was heard, and gives you a dashboard of every bird you passed once you're back.
The touch-grass idea: the screen is for afterwards. During a walk, the device sits in a bag or pocket and listens, so you can look up at the trees instead of down at an identification app. At the end of the walk you get a species list and a timeline of when each bird was heard. It's for casual walkers and city dwellers who hear birds all the time and never learned their names.
Current status: the live logger is tested with system-audio capture on PC and microphone. Also tested with microphones on phone that connects to the same pipeline after media type conversions (from .m4a to .wav); field audio to be recorded on a phone and run through the same pipeline.
Demo
Code
kilqwe
/
hacktoberfest-week-1
Offline bird logger built on BirdNET. Hacktoberfest 2026, Week 1: Touch Grass.
Trail Echo
Offline bird logger built on BirdNET It listens in 60-second chunks, identifies species locally, discards chunks with no detections, and shows everything heard in a Streamlit dashboard.
Built for Hacktoberfest 2026, Week 1: Touch Grass. The idea is to leave the device in your pocket during a walk and look at the results afterwards.
How it works
capture audio β BirdNET analysis β CSV per chunk β Streamlit dashboard
- Chunks with no detections are deleted automatically (audio and CSV), so storage only grows when something is heard.
- All inference runs locally. No audio leaves your machine.
Status
Tested: The microphone successfully captures the sound of the birds (captured using xeno-canto and youtube). Using BirdNET-Analyzer the app can successfully identify the bird species with confidence of >95% Not yet tested: outdoor field recording on a real walk.
Setup
python -m venv .venv
.venv\Scripts\activate #β¦How I Built It
-
Open model: BirdNET (TensorFlow, Cornell Lab of Ornithology and Chemnitz University of Technology), run locally through
birdnet-analyzer. The species list it loaded had 6,522 species. -
Capture:
sounddevicefor microphones and WASAPI loopback viaPyAudioWPatch;soundfilewrites the chunks. - Pipeline: record a chunk, call BirdNET, read the CSV, delete the audio and CSV if there are no detections.
- Dashboard: Streamlit and pandas: species table, detections per minute, raw log.
What broke along the way:
- BirdNET failed silently because I hid subprocess errors, so the script printed success while writing nothing.
- The laptop mic was near-silent, and audio enhancements gated sustained sounds like chirping after about a second.
- Some device paths returned garbage values in the billions, so I added level checks.
- Storage: 60 s of WAV is about 5 MB, so chunks with no detections are deleted automatically.
Why Does Open Innovation Matter?
A bird logger hears everything around you, including conversations on the trail. Because BirdNET's weights are public, inference runs entirely on my own machine:
no audio leaves the device, nothing needs a signal on a hillside, and there are no per-request fees for hours of recording. I could also read the pipeline and tune it (confidence threshold, chunk length, and later location and week filters) instead of waiting for an API to expose those options. A closed cloud API would have meant uploading hours of ambient audio. One caveat: BirdNET's model is licensed CC BY-NC-SA, so this is a non-commercial project.




Top comments (0)