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
- BirdNET analysis – runs
birdnet_analyzer.analyzeon the input audio - Species filtering – keeps only species present in the aviary (from config) or in the allowed-species file
- Temperature scaling – calibrates over-saturated confidences (T=1.8 by default)
- CSV merging – combines per-file result CSVs into one
- Per-class thresholds – applies optimal thresholds from training evaluation (if available)
- 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e881774457221118d07aec8790db79d52cb7ab1da5d6717267aebf03711e9f3f
|
|
| MD5 |
aecfba3c20489582c3fecff53d4aa095
|
|
| BLAKE2b-256 |
b212cae2b48539e0f296db1243da6590234f61a7954630a41720b052e8ea11a6
|
Provenance
The following attestation bundles were made for aria_inference_birdnet-0.1.4.tar.gz:
Publisher:
publish.yml on ml4biodiversity/aria-inference-birdnet
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aria_inference_birdnet-0.1.4.tar.gz -
Subject digest:
e881774457221118d07aec8790db79d52cb7ab1da5d6717267aebf03711e9f3f - Sigstore transparency entry: 1191466525
- Sigstore integration time:
-
Permalink:
ml4biodiversity/aria-inference-birdnet@12d87e0b8a540c1c15351f4df21e5d8da031cc99 -
Branch / Tag:
refs/tags/v0.1.4 - Owner: https://github.com/ml4biodiversity
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@12d87e0b8a540c1c15351f4df21e5d8da031cc99 -
Trigger Event:
push
-
Statement type:
File details
Details for the file aria_inference_birdnet-0.1.4-py3-none-any.whl.
File metadata
- Download URL: aria_inference_birdnet-0.1.4-py3-none-any.whl
- Upload date:
- Size: 20.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cd26b26f63ee9f39e03d9a8e486e3b37f085137b7b698d86a7beecc8145203ce
|
|
| MD5 |
fe2f603808a0c7e217e3376cedf4028b
|
|
| BLAKE2b-256 |
28e39e07f4ece6544db8acb971a0b5bfd98e2796e362372f2f53a915e420e960
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aria_inference_birdnet-0.1.4-py3-none-any.whl -
Subject digest:
cd26b26f63ee9f39e03d9a8e486e3b37f085137b7b698d86a7beecc8145203ce - Sigstore transparency entry: 1191466527
- Sigstore integration time:
-
Permalink:
ml4biodiversity/aria-inference-birdnet@12d87e0b8a540c1c15351f4df21e5d8da031cc99 -
Branch / Tag:
refs/tags/v0.1.4 - Owner: https://github.com/ml4biodiversity
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@12d87e0b8a540c1c15351f4df21e5d8da031cc99 -
Trigger Event:
push
-
Statement type: