← Projects
raspberry-pi beginner 1 hr ago ◯ 4 min read

Build a BirdNET-Pi Backyard Bird Call Identification Station with Raspberry Pi

Build time: 2-4 hours
Tools needed: None beyond basic assembly — a small Phillips screwdriver if mounting in an enclosure, no soldering required
Parts List
raspberry pibirdnet-pimachine learningbird identificationaudiowildlifeself-hosted

This site's wildlife trail camera project covers triggering on motion, but a huge amount of backyard wildlife activity never shows up on camera at all — it happens overhead, in dense brush, or well before dawn. BirdNET-Pi listens instead of watching: it runs the Cornell Lab/Chemnitz University BirdNET neural network locally on a Raspberry Pi, continuously analyzing audio from a cheap USB microphone and logging every bird species it recognizes with a timestamp, a confidence score, and a spectrogram. No cloud account, no subscription, and no audio ever leaves the device. This project covers getting BirdNET-Pi installed and tuned well enough that its species list is actually trustworthy, not just noisy.

Why a Dedicated Pi Instead of Adding It to an Existing Server

BirdNET-Pi's install script expects to own the whole system — it sets up its own web server, SQLite database, and a continuous recording pipeline that runs 24/7. It will technically coexist with other services on a Pi you're already using for something else, but the official image and install script assume a clean Raspberry Pi OS Lite install, and troubleshooting a conflict between BirdNET-Pi's Icecast streaming service and something else you're running is a worse use of an afternoon than just dedicating a spare Pi 4 to it.

Microphone Placement Matters More Than Microphone Price

BirdNET-Pi's identification accuracy lives or dies on clean audio, and a $15 USB lavalier mic placed well outperforms a $100 mic placed badly. The things that actually matter:

Installation

Flash Raspberry Pi OS Lite (64-bit) to the microSD card, enable SSH during imaging with Raspberry Pi Imager's advanced options, and boot headless. Once connected over SSH:

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

The installer builds BirdNET-Pi's dependencies from source on first run, which takes 45 minutes to over an hour on a Pi 4 — this is normal and not a hang. It reboots automatically when finished and brings up a web dashboard at http://birdnetpi.local (or the Pi's IP address) showing a live spectrogram, today's detections, and a species list.

Tuning for Fewer False Positives

Out of the box, BirdNET-Pi is tuned to catch everything, which means your first week of logs will include a few species that almost certainly weren't actually present. The settings worth adjusting in the web UI's configuration page:

SettingDefault behaviorRecommended adjustment Confidence thresholdLow, to avoid missing quiet/distant callsRaise to 0.7-0.8 once you've confirmed your mic placement is clean; lower temporarily when first tuning mic position Species frequency filterOffEnable and set to your eBird region — this suppresses detections of species that have near-zero probability of occurring in your area, which eliminates most spurious "confident" misidentifications Recording length / overlap3s clips, minimal overlapLeave as default unless you're specifically missing fast call sequences — shorter overlaps increase CPU load with limited identification benefit on a Pi 4

What You Get

The dashboard logs every detection with a playable audio clip and spectrogram, builds daily and all-time species lists, and can push notifications through Apprise to a phone or a Home Assistant instance when a new or notable species is detected. Longer term, the database is a genuine citizen-science record of what's actually moving through a specific yard across seasons — several BirdNET-Pi users have found their logs catching migratory species passing through for only a few days a year that they'd never have noticed by ear.

BirdNET-Pi is one of the better-documented self-hosted ML projects a Raspberry Pi can run, precisely because the hard part — the trained species-identification model — is already done; the work here is almost entirely in careful microphone placement and confidence tuning rather than anything resembling machine learning expertise. Once it's running reliably, it's one of the lowest-maintenance long-running Pi projects on this site: no moving parts, no lens to clean, and a database that only gets more interesting the longer it runs.