Today I set up BirdNET-Go to automatically identify bird species calling in our yard. It runs an artificial intelligence identification model against a continuous live audio feed — logging species in real time so I can see what is visiting without staring out the window all day.
Here is the setup in action catching a live detection of a Mississippi Kite — a pair currently has a nest with young in our yard:

The Setup
The architecture splits across two home lab nodes:
Maono USB mic (Pi 3B) → FFmpeg → MediaMTX → RTSP → BirdNET-Go (Docker)
Audio Capture & RTSP Streaming
At the edge, a Maono USB lavalier microphone hangs outdoors directly from the coax cable on my ADS-B antenna mount.

A Raspberry Pi 3B captures mono audio with FFmpeg and uses MediaMTX to publish a lightweight Opus RTSP stream (/yard_audio) on port 8554.
Processing with BirdNET-Go
On the main Ubuntu server, BirdNET-Go runs in Docker and subscribes to the Pi’s RTSP feed. With coordinates configured for Oklahoma City, the model filters detections to species plausible for our area.
What’s Next
The microphone is hanging outdoors for now; I plan to mount it under the eaves for better weather protection. Longer term, I want to log detections alongside weather data to track species activity by time of day and season.