BirdNET+ V3.0 (GPU-native full + regional catalog)
BirdNET+ V3.0 acoustic classifier, re-exported to a GPU-native ONNX graph, plus a catalog of region-specific slices that are much smaller while staying numerically identical to the full model on the species they keep.
Licence and terms
Each release came with its own upstream terms, listed here with its licence. The repo-level licence tag is the current release's.
- BirdNET+ V3.0 (
birdnet-plus-v3.0), Apache-2.0: the Apache-2.0 model licence and acceptable-use guidance of the BirdNET+ V3.0 release (Zenodo, https://doi.org/10.5281/zenodo.24162518),LICENSE-v3.0.mdandACCEPTABLE_USE-v3.0.mdat the repo root, unchanged from upstream.
Origin and attribution
Powered by BirdNET (https://birdnet.cornell.edu/). BirdNET+ V3.0 is developed by the K. Lisa Yang Center for Conservation Bioacoustics (Cornell University), Chemnitz University of Technology, and the Museum fuer Naturkunde Berlin. It builds on Kahl et al. (2021) and Lasseck (2018). Architecture of this release: EfficientNetV2-S backbone, three-head classifier, 11,725 classes.
The GPU-native conversion and the regional slicing in this repo are derived work under Apache-2.0.
Releases in this repo
The current release is BirdNET+ V3.0 (birdnet-plus-v3.0).
What "GPU-native" means
The BirdNET team's ONNX export computes its log-mel front-end with an in-graph
ONNX STFT op. ONNX Runtime has no CUDA/TensorRT kernel for STFT, and OpenVINO
cannot translate it at all, so the stock export cannot run on GPU or OpenVINO. In
these models the STFT is replaced with a mathematically equivalent Conv1d
(framing + windowed DFT), so the graph holds no op those runtimes lack.
Every file was run on ONNX Runtime CPU (x86-64 and a Raspberry Pi 5) and on OpenVINO at f32 (CPU on both, and an Intel integrated GPU), and its scores were compared with the x86-64 ONNX Runtime scores of the same file; the manifest's supported and verified_on follow those runs. OpenVINO must run at f32: its default f16 hint gives wrong scores on the Cortex-A76 and on Intel GPUs. It is not recommended: its margin over ONNX Runtime CPU was 7% at most where it was measured. The CUDA and TensorRT entries were not run for this release. One model serves CPU and GPU; there is no separate CPU/GPU
build.
Input: raw audio [batch, 160000] (5 s @ 32 kHz, matching Perch v2 so a host
can feed both classifiers the same buffer). Outputs: predictions [batch, 11,725]
(a static dimension, sigmoid already applied) and embeddings [batch, 1280].
Variants and hardware
| precision | best for |
|---|---|
-fp32- |
run this: ONNX Runtime and OpenVINO (BirdNET-Go runs v3.0 at f32 on every OpenVINO device) |
This release ships FP32 only. For low-RAM CPU devices the right choice is a regional FP32 model.
int8-arm is not shipped for v3.0: the backbone is Conv-dominated and int8-arm only quantizes MatMul/Gemm weights, so it barely helps here.
Full model
| file | classes | MB |
|---|---|---|
full/birdnet-plus-v3.0-fp32-b1.onnx |
11,725 | 361 |
full/birdnet-plus-v3.0-labels-b1.txt |
11,725 | - |
Why regional models
The three-head classifier holds a large share of the model's parameters, so restricting it to a region's species set cuts memory and download size. Each tile is numerically identical to the full model on the species it keeps (max abs difference vs the full model < 1e-6); the only change is that out-of-region species are not emitted, which at a fixed monitoring location is exactly what you want. Region species sets come from the BirdNET Geomodel v3.0.2 range filter (species by occurrence probability, up to a per-tile cap, plus a cosmopolitan core), using the same tiles as the Perch v2 regional catalog. The cap is 800 for most temperate tiles and higher for species-rich ones. Every tile also contains Homo sapiens and the release's non-animal sound classes, whatever its range filter says.
A species the geomodel names differently from the classifier (a moved genus, a changed spelling) is matched through a reviewed rename table, so the tiles keep species an exact name match would have dropped.
Regional catalog
Each tile ships an fp32 model + labels + indices + coverage.png +
metadata. regional/groups.json lists the continent grouping.
Europe
| region | coverage | classes | fp32 MB |
|---|---|---|---|
azores |
![]() |
242 | 113.7 |
baltics |
![]() |
460 | 118.4 |
british-isles |
![]() |
579 | 121.0 |
canary-islands |
![]() |
412 | 117.4 |
central-europe |
![]() |
667 | 122.9 |
eastern-europe |
![]() |
540 | 120.1 |
iberia |
![]() |
649 | 122.5 |
iceland |
![]() |
409 | 117.3 |
madeira |
![]() |
274 | 114.4 |
nordic |
![]() |
443 | 118.0 |
southern-europe |
![]() |
638 | 122.2 |
svalbard |
![]() |
298 | 114.9 |
western-palearctic |
![]() |
1418 | 139.0 |
Asia
| region | coverage | classes | fp32 MB |
|---|---|---|---|
china-north-central |
![]() |
791 | 125.5 |
china-northeast |
![]() |
688 | 123.3 |
china-southeast |
![]() |
1178 | 133.9 |
china-southwest |
![]() |
1228 | 134.9 |
himalaya |
![]() |
1226 | 134.9 |
indo-gangetic |
![]() |
1199 | 134.3 |
japan |
![]() |
609 | 121.6 |
south-asia-peninsular |
![]() |
671 | 122.9 |
tibet |
![]() |
1226 | 134.9 |
North America
| region | coverage | classes | fp32 MB |
|---|---|---|---|
canada-alaska |
![]() |
777 | 125.2 |
north-america-east |
![]() |
818 | 126.1 |
north-america-west |
![]() |
821 | 126.2 |
South America
| region | coverage | classes | fp32 MB |
|---|---|---|---|
amazonia |
![]() |
3182 | 177.0 |
andes |
![]() |
3314 | 179.8 |
eastern-brazil |
![]() |
1972 | 150.9 |
galapagos |
![]() |
156 | 111.9 |
southern-cone |
![]() |
1639 | 143.8 |
Africa
| region | coverage | classes | fp32 MB |
|---|---|---|---|
cape-verde |
![]() |
162 | 112.0 |
central-africa |
![]() |
1537 | 141.6 |
east-africa |
![]() |
1824 | 147.8 |
mauritius |
![]() |
90 | 110.4 |
reunion |
![]() |
92 | 110.5 |
sao-tome-principe |
![]() |
133 | 111.4 |
seychelles |
![]() |
137 | 111.4 |
southern-africa |
![]() |
820 | 126.1 |
west-africa |
![]() |
1027 | 130.6 |
Oceania
| region | coverage | classes | fp32 MB |
|---|---|---|---|
australia-east |
![]() |
757 | 124.8 |
hawaii |
![]() |
294 | 114.8 |
new-caledonia |
![]() |
190 | 112.6 |
new-zealand |
![]() |
289 | 114.7 |
Deployment
- Point your host at a tile's model + its labels file (matching counts) and
restart. Labels are
Scientific name_Common name. - Confidence is a per-class sigmoid; slicing does not change a kept class's score (unlike a softmax model), so thresholds transfer directly from the full model.
- Binaries are hosted here on HuggingFace; the derivation tooling lives separately.










































