Description
A local-first birding journal that turns trail recordings into BirdNET detections and AI-written notes, without up your audio.
Post Content
This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass.
Trail Notebook is an offline field journal for people who want to remember the sounds of a walk without spending the walk looking at a screen.
The idea is simple: record birdsong while outside, put the phone away, and analyze the recording afterward. BirdNET identifies candidate bird calls. Then a local language model turns those detections into a short journal entry, saved as Markdown with a species table, confidence scores, and timestamps.
The video walkthrough is in the project README.
birdnetlib, analyzes the selected recording locally. gemma3:4b. Recordings folder, or passed in batches. Journals are saved as Markdown files named from their recordings.
Bird recordings and location details can be personal. Processing them locally means I don’t have to upload them to a service I don’t control. After setup, the workflow can run without an internet connection or per-request API charges.
Using an open-weight model also gives me control over the writing step: I can change the model or prompt without replacing the bird-detection pipeline. The model helps organize the results; it does not determine what was actually present.
BirdNET can misidentify calls, especially in noisy recordings. Confidence scores are useful context, not proof, so detections should be checked against the recording and the generated journal should be reviewed. The built-in demo uses sample detections to show the output format; they are not real field observations.
The setup instructions and source code are in the GitHub repository. To try the sample journal:
python trail_notebook.py --demo --no-llm
To choose a local recording:
python trail_notebook.py --browse