Processes passive acoustic monitoring (PAM) data to compute soundscape indices and detect species from audio recordings. Use this skill when the user mentions acoustic monitoring, bioacoustics, soundscape ecology, acoustic indices (ACI, NDSI, ADI), BirdNET, AudioMoth, bat detectors, dawn chorus analysis, passive acoustic recorders, species detection from audio, or sound diversity metrics.
Domain: Bioacoustics · Soundscape ecology · Acoustic indices · Species detection · PAM
Guides the agent through processing passive acoustic monitoring (PAM) recordings to compute soundscape biodiversity indices, detect species using automated classifiers, and analyse temporal trends in acoustic diversity. Covers ACI, BI, NDSI, H, ADI, and AEI index computation; BirdNET-based species detection with confidence thresholding; rarefaction-based richness estimation; and temporal trend analysis of soundscape composition.
Invoke this skill when:
trigger_keywords: acoustic monitoring, soundscape, bioacoustics, acoustic index, ACI, NDSI, BirdNET, bird detection, bat echolocation, passive acoustic, PAM, audio recording, species accumulation acoustic, acoustic diversity
| Input | Format | Required |
|---|---|---|
| Audio recordings directory | WAV or FLAC files | Required |
| Recording metadata CSV (site, date, time, recorder ID) | CSV | Required |
| Species list for filtering detections | TXT | Optional |
| Confidence threshold for species detection | Float 0–1 (default: 0.7) | Optional |
| Time resolution for index aggregation (minutes) | Integer (default: 1) | Optional |
| Output | Description |
|---|---|
acoustic_indices_timeseries.csv | ACI, BI, NDSI, H, ADI, AEI per recording per time step |
indices_summary.csv | Mean ± SD of each index per site and temporal stratum |
soundscape_plot.png | Heatmap: hour of day × day × index value |
detections_raw.csv | All BirdNET detections with confidence scores |
detections_filtered.csv | Detections above confidence threshold |
species_accumulation.csv | Cumulative species richness vs. recording hours |
detection_summary.png | Detections per species × date × site |
Validate recordings Check all files are WAV or FLAC, readable, and have consistent sample rates. Compute SNR for a random 10% sample. Flag files with SNR < 10 dB in metadata. Exclude flagged recordings from index computation.
Compute acoustic indices (invoke compute_acoustic_indices.R or .py)
Calculate ACI, BI, NDSI, H, ADI, AEI for each recording at the specified time
resolution. Aggregate to hourly and daily summaries.
Output: acoustic_indices_timeseries.csv.
Run automated species detection (invoke batch_species_detection.py)
Process all recordings with BirdNET-Analyzer CLI.
Filter detections by confidence threshold (default: 0.7).
Aggregate detections by species, date, and site.
Validate detections If the study region has a published BirdNET validation, apply region-specific precision/recall. If not, flag detections > 0.7 confidence as "probable" and require manual validation for species of conservation concern.
Compute species accumulation curve Use detection records to plot cumulative species vs. recording hours. Fit a Michaelis-Menten curve to estimate asymptotic richness. Flag sites with < 48h of recordings as potentially under-sampled.
Analyse temporal trends
Use environmental-time-series skill if trend analysis over months/years is needed.
For diel patterns: compute mean index by hour-of-day, plot soundscape fingerprint.
Validate outputs and record decisions
Confirm all output files are non-empty and timestamped.
Record SNR threshold, confidence threshold, and any excluded recordings in decision_log.md.
| Condition | Diagnosis | Recommended Action |
|---|---|---|
| SNR < 10 dB in a recording | Recording dominated by noise; indices unreliable | Exclude from index computation; document in metadata |
| BirdNET confidence < 0.7 | Low-confidence detection; likely false positive | Flag as "unconfirmed"; require manual validation before use in analyses |
| < 48h of recordings per site | Insufficient for rarefaction-based richness | Report observed richness only; note undersampling caveat |
| NDSI consistently > 0.8 | Soundscape dominated by biophony | Check for equipment artefact or very remote site; validate with spectrogram |
| NDSI consistently < -0.5 | Soundscape dominated by geophony or anthrophony | Investigate noise source; may mask biological signal in other indices |
Record the following in decision_log.md after running this skill:
R
suppressPackageStartupMessages(library(soundecology)) # acoustic indices (ACI, BI, NDSI, H, ADI, AEI)
suppressPackageStartupMessages(library(tuneR)) # WAV file reading
suppressPackageStartupMessages(library(seewave)) # spectrogram, SNR, dB computation
suppressPackageStartupMessages(library(dplyr)) # data manipulation
suppressPackageStartupMessages(library(ggplot2)) # plotting
suppressPackageStartupMessages(library(lubridate)) # datetime handling
Python
import librosa # audio loading, spectral features, ACI computation
import soundfile as sf # WAV/FLAC reading
import numpy as np # numerical operations
import pandas as pd # data manipulation
from pathlib import Path # file system
CLI
# BirdNET-Analyzer (must be installed separately)
python analyze.py --i <audio_dir> --o <output_dir> --min_conf 0.7
skills/acoustic-monitoring/resources/acoustic-indices-reference.md — Complete table of acoustic indices: formula, scale, interpretation, R packageskills/acoustic-monitoring/resources/species-id-tools-comparison.md — Comparison of BirdNET, RavenPro, Kaleidoscope, ARBIMON and validation protocolsskills/acoustic-monitoring/resources/soundscape-ecology-guide.md — NDSI framework, diel and seasonal controls, rarefaction, and data integration