Skip to main content

BirdNET-only inference package for ARIA (Acoustic Recognition for Inventories of Aviaries)

Project description

aria-inference-birdnet

BirdNET-only inference package for ARIA (Acoustic Recognition for Inventories of Aviaries).

This is the baseline detection system for the BioDCASE 2026 Challenge.

Installation

Requires Python 3.11 or 3.12.

pip install aria-inference-birdnet

This automatically installs BirdNET-Analyzer and all other dependencies.

Quick start

1. Download model files

aria-inference-birdnet download-models --dir ./models

This fetches the custom BirdNET classifier and species labels from GitHub Releases.

2. Run detection on an aviary

Each aviary has a different set of species. The aviary_config.json (provided with the challenge data) maps each aviary ID to its species list, so that predictions are filtered to only the species that can actually be present.

aria-inference-birdnet detect \
  --input aviary_1/ \
  --output predictions_aviary_1.csv \
  --model-dir ./models \
  --aviary-config aviary_config.json \
  --aviary aviary_1

3. List available aviaries

aria-inference-birdnet list-aviaries --aviary-config aviary_config.json

4. Python API

from pathlib import Path
from aria_inference_birdnet import run_detection

run_detection(
    input_path=Path("aviary_1/"),
    output_csv=Path("predictions_aviary_1.csv"),
    model_dir=Path("models/"),
    aviary_config=Path("aviary_config.json"),
    aviary_id="aviary_1",
)

How aviary filtering works

The aviary_config.json contains two things:

  • Wild birds: species common to all aviaries (e.g. House Sparrow, Common Blackbird). These are always included in predictions.
  • Per-aviary species: species that live in a specific aviary.

When you specify --aviary aviary_1, the detector only keeps predictions for that aviary's species plus wild birds. This removes false positives from species that are not present in the aviary.

Alternatively, you can use a flat species file with --allowed-species-file instead of the aviary config. This applies the same species list to all input audio regardless of aviary.

CLI reference

detect

Flag Default Description
--input (required) Audio file or directory
--output (required) Output CSV path
--model-dir (required) Directory with model files
--aviary-config None Path to aviary_config.json
--aviary None Aviary ID (e.g. aviary_1). Requires --aviary-config
--allowed-species-file None Flat species whitelist (alternative to aviary config)
--min-confidence 0.05 Global confidence cutoff
--temperature 1.8 Confidence scaling (T>1 reduces saturation)
--overlap 0.0 Window overlap in seconds
--threads 4 CPU threads
--topk 3 Max species per window (0=disable)
--eval-csv (auto) Per-class threshold CSV

download-models

Flag Default Description
--dir (required) Local directory for model files
--skip-optional False Skip the evaluation CSV

list-aviaries

Flag Default Description
--aviary-config (required) Path to aviary_config.json

Pipeline stages

  1. BirdNET analysis – runs birdnet_analyzer.analyze on the input audio
  2. Species filtering – keeps only species present in the aviary (from config) or in the allowed-species file
  3. Temperature scaling – calibrates over-saturated confidences (T=1.8 by default)
  4. CSV merging – combines per-file result CSVs into one
  5. Per-class thresholds – applies optimal thresholds from training evaluation (if available)
  6. Top-K filtering – keeps at most K species per 3-second window

Output format

File name,Start (s),End (s),Scientific name,Common name,Confidence
recording_001.wav,0.0,3.0,Phoenicopterus roseus,Greater Flamingo,0.8734
recording_001.wav,3.0,6.0,Bostrychia hagedash,Hadada Ibis,0.7521

Notes

  • This package is inference-only. It does not include training, data fetching, or segmentation.
  • Model binaries are hosted as GitHub Release assets to keep the pip package small.
  • Python 3.10 is not supported because birdnet-analyzer requires ≥3.11.

License

Apache-2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aria_inference_birdnet-0.1.4.tar.gz (19.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aria_inference_birdnet-0.1.4-py3-none-any.whl (20.2 kB view details)

Uploaded Python 3

File details

Details for the file aria_inference_birdnet-0.1.4.tar.gz.

File metadata

  • Download URL: aria_inference_birdnet-0.1.4.tar.gz
  • Upload date:
  • Size: 19.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for aria_inference_birdnet-0.1.4.tar.gz
Algorithm Hash digest
SHA256 e881774457221118d07aec8790db79d52cb7ab1da5d6717267aebf03711e9f3f
MD5 aecfba3c20489582c3fecff53d4aa095
BLAKE2b-256 b212cae2b48539e0f296db1243da6590234f61a7954630a41720b052e8ea11a6

See more details on using hashes here.

Provenance

The following attestation bundles were made for aria_inference_birdnet-0.1.4.tar.gz:

Publisher: publish.yml on ml4biodiversity/aria-inference-birdnet

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aria_inference_birdnet-0.1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for aria_inference_birdnet-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 cd26b26f63ee9f39e03d9a8e486e3b37f085137b7b698d86a7beecc8145203ce
MD5 fe2f603808a0c7e217e3376cedf4028b
BLAKE2b-256 28e39e07f4ece6544db8acb971a0b5bfd98e2796e362372f2f53a915e420e960

See more details on using hashes here.

Provenance

The following attestation bundles were made for aria_inference_birdnet-0.1.4-py3-none-any.whl:

Publisher: publish.yml on ml4biodiversity/aria-inference-birdnet

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page