Skip to content

A realtime acoustic bird classification system for the Raspberry Pi 5, 4B 3B+ 0W2 and more. Built on the TFLite version of BirdNET.

License

Notifications You must be signed in to change notification settings

Nachtzuster/BirdNET-Pi

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

You may not use BirdNET-Pi to develop a commercial product!!!!

BirdNET-Pi

A realtime acoustic bird classification system for the Raspberry Pi 5, 4B, 400, 3B+, and 0W2

Icon made by Freepik from www.flaticon.com

About this fork:

I've been building on mcguirepr89's most excellent work to further update and improve BirdNET-Pi. Maybe someone will find it useful.

Changes include:

  • Backup & Restore
  • Web ui is much more responsive
  • Daily charts now include all species, not just top/bottom 10
  • Bump apprise version, so more notification type are possible
  • Swipe events on Daily Charts (by @croisez)
  • Support for 'Species range model V2.4 - V2'
  • Bookworm support
  • Experimental support for writing transient files to tmpfs
  • Rework analysis to consolidate analysis/server/extraction. Should make analysis more robust and slightly more efficient, especially on installations with a large number of recordings
  • Bump tflite_runtime to 2.11.0, it is faster
  • Rework daily_plot.py (chart_viewer) to run as a daemon to avoid the very expensive startup
  • Lots of fixes & cleanups

!! note: see 'Migrating' on how to migrate from mcguirepr89

Introduction

BirdNET-Pi is built on the BirdNET framework by @kahst using pre-built TFLite binaries by @PINTO0309 . It is able to recognize bird sounds from a USB microphone or sound card in realtime and share its data with the rest of the world.

Check out birds from around the world

Currently listening in these countries . . . that I know of . . .

  • The United States
  • Germany
  • South Africa
  • France
  • Austria
  • Sweden
  • Scotland
  • Norway
  • England
  • Italy
  • Finland
  • Australia
  • Canada
  • Switzerland
  • Romania
  • Spain
  • New Zealand
  • Russia
  • Croatia
  • Belgium
  • Israel
  • Ireland
  • Denmark
  • Costa Rica
  • The Philippines
  • Hungary
  • South Sudan
  • Argentina
  • Brazil
  • Thailand
  • Colombia
  • Estonia
  • Tasmania
  • Luxembourg
  • Crete
  • Rwanda
  • Oman
  • Belarus
  • Czech Republic
  • Japan

Features

  • 24/7 recording and automatic identification of bird songs, chirps, and peeps using BirdNET machine learning
  • Automatic extraction and cataloguing of bird clips from full-length recordings
  • Tools to visualize your recorded bird data and analyze trends
  • Live audio stream and spectrogram
  • Automatic disk space management that periodically purges old audio files
  • BirdWeather integration -- you can request a BirdWeather ID from BirdNET-Pi's "Tools" > "Settings" page
  • Web interface access to all data and logs provided by Caddy
  • GoTTY and GoTTY x86 Web Terminal
  • Tiny File Manager
  • FTP server included
  • SQLite3 Database
  • Adminer database maintenance
  • phpSysInfo
  • Apprise Notifications supporting 90+ notification platforms
  • Localization supported

Requirements

  • A Raspberry Pi 5, Raspberry 4B, Raspberry Pi 400, Raspberry Pi 3B+, or Raspberry Pi 0W2 (The 3B+ and 0W2 must run on RaspiOS-ARM64-Lite)
  • An SD Card with the 64-bit version of RaspiOS installed (please use Bookworm) -- Lite is recommended, but the installation works on RaspiOS-ARM64-Full as well. Downloads available within the Raspberry Pi Imager.
  • A USB Microphone or Sound Card

Installation

A comprehensive installation guide is available here. This guide is slightly out-dated: make sure to pick Bookworm, also the curl command is still pointing to mcguirepr89's repo.

Please note that installing BirdNET-Pi on top of other servers is not supported. If this is something that you require, please open a discussion for your idea and inquire about how to contribute to development.

Raspberry Pi 3B[+] and 0W2 installation guide available here

The system can be installed with:

curl -s https://raw.githubusercontent.com/Nachtzuster/BirdNET-Pi/main/newinstaller.sh | bash

The installer takes care of any and all necessary updates, so you can run that as the very first command upon the first boot, if you'd like.

The installation creates a log in $HOME/installation-$(date "+%F").txt.

Access

The BirdNET-Pi can be accessed from any web browser on the same network:

  • http://birdnetpi.local OR your Pi's IP address
  • Default Basic Authentication Username: birdnet
  • Password is empty by default. Set this in "Tools" > "Settings" > "Advanced Settings"

Please take a look at the wiki and discussions for information on

