Lab 6 · BirdNET on a Dawn Chorus

Worth: 20 points  |  Due: end of Day 3  |  Files to submit: birdnet_detections.csv, calibration.png, species_accumulation.png, and a 1-page PDF.
Pre-reading: Bioacoustics tutorial, BirdNET section.

Biological motivation

Passive acoustic monitoring is now the cheapest way to survey a forest. BirdNET makes it feasible to process months of recordings in days. But raw BirdNET output is not a species list — it's a list of candidate detections that need to be calibrated against ground truth before any inference. This lab teaches you that calibration step.

Data

Get the data: aiecol_audio.zip (98 MB) — or the full bundle aiecol_data_sample.zip (395 MB). See the downloads page for layout.

Provided in data/dawn_chorus/:

Tasks

Task 1 — run BirdNET (3 pts)

Run run_birdnet.py on the six recordings, using the site's lat/lon/week, with min_conf=0.1 (intentionally low so we have plenty to calibrate). Save to birdnet_detections.csv.

Task 2 — species accumulation curve (4 pts)

For each of the 24 1-hour windows, compute the cumulative number of distinct species detected at confidence ≥ 0.5, ≥ 0.7, and ≥ 0.9. Plot all three curves on one figure (species_accumulation.png).

Task 3 — calibrate against truth (8 pts)

Join BirdNET detections to the hand-labeled clips by overlapping time intervals. For each of the 6 most-common species in your truth set:

Task 4 — interpretation (5 pts)

In 250 words: which species need a high threshold to be trustworthy, and which can be trusted at lower thresholds? Are there species where no threshold gives precision ≥ 0.9? What would you do for those species in a manuscript?

Go-further

Repeat the calibration restricting to detections within 30 min of sunrise. Does BirdNET get sharper during peak vocalization, or noisier?

Rubric

ComponentPoints
BirdNET pipeline runs cleanly3
Species accumulation curves4
Per-species calibration P-R curves and thresholds8
Interpretation5
Total20