My wife loves listening to the birds and identifying them using an app on her phone. I thought I'd take this a step further and see if there was something that can identify the birds based on their song. Looking around I found BirdNet and BirdNet-Go, then discovered you can run this on Docker and use the security cameras you already have outside to identify the birds. Awesome! So I took 3 of the cameras around my house and used their microphones to identify the birds. It was magic.

Real-Time Bird and Bat Audio Detection
BirdNet-Go runs 24/7. It listens constantly. The moment a bird starts singing, it analyzes the audio and gives you an identification. No waiting, no manual recording. It works for bats too, which is pretty cool if you've got them flying around at dusk. The system just keeps running in the background, cataloging everything it hears. It also started detecting frogs which is interesting.

Multi-Model Local AI Inference Engine
The whole thing runs locally on your hardware. No cloud services. No API calls. The AI models live right on your server or Raspberry Pi. This means it's fast, private, and doesn't cost you anything per month. You can even run multiple models if you want different detection strategies or regional bird databases. They recently added Google Perch v2 to the model gallery allowing for 14,795 species to be detected vs the 6,000 that BirdNET 2.4 provided.


Alert Rules with Species List Matching
You can set up rules for specific birds. Want to know the instant a cardinal shows up? Done. Looking for a rare species in your area? Set an alert. The system matches against species lists and sends you notifications based on whatever criteria you set. It's like having a birding buddy who never sleeps. I even have it connected to a channel in my homes Discord server. Wait, your house doesn't have a dedicated Discord?


Species Novelty Tracking for New Detections
This feature tracks which birds are new to your yard. First time a blue jay visits? BirdNet-Go flags it. It maintains a running list of every species it's detected, so you can see your yard's biodiversity grow over time. Honestly, this turned into a fun game for us.

RTSP Stream Support for IP Cameras
If your cameras support RTSP, you're good to go. Most modern IP cameras do. You just point BirdNet-Go at the stream URL. I used three of my existing security cameras. Didn't need to buy any special hardware. The cameras I already had for security now pull double duty identifying birds.

BirdWeather Integration for Data Sharing
BirdWeather is a community platform for sharing bird detection data. BirdNet-Go integrates with it directly. If you want to contribute your observations to a larger dataset, you can. It helps researchers and other birders see what's happening in your area. You don't have to use it, but it's nice that the option exists.
Self-Hosted with No Cloud Dependencies
Everything lives on your network. The audio never leaves your house unless you explicitly share it. No subscription fees. No terms of service changes. No company shutting down the service in two years. You own the whole stack. It runs in Docker, so it's easy to manage alongside everything else in your homelab.
Can connect to Home Assistant
Evernything needs to be able to connect to Home Assistant and BirdNET-Go can use MQTT to be discovered in Home Assistant.

Visual Audio Channel Energy Level Analysis
The interface shows you real-time audio levels for each channel. You can see exactly what the microphones are picking up. This helps you position cameras better or troubleshoot why one isn't detecting anything. Sometimes you'll realize the camera is pointed at a noisy AC unit or getting wind noise, and you can adjust accordingly.
IT DETECTED A FART!
A few nights ago I got a notification from Home Assistant that a fart was detected in the driveway. My neighbor was walking by my house on his nightly walk and ripped one as he passed by the driveway and the fart was detected.

There's an app for that?
Someone made a free app for iOS called "BirdNET-Go Companion" that lets you connect you phone to your BirdNet-Go server and see the detections in a native iOS app. Awesome job Robert Oesterlin!

Saezuri makes for a beautiful front end for BirdNet-Go
Let's check out Saezuri, nielsrowinbik on reddit mentioned they built something called Saezuri inspired by Avian Visitors and I thought I'd give it a try. A quick bit of Docker setup and it was generating images in just a few minutes. Click one of the birds and info about them pops up. Awesome job nielsrowinbik!
On the tin: A self-hosted display for your BirdNET-Go instance. It watches recent detections and arranges the species you’re hearing into a woodblock-style collage — each bird sized by how often it calls. Point it at BirdNET-Go and leave it on a screen. Everything runs on your own network — no account, no cloud, no writes.
Looking at the logs, it did try to find a photo of a fart and I'll let you know if it using Gemini to generate a photo of one as well.




Final Thoughts