Updating

Use the web interface and go to "Tools" > "System Controls" > "Update". If you encounter any issues with that, or suspect that the update did not work for some reason, please save its output and post it in an issue where we can help.

Backup and Restore

Use the web interface and go to "Tools" > "System Controls" > "Backup" or "Restore". Backup/Restore is primary meant for migrating your data for one system to another. Since the time required to create or restore a backup depends on the size of the data set and the speed of the storage, this could take quite a while.

Alternatively, the backup script can be used directly. These examples assume the backup medium is mounted on /mnt

To backup:

./scripts/backup_data.sh -a backup -f /mnt/birds/backup-2024-07-09.tar

To restore:

./scripts/backup_data.sh -a restore -f /mnt/birds/backup-2024-07-09.tar

x86_64 support*

*x86_64 is not supported. Not officially anyway. It is mainly there for developers or otherwise more Linux savvy people. That being said, some pointers:

  • Use Debian 12
  • The user needs passwordless sudo
  • We use a custom TFLite build that needs AVX2 support. So Intel Haswell or newer, not sure what that means for AMD cpu's, let me know if you do.
  • Some people get around the previous point by uninstalling tflite_runtime and replacing with tensorflow in the ./birdnet venv. But beware: analysis will be slower, and the older v1 model won't work.

For Proxmox, a user has reported adding this in their cpu-models.conf, in order for the custom TFLite build to work.

cpu-model: BirdNet
    flags +sse4.1
    reported-model host

Uninstallation

/usr/local/bin/uninstall.sh && cd ~ && rm -drf BirdNET-Pi

Migrating

Before switching, make sure your installation is fully up-to-date. Also make sure to have a backup, that is also the only way to get back to the original BirdNET-Pi. Please note that upgrading your underlying OS to Bookworm is not going to work. Please stick to Bullseye. If you do want Bookworm, you need to start from a fresh install and copy back your data. (remember the backup!)

Run these commands to migrate to this repo:

git remote remove origin
git remote add origin https://github.com/Nachtzuster/BirdNET-Pi.git
./scripts/update_birdnet.sh

Troubleshooting and Ideas

*Hint: A lot of weird problems can be solved by simply restarting the core services. Do this from the web interface "Tools" > "Services" > "Restart Core Services" Having trouble or have an idea? Submit an issue for trouble and a discussion for ideas. Please do not submit an issue as a discussion -- the issue tracker solicits information that is needed for anyone to help -- discussions are not for issues.

PLEASE search the repo for your issue before creating a new one. This repo has nothing to do with the validity of the detection results, so please do not start any issues around "False positives."

Sharing

Please join a Discussion!! and please join BirdWeather!! I hope that if you find BirdNET-Pi has been worth your time, you will share your setup, results, customizations, etc. HERE and will consider making your installation public.

Homeassistant addon

BirdNET-Pi can also be run as a Homeassistant addon through docker. For more information : https://github.com/alexbelgium/hassio-addons/blob/master/birdnet-pi/README.md

Cool Links

Internationalization:

The bird names are in English by default, but other localized versions are available thanks to the wonderful efforts of @patlevin. Use the web interface's "Tools" > "Settings" and select your "Database Language" to have the detections in your language.

Current database languages include the list below:

Language Missing Species out of 6,362 Missing labels (%)
Afrikaans 5774 90.76%
Catalan 544 8.55%
Chinese 264 4.15%
Croatian 370 5.82%
Czech 683 10.74%
Danish 460 7.23%
Dutch 264 4.15%
Estonian 3171 49.84%
Finnish 518 8.14%
French 264 4.15%
German 264 4.15%
Hungarian 2688 42.25%
Icelandic 5588 87.83%
Indonesian 5550 87.24%
Italian 524 8.24%
Japanese 640 10.06%
Latvian 4821 75.78%
Lithuanian 597 9.38%
Norwegian 325 5.11%
Polish 265 4.17%
Portuguese 2742 43.10%
Russian 808 12.70%
Slovak 264 4.15%
Slovenian 5532 86.95%
Spanish 348 5.47%
Swedish 264 4.15%
Thai 5580 87.71%
Ukrainian 646 10.15%

Screenshots

Overview chrome_HNMJKSPwV0

🤔

Are you a lucky ducky with a spare Raspberry Pi? Try Folding@home!

About

A realtime acoustic bird classification system for the Raspberry Pi 5, 4B 3B+ 0W2 and more. Built on the TFLite version of BirdNET.

Resources

License

Stars

Watchers

Forks

Languages

  • PHP 60.5%
  • JavaScript 28.9%
  • Shell 4.2%
  • Python 3.5%
  • CSS 1.7%
  • HTML 1.2%