TrailBirder — offline bird-song ID and a local-LLM field journal for Alberta trails
Description and use
TrailBirder – an offline C#/.NET 8 app that identifies bird sounds and writes concise field journal entries without internet.
Problem
Hearing birds on Calgary walks and not knowing what they were.
Outcome
TrailBirder enables offline, real‑time bird identification and field journaling on Alberta trails, reducing screen time and eliminating the need for internet or cloud services.
Workflow
- 1. Start TrailBirder on device. 2. App records audio via mic (NAudio on Windows, arecord on Linux/Pi, ffmpeg on macOS).
- 3. Audio is processed by BirdNET v2.4 converted to ONNX, producing scores for 6,522 sound classes.
- 4. Range model filters scores based on latitude, longitude and week to plausible species.
- 5. Gemma 3 via Ollama generates a grounded journal entry from detections and range model output.
- 6. App displays detections and journal entry; user can stop recording with Ctrl+C.
- 7. If Ollama is not running, detections and clips are saved and journal can be written later with "trailbirder journal".
Evidence
TrailBirder is a small C# / .NET 8 app that listens to birds on the trail, names them, and writes you a short field-journal entry. It runs entirely on your own device, with no signal, account or cloud.
On Ubuntu, it installs Ollama, pulls Gemma 3 (1B), and analyzes BirdNET's example recording end to end. The journal it writes appears in the run summary.
The real part of an FFT is just a matrix multiply by a cosine table: Re(RFFT(x))[k] = Σₙ x[n] · cos(2πkn/N)
The range model scores both at 0.000 for Calgary in October, so they never reach the user.
- Record date: 2026-10-11T19:55:59.588Z