Look, this project surprised me. I expected it to be neat but figured I'd get bored after a week. Instead, my wife and I check it daily. We've learned which birds visit at what times. We've spotted species we didn't know lived nearby. My friends got interested too, I made this avaiable on the public house domain name (behind Cloudflare of course.) and allowed a few of my friends to connect to it and see how it works. It turned our security camera setup into something genuinely useful beyond security. If you've got cameras with microphones and even a passing interest in birds, give BirdNet-Go a shot. It's one of those homelab projects that actually improves daily life instead of just being technically interesting.
Let's answer some questions left on Reddit and Hacker News (Hi all!)
- Oh boy, I'm on the front page of Hacker News! Wild.
- nielsrowinbik on reddit mentioned they built something called Saezuri inspired by Avian Visitors, that is a nice front end for BirdNet-Go. Omg, it's awesome looking, I'll need to give it a try.
- Yes, technically it is a "flock" camera. Oh boy.
- Lots of folks saying they build something like this using Frigate, I didn't build this I just installed the Docker Container and it was up in running in 15 mins detecting things. I use Home Assistant at have built some custom dashboards so I dont have to go into the web app to see everything.
- A few people in the comments on Reddit mentioned Bird-Pi, I'm running this on an old laptop and has been working quite well for what I'm needed it to do.
- A lot of folks mentioned using e-ink displays to view this data and what a smart idea. My wife and I access the web interface on our photos to see the list of recent detections. I also have Home Assistant integration tied in so it shows up on a screen I have configured there. I'm going to look into the mobile companion app to see how that all works.
- Some folks talked about using special microphones to do the detection and I may do that for our back yard, we don't have cameras out there for personal privacy reasons but a mic would be great. One thing I didn't mention is the mics cut out if it hears speech, which is a nice feature.
- A few folks mentioned they their built or vibe coded their on versions of BirdNet-Go and I think thats great, I found what worked for me and it was a system my wife was already using on her phone with an app. Now it's like having her phone outside 24/7 capturing the bird calls.
- Someone asked if this can be turned into a doorbell, no it cant be but it can use your doorbell if it has an RTSP feed.
- Lots of folks mentioned Bats, yeah, if you have a specialized mic you can totally detect bats with better accuracy. We have a "bat box" down the street from us where someone set one up on a pole and some bats we believe live there.
- Yeah, the fart detector was funny!
- People asked about confidance in identifying birds and honesly we're not birders just people that have a crapton of birds around us so I used the RTSP streams to capture them and a local AI model to identify them.
- Lots of folks talking about hacking flock cameras to do this, go on with your bad selves! (share the project link in the comments below if you do!)
- Some folks mentioned that I had a small amount of detections, over the last 12 months we've had 418,726 with 271 unique species and 60.9% confidence rating average. Our most common bird for our area of Southern California is the House Finch with 118,667 detections.

September 2026 Update: The Catch With More Species
Remember when I said Perch bumped detection from 6,000 species to 14,795? That came with a bill.
My ZimaOS box has been running hot (so hot that I moved the laptop up to the top shelf of my office shelves next to the AC vent to cool it). Not a spike here and there, but pegged at 275% CPU around the clock. It's an Intel i7-2760QM with 32GB of RAM, a laptop chip from 2011. That makes it 15 years old, and it was working way harder than it should.
I caused this myself. I had BirdNET and Perch both running on all three camera streams. Two models, three feeds, 24/7.
Instead of guessing, I had Claudecode to some diagnostic work to see what it could find. It dug through four months of my detection database. On this hardware Perch takes about 23 times longer per inference than BirdNET. That's 2.9 seconds versus 127 milliseconds. For a fast modern computer it should be fine but this ewaste this is running on its getting beat up by this task.
Then Perch Started Making Things Up
My first fix was to run Perch by itself and skip BirdNET. Bad idea.
It identified a Redwing 3,498 times at my Front Yard mic. A Redwing is a European thrush that basically never shows up in North America. It also heard a Great Horned Owl 23,035 times, mostly around 9 or 10am. Owls are not morning people.
So my bird app invented a fake European bird and a very confused daytime owl.
The BirdNET-Go FAQ explained why. Perch is only supported alongside BirdNET, which uses the agreement between the two models to filter out exactly this kind of nonsense. Running it solo was never a supported setup.
Fine, I tried it the right way. Both models, but on just one camera. That single camera pulled 451% CPU sustained, which is worse than the problem I started with. On this laptop, Perch isn't viable, paired or not.
What Actually Fixed It
Going back to basics did the trick:
- BirdNET only on all three cameras. Perch is gone.
- Doorbell mic turned off. It sits a few feet from the Front Yard camera, so it was mostly hearing the same birds twice.
- Analysis overlap back at the default. Tightening it quietly broke the false-positive filter and I didn't notice for a while.
- Thread count at 4. The built-in benchmark tool showed more threads made things slower.
- Dynamic threshold floor nudged up a little, per the project's tuning advice, to cut low-confidence noise.
Sustained CPU now sits around 35 to 70%. That's under one core instead of nearly three, on the same ancient chip.
If you're running Perch on modest hardware, especially by itself, go look through your detection log for species that don't belong on your continent. I'd love to hear what your "Redwing" turns out to be.

Comments