About BirdWorks
High-fidelity field audio capture + AI-powered bird identification
What is BirdNET?
BirdNET is a research platform that uses deep learning and artificial intelligence to identify bird species by their vocalizations. Developed jointly by the Cornell Lab of Ornithology and Chemnitz University of Technology, BirdNET can recognize over 6,000 bird species from around the world.
The system analyzes audio recordings and compares them against a massive database of bird calls and songs, providing identification with a confidence score. This technology makes it possible to monitor bird populations continuously and non-invasively.
About This Project
BirdWorks is a real-world field deployment built and maintained by Wasatch Bitworks — a small studio that builds fast, data-driven websites and custom systems for niche applications. All bird photography by Zachary Kane.
How Our System Works
Continuous Audio Capture
A custom three-microphone array mounted at our Wasatch Front location continuously captures high-fidelity audio. The audio flows through an Alesis MultiMix 8 USB mixer and is recorded in 15-second segments at professional quality (48kHz sample rate, 16-bit stereo) around the clock.
Hardware: Primo EM272Z1 capsules (phantom-powered) • Format: 16-bit PCM stereo • Elevation: ~4,500 ft
Local AI Analysis on Raspberry Pi
A Raspberry Pi 5 running the BirdNET v2.4 neural network processes each audio segment in real-time. The AI compares detected sounds against a trained model of 6,000+ global bird species and assigns confidence scores (0–100%). Detections below 70% confidence are filtered out to reduce false positives.
Device: Raspberry Pi 5 • OS: Debian 12 • Threshold: 70% minimum confidence
Cloud Sync & Permanent Archival
Every 5 minutes, the Raspberry Pi syncs confirmed detections to our cloud backend—a Sinatra/Ruby CMS with PostgreSQL storage. Audio clips are archived on AWS S3 for permanent preservation. All data is stored in UTC and includes full detection metadata and confidence scores.
Sync interval: 5 minutes • Database: PostgreSQL • Storage: AWS S3 with lifecycle management
Website & Public Display
This website fetches fresh data from our public API and regenerates every hour during daytime hours (6am–10pm MT). Built with Eleventy (static site generator) and Tailwind CSS, it displays the latest detections, species trends, activity charts, and curated bird photography. The /live page offers real-time updates with a 5-minute refresh interval.
Generator: Eleventy v3.1.2 • Hosting: Netlify CDN • Builds: Hourly during active hours (17/day)
Technical Architecture
Hardware
Audio Capture
- •3-Microphone Array: Custom-built array using wired Primo EM272Z1 capsules (phantom powered)
- •Audio Interface: Alesis MultiMix 8 USB mixer — 4 phantom-powered XLR mic inputs (stereo input to Pi)
- •Recording Format: 16-bit PCM, stereo, 48kHz
- •Segment Length: 15-second continuous recordings
Primo EM272Z1 capsules: Available at Micbooster
Location & Specifications
Raspberry Pi Device
System Specifications
- •Hardware: Raspberry Pi 5
- •Operating System: Debian 12 (Bookworm)
- •AI Model: BirdNET 6K Global v2.4 (FP16 optimized)
- •Species Recognition: 6,000+ global bird species
Detection Pipeline
- Audio capture (15-second chunks)
- BirdNET model analysis
- Confidence scoring (0-100%)
- Threshold filtering (70% minimum)
- Local SQLite storage
- 5-minute cloud sync to CMS
Detection Settings
Backend (CMS & Database)
Architecture
- •CMS: Sinatra/Ruby API (Bitworks CMS)
- •Database: PostgreSQL (detection, species, photos, audio)
- •Photo Storage: AWS S3 (original + derivatives)
- •Audio Storage: AWS S3 (pre-signed URLs)
Data Management
- •Detection Sync: Every 5 minutes (Pi → CMS)
- •Data Retention: Permanent archival
- •Photo Management: Soft-delete, multi-size derivatives
- •Timezone: UTC storage, Mountain Time display
Public API Endpoints
These read-only endpoints power the BirdWorks frontend and are optimized for caching and performance.
/api/birds/:slug/latest - Recent detections (max 200, cached 1 min)/api/birds/:slug/hourly - Hourly species breakdown for day (cached 5 min)/api/birds/:slug/daily - Daily detection counts (cached 5 min)/api/birds/:slug/detections/species - Species with counts (cached 5 min)/api/birds/:slug/photos - Photo metadata (cached 5 min)/api/birds/:slug/species/:species_slug/presence - Yearly activity grid (cached 24 hr)/api/birds/:slug/audio/:id - Pre-signed audio URLs (no cache)Frontend Website
Technology Stack
- •Static Generator: Eleventy v3.1.2 (11ty)
- •Styling: Tailwind CSS v3.4.13
- •Templating: Nunjucks
- •Hosting: Netlify (CDN + auto-deploy)
- •Analytics: Plausible (self-hosted)
Pages & Features
- •Homepage with stats and featured photos
- •Live detection feed (5-min auto-refresh)
- •Species index with detection counts
- •Species detail pages (photos, activity grid, audio)
- •Photo gallery with featured section
- •Advanced explore dashboard with charts
Data & Freshness
Note on Accuracy
While BirdNET is highly accurate, it's not perfect. Factors like background noise, overlapping calls, and similar-sounding species can affect identification accuracy. Confidence scores help indicate how reliable each detection is. For research use or rare-species confirmation, expert verification is recommended.