BirdNET-Go
Realtime BirdNET soundscape analyzer.
https://github.com/tphakala/birdnet-go
Category: Biosphere
Sub Category: Bioacoustics and Acoustic Data Analysis
Keywords
artificial-intelligence audio bats bioacoustics birdnet birdnet-pi birds birdweather contributions-welcome go golang linux perch raspberry-pi raspberrypi tensorflow wildlife
Keywords from Contributors
alpinejs first-issue help-wanted htmx
Last synced: about 5 hours ago
JSON representation
Repository metadata
Self-hosted realtime soundscape analyser for birds, bats and other wildlife. Multi-model local AI inference, runs 24/7 on a Raspberry Pi.
- Host: GitHub
- URL: https://github.com/tphakala/birdnet-go
- Owner: tphakala
- License: other
- Created: 2023-10-20T15:51:19.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2026-05-25T15:39:50.000Z (9 days ago)
- Last Synced: 2026-05-25T17:19:46.106Z (9 days ago)
- Topics: artificial-intelligence, audio, bats, bioacoustics, birdnet, birdnet-pi, birds, birdweather, contributions-welcome, go, golang, linux, perch, raspberry-pi, raspberrypi, tensorflow, wildlife
- Language: Go
- Homepage:
- Size: 210 MB
- Stars: 1,180
- Watchers: 17
- Forks: 112
- Open Issues: 116
- Releases: 113
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Support: support.sh
- Authors: AUTHORS
- Agents: AGENTS.md
README.md
BirdNET-Go
Realtime soundscape analyser for birds, wildlife, and bats.
Self-hosted, 24/7, local AI inference. BirdNET-Go ingests soundcard input or network audio streams, runs multi-model classification, and presents detections in a fast web UI. Runs on a Raspberry Pi.
Highlights
- Multi-model AI gallery: install BirdNET v2.4, Google Perch v2, BattyBirdNET regional bat classifiers, and the BirdNET Geomodel v3.0 from inside the app, no rebuild needed.
- Run multiple models in parallel against separate audio sources and let cross-model agreement boost confidence on shared detections.
- Live spectrogram streaming and detection heatmaps rendered straight in the browser.
- Alert rules engine that routes detections to Discord, Slack, Telegram, ntfy, Pushover, Gotify, Matrix, webhooks, browser push, MQTT (with Home Assistant discovery), shell scripts, and BirdWeather.
- Production-ready ops: onboarding wizard, OIDC/SSO, TLS certificate management, hot-reload settings, system health page, database doctor, and one-click support dumps.
- Installable as a PWA, with 15 UI languages and species names in 40+ languages.
- Local-only by default. Optional Sentry telemetry is strictly opt-in.
Quick install
Debian, Ubuntu, and Raspberry Pi OS:
curl -fsSL https://github.com/tphakala/birdnet-go/raw/main/install.sh -o install.sh
bash ./install.sh
Docker images are published for linux/amd64 and linux/arm64. Pre-built binaries for Linux, Windows, and macOS ship with each release. See the installation guide, hardware recommendations, and security guide for details.
Web Dashboard
Features
Detection
- BirdNET v2.4 (default, embedded, 6,500+ bird species)
- Google Perch v2 via ONNX (14,795 species across birds, insects, amphibians, and mammals) with taxonomy-based species names
- BattyBirdNET bat classifiers, 11 regional models covering Africa, the Americas, East Asia, Europe, the Middle East, South Asia, Southeast Asia, and the USA (Linux + ultrasonic-capable device)
- BirdNET Geomodel v3.0 for location-based range filtering (12,012 species)
- Cross-model detection consensus: agreement between models strengthens confidence and flags disagreements for review
- Custom classifiers: bring your own TFLite model and label set
- Configurable false-positive filtering for accurate results: Deep Detection (repeat-confirmation within a 15-second window), per-species dynamic thresholds, location-based range filter, privacy and dog-bark filters, and per-classifier bat false-positive levels (guide)
- Per-model and per-source confidence thresholds
Audio inputs
- Soundcard capture and RTSP / RTSPS streams, including multiple sources in parallel with independent model assignment
- Sample rates up to 256 kHz for ultrasonic bat detection
- Audio liveness watchdog with tiered recovery for flaky streams
- Stream sample-rate probing and per-model recommendation banners in the UI
- Audio equalizer, per-source quiet hours, daylight filter, and extended capture mode
- Offline analysis of audio files
Interface
- Svelte 5 + TypeScript single-page app
- Installable as a Progressive Web App (PWA)
- Onboarding wizard for first-run setup
- Live spectrogram visualization for active streams (live audio streaming)
- Detection heatmaps with ONNX-accelerated rendering
- Customizable dashboard layout, color schemes, and a "Currently Hearing" card
- Multiselect and bulk actions on the detections list
- Browser terminal (xterm.js over WebSocket PTY) for in-app administration
- 15 UI languages: English, German, French, Spanish, Portuguese, Dutch, Polish, Italian, Czech, Slovak, Hungarian, Finnish, Swedish, Danish, Latvian
- Species names in 40+ languages
Alerts and integrations
- Configurable alert rules engine with per-rule conditions, schedules, and delivery targets
- Multi-target delivery via shoutrrr: Discord, Slack, Telegram, ntfy, Pushover, Gotify, Matrix, Bark, IFTTT, and more
- Webhooks with custom templates, shell-script hooks, and browser push notifications
- MQTT publishing with Home Assistant auto-discovery
- BirdWeather.com API integration
- Prometheus metrics endpoint
- Live spectrogram and realtime log output for OBS overlays on bird-feeder streams
Storage and data
- SQLite (default) or MySQL with retry-aware write paths for contention
- Automatic backups with real-time status polling
- Format-aware audio clip export
- Embedded eBird/Clements taxonomy (2,374 genera, 254 families, 11,145 species) for fast offline lookups
Operations
- System Health diagnostics page covering audio pipeline, models and inference, network, and the datastore
- Database doctor for diagnosis and schema repair
- Help & Support page with guided bug reporting and one-click support dumps
- OIDC / SSO with Google, GitHub, and generic providers, including RP-Initiated Logout
- TLS certificate management UI with transactional writes and backup/restore
- Hot-reload for settings, model installs, and per-source model assignments (no restart)
- Optional, opt-in Sentry telemetry with strict privacy filtering
Platform
- Linux, Windows, and macOS
- Single static binary with the BirdNET TFLite model embedded
- Optional ONNX Runtime for Perch, BattyBirdNET, and BirdNET Geomodel v3.0 (install guide)
- Multi-arch Docker images
- Runs comfortably on a Raspberry Pi 4 or equivalent 64-bit single-board computer
Documentation
- User guide
- Installation
- Hardware recommendations
- ONNX Runtime installation
- Detection pipeline
- Database Doctor
- Training a custom classifier
- Cloudflare Tunnel
- Security
- Telemetry and privacy
- RTSP troubleshooting
Development setup
See CONTRIBUTING.md for the full guide.
git clone https://github.com/tphakala/birdnet-go.git
cd birdnet-go
# Install Task (if not already installed)
# Linux: sh -c "$(curl --location https://taskfile.dev/install.sh)" -- -d -b /usr/local/bin
# macOS: brew install go-task
task setup-dev # installs Go 1.25, Node LTS, build tools, linters, Playwright
task # build
task dev_server # hot-reload dev server (or: air realtime)
Community
Join the Discord server for support, discussions, and updates.
Related projects
Core and extensions
- BirdNET-Analyzer: upstream BirdNET project
- BirdNET-Go Classifiers: enhanced BirdNET classifiers with additional species
- BattyBirdNET-Analyzer: bat classifier models, installable via the in-app gallery
Companion tools
- birda: fast CLI for offline bird species detection on existing audio files, using BirdNET and Perch AI models
- birda-gui: desktop GUI for birda (Electron + Svelte 5) for audio analysis, detection browsing, and species visualization
System integration
- Cockpit BirdNET-Go: web-based system management plugin using the Cockpit framework
Migration tools
- BirdNET-Pi2Go: database converter for migrating from BirdNET-Pi
Hardware solutions
- BirdNET-Go ESP32 RTSP Microphone: ESP32-based RTSP streaming microphone
- ESP32 Audio Streamer: alternative ESP32 RTSP streaming solution
- M5Stack Atom Echo RTSP Mic: RTSP audio server for M5Stack Atom Echo, no soldering required
- M5Stack AtomS3 Lite PDM Mic: RTSP audio server with MEMS PDM microphone
Mobile apps
- Perch: open-source Android/iOS companion app. Connects to BirdNET-Go via the BirdWeather API. Live detection feed, audio playback, species browser, 14-day chart, and notifications for favourite species. MIT licensed.
Contributing
Contributions are welcome.
For setup, workflow, and quality gates, see CONTRIBUTING.md:
- TL;DR quick start: 5-minute setup
- Development workflow: hot reload, git hooks, testing
- License and privacy: CC BY-NC-SA 4.0, privacy by design
All contributions must follow privacy-by-design principles, the automated code-quality gates, and the CC BY-NC-SA 4.0 license terms.
Data sources
Taxonomy data
BirdNET-Go embeds taxonomy data derived from the eBird/Clements Checklist:
- Source: eBird API v2
- Copyright: (c) Cornell Lab of Ornithology
- License: used under eBird API Terms of Use for non-commercial purposes
- Attribution: taxonomy data powered by eBird.org
- Coverage: 2,374 genera, 254 families, 11,145 species
For more information, see the eBird Taxonomy.
License
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International.
Authors and acknowledgements
Created and maintained by Tomi P. Hakala.
A growing list of community contributors keeps the project moving forward. The current list lives on the GitHub contributors page.
The BirdNET AI model is by the K. Lisa Yang Center for Conservation Bioacoustics at the Cornell Lab of Ornithology in collaboration with Chemnitz University of Technology (Stefan Kahl, Connor Wood, Maximilian Eibl, Holger Klinck).
Google Perch v2 ONNX conversion by Justin Chuby. BattyBirdNET bat classifier models by R.D. Zinck. BirdNET label translations by Patrick Levin for the BirdNET-Pi project by Patrick McGuire.
Owner metadata
- Name: Tomi P. Hakala
- Login: tphakala
- Email:
- Kind: user
- Description:
- Website:
- Location: Finland
- Twitter: tphakala
- Company:
- Icon url: https://avatars.githubusercontent.com/u/7030001?v=4
- Repositories: 16
- Last ynced at: 2024-05-01T11:16:30.281Z
- Profile URL: https://github.com/tphakala
GitHub Events
Total
- Fork event: 23
- Create event: 499
- Commit comment event: 2
- Release event: 65
- Issues event: 333
- Watch event: 277
- Delete event: 249
- Issue comment event: 1307
- Push event: 1558
- Gollum event: 19
- Pull request review event: 1219
- Pull request review comment event: 2916
- Pull request event: 904
Last Year
- Fork event: 23
- Create event: 499
- Commit comment event: 2
- Release event: 65
- Issues event: 333
- Watch event: 277
- Delete event: 249
- Issue comment event: 1307
- Push event: 1558
- Gollum event: 19
- Pull request review event: 1219
- Pull request review comment event: 2916
- Pull request event: 904
Committers metadata
Last synced: 5 days ago
Total Commits: 5,004
Total Committers: 52
Avg Commits per committer: 96.231
Development Distribution Score (DDS): 0.096
Commits in past year: 2,957
Committers in past year: 35
Avg Commits per committer in past year: 84.486
Development Distribution Score (DDS) in past year: 0.096
| Name | Commits | |
|---|---|---|
| Tomi P. Hakala | t****a@p****i | 4526 |
| dependabot[bot] | 4****] | 218 |
| github-actions[bot] | 4****] | 75 |
| Hampus Carlsson | c****9@g****m | 58 |
| Petteri Ponsimaa | p****p@g****m | 22 |
| jon | i****0@g****m | 8 |
| HurleySk | 1****k | 7 |
| Daniel | m****y@g****m | 6 |
| Tomi P. Hakala | t****a@e****i | 5 |
| Anya Sabo | a****o@r****m | 5 |
| Espen Hovlandsdal | e****n@h****m | 5 |
| Dr. Tarique Sani | t****i@g****m | 4 |
| Phaeton | 8****n | 4 |
| Kyle Niewiada | k****a@g****m | 4 |
| Keith Lea | k****l@g****m | 4 |
| Cameron Ring | c****n@c****u | 4 |
| Chris Kalafarski | c****s@f****m | 3 |
| geekworldtour | g****e@g****m | 3 |
| Christopher Kalafarski | f****i@m****m | 2 |
| Joel Krauska | j****a@g****m | 2 |
| Joost de Valk | j****t@a****l | 2 |
| Len Trigg | l****k@g****m | 2 |
| Pete Lawrence | p****e@c****k | 2 |
| bo0tzz | g****t@b****e | 2 |
| claude[bot] | 2****] | 2 |
| coderabbitai[bot] | 1****] | 2 |
| Sean Kelly | s****n@g****m | 2 |
| jeremyames-gmail | j****s@g****m | 1 |
| janvrska | 1****a | 1 |
| Joel Krauska | j****a@J****l | 1 |
| and 22 more... | ||
Committer domains:
- jurkiewi.cz: 1
- dougalmatthews.com: 1
- jasonmadigan.com: 1
- leonardo.colman.com.br: 1
- zottner.com: 1
- clarified.io: 1
- paranoid.computer: 1
- originalcottages.co.uk: 1
- bo0tzz.me: 1
- carltonsoftware.co.uk: 1
- altha.nl: 1
- mbp-14-prx.mynetworksettings.com: 1
- geekworldtour.com: 1
- farski.com: 1
- cs.stanford.edu: 1
- hovlandsdal.com: 1
- roblox.com: 1
- elisa.fi: 1
- pobox.fi: 1
Issue and Pull Request metadata
Last synced: 5 days ago
Total issues: 343
Total pull requests: 1,103
Average time to close issues: 26 days
Average time to close pull requests: 3 days
Total issue authors: 134
Total pull request authors: 26
Average comments per issue: 1.9
Average comments per pull request: 1.24
Merged pull request: 826
Bot issues: 8
Bot pull requests: 334
Past year issues: 151
Past year pull requests: 452
Past year average time to close issues: 6 days
Past year average time to close pull requests: about 18 hours
Past year issue authors: 55
Past year pull request authors: 10
Past year average comments per issue: 1.72
Past year average comments per pull request: 1.35
Past year merged pull request: 304
Past year bot issues: 6
Past year bot pull requests: 101
Top Issue Authors
- tphakala (92)
- Lenbok (11)
- farski (9)
- aav7fl (8)
- xconverge (7)
- tomlut (6)
- coderabbitai[bot] (6)
- matthew73210 (6)
- PovilasID (6)
- HinzundKunz (6)
- HWittingen (5)
- isZumpo (5)
- mfortini (4)
- pack2010 (4)
- Shellfishgene (4)
Top Pull Request Authors
- tphakala (670)
- dependabot[bot] (250)
- github-actions[bot] (78)
- isZumpo (33)
- aav7fl (10)
- petterip (9)
- Phaeton (8)
- coderabbitai[bot] (5)
- PeteLawrence (5)
- farski (4)
- geekworldtour (4)
- cameronr (4)
- matthew73210 (3)
- xconverge (3)
- Fotguedes (2)
Top Issue Labels
- enhancement (42)
- bug (38)
- help wanted (6)
- claude-completed (3)
- pkg:diskmanager (3)
- documentation (3)
- pkg:telemetry (2)
- performance (2)
- good first issue (2)
- already fixed (1)
- pkg:birdnet (1)
- frontend (1)
- pkg:datastore (1)
- pkg:analysis (1)
- pkg:myaudio (1)
- dependencies (1)
- claude-error (1)
- test-failure (1)
- pkg:conf (1)
- pkg:notification (1)
- pkg:audiocore (1)
- automated (1)
- pkg:api (1)
- pkg:testing (1)
Top Pull Request Labels
- dependencies (252)
- enhancement (234)
- go (119)
- bug (70)
- pkg:telemetry (8)
- pkg:datastore (7)
- javascript (2)
- pkg:monitor (1)
Package metadata
- Total packages: 1
- Total downloads: unknown
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 20
proxy.golang.org: github.com/tphakala/birdnet-go
- Homepage: https://github.com/tphakala/birdnet-go
- Documentation: https://pkg.go.dev/github.com/tphakala/birdnet-go#section-documentation
- Licenses: CC-BY-NC-SA-4.0
- Latest release: v0.6.4 (published about 1 year ago)
- Last Synced: 2026-05-27T03:04:07.308Z (7 days ago)
- Versions: 20
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent packages count: 9.57%
- Dependent repos count: 10.796%
- Stargazers count: 11.701%
- Average: 12.698%
- Forks count: 18.724%
Dependencies
- github.com/gen2brain/malgo v0.11.10
- github.com/go-audio/audio v1.0.0
- github.com/go-audio/riff v1.0.0
- github.com/go-audio/wav v1.1.0
- github.com/mattn/go-pointer v0.0.1
- github.com/smallnest/ringbuffer v0.0.0-20230728150354-35801fa39d0e
- github.com/tphakala/go-tflite v0.0.0-20231013114437-e78004b1b843
- 492 dependencies
- actions/cache v4.0.1 composite
- actions/checkout v4.1.1 composite
- docker/build-push-action v5.1.0 composite
- docker/login-action v3.0.0 composite
- docker/setup-buildx-action v3.1.0 composite
- debian bookworm-slim build
- golang 1.22.0-bookworm build
- actions/checkout v4 composite
- actions/setup-go v5 composite
- golangci/golangci-lint-action v4 composite
- actions/checkout v4 composite
- tphakala/go-release-action master composite
- actions/checkout v4 composite
- actions/setup-go v5 composite
- actions/upload-artifact v2 composite
- actions/checkout v4 composite
- tphakala/go-release-action master composite
Score: -Infinity