tphakala/birdnet-go
Self-hosted realtime soundscape analyser for birds, bats and other wildlife. Multi-model local AI inference, runs 24/7 on a Raspberry Pi.
BirdNET‑Go – Real‑time AI‑powered soundscape analysis
What it does
BirdNET‑Go is a self‑hosted service that listens to live audio (from a sound‑card or network streams) and identifies birds, other wildlife and bats in real time. It runs the BirdNET v2.4 model (6 500+ bird species) together with Google Perch v2, BattyBirdNET bat classifiers and the BirdNET Geomodel v3.0. Detections are shown in a web dashboard with live spectrograms, heat‑maps and a searchable list of species.
Why it matters
- Local AI inference – No cloud subscription; everything runs on‑premises (even on a Raspberry Pi). This keeps data private and works offline.
- Multi‑model consensus – Running several classifiers in parallel lets the system boost confidence when they agree and flag disagreements for review, improving accuracy.
- Rich alerting – Detections can be pushed to Discord, Slack, Telegram, MQTT/Home Assistant, webhooks, etc., making it easy to integrate with home‑automation or citizen‑science workflows.
- Turnkey deployment – One‑click install scripts, Docker images for amd64/arm64, and a PWA‑enabled UI mean you can get a 24/7 monitoring station up in minutes.
How it works (high‑level)
- Audio ingestion – The server captures audio from a local sound card or RTSP/RTSPS streams (up to 256 kHz for ultrasonic bat detection). A watchdog monitors stream health and can restart flaky sources.
- Model inference – Audio chunks are fed to the selected AI models (TFLite for BirdNET, ONNX for Perch/BattyBirdNET/Geomodel). Inference runs on the CPU; optional ONNX Runtime accelerates the non‑TFLite models.
- Consensus & filtering – Results from each model are merged. Cross‑model agreement raises confidence; configurable filters (location‑range, dog‑bark, deep‑detection windows, per‑species thresholds) prune false positives.
- Storage & UI – Detections are stored in SQLite (or MySQL) and displayed in a Svelte‑based single‑page web app. The UI streams a live spectrogram, heat‑maps, and provides a “Currently Hearing” card.
- Alert routing – A rules engine (built on the
shoutrrrlibrary) evaluates each detection against user‑defined conditions and dispatches notifications via many channels.
Who it’s for
- Bird‑watchers, researchers, and conservation volunteers who want a private, always‑on recorder at a feeder, nest box, or remote site.
- Home‑automation enthusiasts looking to trigger actions (lights, cameras, logs) when certain species appear.
- Developers who need a ready‑made AI inference pipeline they can extend with custom TFLite models.
Getting started
# Debian/Ubuntu/Raspberry Pi OS
curl -fsSL https://github.com/tphakala/birdnet-go/raw/main/install.sh -o install.sh
bash ./install.sh
Or pull the Docker image and run it on the host network (recommended for low‑latency audio). The project provides a quick‑start wizard, OIDC/SSO login, TLS certificate handling, and a health‑check page.
Community & support
- Discord: real‑time help and feature discussion.
- GitHub: issues, pull‑requests, and a contributors list.
- Extensive wiki covering installation, hardware recommendations, custom classifier training, security, and troubleshooting.
License: Creative Commons BY‑NC‑SA 4.0 (non‑commercial use only). Model weights are provided under the original BirdNET and Perch licences.
Related
- Dispatch
- Project
- Project
- Project
- Project