Trail Notebook: Birding Offline with BirdNET and Gemma
Description and use
A local-first birding journal that records trail audio, detects species with BirdNET, and writes AI-generated notes using Gemma3:4b, all offline.
Problem
Need a field journal that records bird sounds, detects species, and generates notes without uploading audio to external services.
Outcome
Offline pipeline that turns trail recordings into structured, AI-generated birding journals without external uploads.
Workflow
- Record bird song on phone
- Store audio file
- Run trail_notebook.py with --browse to select recording
- BirdNET (via birdnetlib) analyzes audio locally
- Ollama runs Gemma3:4b to generate journal based on BirdNET detections
- Save output as Markdown file named after recording
Evidence
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.
Processing them locally means I don’t have to upload them to a service I don’t control.
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.
- Record date: 2026-10-06T17:56:01.841Z