This open-source app and Raspberry Pi helped me identify every bird in my neighborhood
We have swift boxes on the side of our home to try to encourage swifts to come and nest. There used to be nesting swifts in the area, so the hope is to lure them back. I wanted a way to track which birds were in the area based on their songs, so I set up my Raspberry Pi and an open-source app to help.
The cheapest part of the build caused the most problems
A classic case of RTFM
Adam Davidson / How-To Geek
It's not a true Raspberry Pi project if something doesn't go horribly wrong along the way. I'd bought a USB microphone with a 20-foot cable for this project. The idea was that my Raspberry Pi would stay indoors, safe from the elements, and the microphone would hang out of the window to listen to the birdsong.
I hooked up the microphone to my Raspberry Pi , and spent about an hour trying and failing to get it to pick up any audio at all. It was only after a lot of frustration that I did what I should have done at the start, and read the manual . It turned out that while the microphone came with a battery, it wasn't already installed.
I found the battery hidden among the packaging, put it in place, and tried again. The microphone worked exactly as it should. I could have saved myself a lot of stress if I'd just read the manual in the first place.
My Pi captures the audio but the brain lives elsewhere
My best-placed Pi wasn't powerful enough
Adam Davidon / How-To Geek
Once I had the microphone working, I had a decision to make. I already had a Raspberry Pi 3B+ positioned really close to a window, which made it the perfect candidate for this project. The problem was that it was a Raspberry Pi 3B+, with 1 GB of RAM .
It was already running other scripts that display photos and movie posters on an old iPad display, so some of that RAM was already being used. It probably wasn't going to be enough to run the bird detection software smoothly.
In the end, I decided to set up the Raspberry Pi to stream the audio from the microphone as an RTSP stream. I could then set up the detection software on my mini PC , which had plenty of RAM and was far more capable of handling the job. My mini PC wasn't within easy reach of a window into the garden, so this was a perfect compromise; the Raspberry Pi was in the right location, and the mini PC had the necessary grunt.
Picking the right open-source project
So many BirdNETs to choose from
My next challenge was choosing which software to run. BirdNET is a research tool built by the Cornell Lab of Ornithology and the Chemnitz University of Technology in Germany. The original version could identify 984 different species of North American and European birds from their calls, using a neural network trained on bird recordings. BirdNET converts audio into a visual spectrogram and then uses a classifier to compare these spectrograms to known bird calls.
BirdNET-Pi is a project built around the open-source BirdNET tool and, for a long time, was the most established way to run BirdNET continuously at home. However, the maintainer shelved the project in August 2025. Some community forks picked up where the original project left off.
BirdNET-Go is an alternative to BirdNET-Pi, written in the Go programming language rather than Python. Unlike BirdNET-Pi, it's actively maintained. BirdNET-Pi has been around far longer and has several years of community use and forum posts. BirdNET-Go has a more modern UI, but a smaller community if I were to hit any obscure problems.
In the end, I opted to go with BirdNET-Go. The original BirdNET-Pi project is no longer maintained, and I wasn't completely sure about going with a community fork. BirdNET-Go is under active development and is the newer, more modern option.
The system's first guess was wrong
I immediately had a very rare sighting
I installed BirdNET-Go in a container in Proxmox on my mini PC. The whole thing was set up using a helper script , so I only needed to enter a single command to start the process, and the script set up a new container and walked me through the installation. I was up and running in under five minutes.
Once installed, I opened the UI and pointed BirdNET-Go at the stream from the Raspberry Pi. BirdNET-Go immediately started listening to the audio from the microphone, and in less than a minute, I had my first hit.
It wasn't a great start. According to BirdNET, the microphone had picked up the call of a Spotted Crake. This is a bird that is extremely rare in my country. The next detection was a flammulated owl, which also isn't native to my country.
I quickly found the problem: I hadn't set my location in the UI. BirdNET uses your location to match audio to birds that are likely to be found in your region, and my location was set to somewhere off the west coast of Africa.
I updated the location, and things went a lot more smoothly. There are still false positives, but you can review the audio for each detection and remove those that aren't accurate, or even block entire species if they keep being detected erroneously.
It's been a lot of fun using BirdNET so far. I've discovered a lot about the birds in my local area and even started to learn some of the calls by heart.
Raspberry Pi projects don't always have to be about tech
What I love about this project is that despite involving a lot of tech and clever recognition algorithms, it's ultimately a way to listen to birdsong and identify which birds are singing . It's great to be able to use tech to learn more about the natural world around me.
