BirdNET v3.0 Models (GPU-native full + regional catalog)
BirdNET+ V3.0 (developer preview 3.1) 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.
Developer preview. These are preview3.1 models for research and evaluation. See
TERMS_OF_USE.txt(CC BY-SA 4.0; no poaching or military use).
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: EfficientNetV2-S backbone, three-head classifier, 11,560 species. Base preview models are distributed by the BirdNET team on Zenodo.
The GPU-native conversion and the regional slicing in this repo are derived work under CC BY-SA 4.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 is fully supported on ONNX Runtime CPU,
OpenVINO (x86 + Intel GPU), CUDA, and TensorRT. On multi-threaded CPU it is also
slightly faster than the stock model (ORT's STFT op is poorly parallelized). 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,560]
and embeddings [batch, 1280].
Variants and hardware
| precision | best for |
|---|---|
_fp32 |
run this everywhere: CPU (ORT + OpenVINO), CUDA/TensorRT, Intel GPU |
_fp16 |
half the download; GPU speed win. Not a CPU win (see below) |
FP16 is a download-size lever, not a CPU one. ONNX Runtime upconverts FP16 weights at inference, so on CPU (x86 and ARM alike) FP16 is equal to or slower than FP32, and on a Raspberry Pi 4 it uses more RAM than FP32. For low-RAM CPU devices the right choice is a regional FP32 model, not FP16.
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.
Measured (batch 1, 5 s window)
| device | full fp32 | regional fp32 (nordic) | peak RAM full / regional |
|---|---|---|---|
| RPi5, OpenVINO | 168 ms | 128 ms | - |
| RPi5, ORT 4 threads | 363 ms | 253 ms | 685 MB / 229 MB |
| RPi4B, ORT 4 threads | 874 ms | 743 ms | 688 MB / 236 MB |
| x86 i7-1260P, ORT 4 threads | 70 ms | 59 ms | - |
OpenVINO is 2.2x faster than ONNX Runtime on a Raspberry Pi 5. Batching helps
only on a GPU (1.5x at batch 8, FP16); on CPU use batch 1.
Full model
| file | classes | MB |
|---|---|---|
full/birdnet-v3.0-preview3.1-fp32-b1.onnx |
11,560 | 557 |
full/birdnet-v3.0-preview3.1-fp16-b1.onnx |
11,560 | 279 |
full/birdnet-v3.0-preview3.1-labels-b1.txt |
11,560 | - |
Why regional models
The three-head classifier is 80% of the model's parameters, so restricting it to
a region's species set cuts memory a lot (**67% less RAM**: 685 MB -> 229 MB on a
Raspberry Pi 5) and latency modestly (15-30%). The parameters live in the
heads, but the convolutional backbone still does most of the arithmetic, so the
headline win is footprint rather than speed. That is exactly what an always-on
detector on a phone or single-board computer needs. 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 range filter
(top ~800 by occurrence probability + a cosmopolitan core), using the same tiles
as the Perch v2 regional catalog.
Regional catalog
Each tile ships _fp32.onnx (runs on OpenVINO/GPU/CPU) + labels + indices +
coverage.png + metadata.json. regional/groups.json lists the continent
grouping.
Europe
| region | coverage | classes | fp32 MB | fp16 MB |
|---|---|---|---|---|
azores |
![]() |
224 | 127.5 | 63.9 |
baltics |
![]() |
438 | 135.6 | 68.0 |
british-isles |
![]() |
559 | 140.2 | 70.3 |
canary-islands |
![]() |
388 | 133.7 | 67.0 |
central-europe |
![]() |
644 | 143.4 | 71.9 |
eastern-europe |
![]() |
518 | 138.6 | 69.5 |
iberia |
![]() |
627 | 142.8 | 71.6 |
iceland |
![]() |
391 | 133.8 | 67.1 |
madeira |
![]() |
255 | 128.7 | 64.5 |
nordic |
![]() |
422 | 135.0 | 67.7 |
southern-europe |
![]() |
616 | 142.3 | 71.4 |
svalbard |
![]() |
280 | 129.6 | 65.0 |
western-palearctic |
![]() |
801 | 149.4 | 74.9 |
Asia
| region | coverage | classes | fp32 MB | fp16 MB |
|---|---|---|---|---|
china-north-central |
![]() |
752 | 147.5 | 73.9 |
china-northeast |
![]() |
650 | 143.6 | 72.0 |
china-southeast |
![]() |
808 | 149.6 | 75.0 |
china-southwest |
![]() |
816 | 149.9 | 75.1 |
himalaya |
![]() |
812 | 149.8 | 75.1 |
indo-gangetic |
![]() |
814 | 149.8 | 75.1 |
japan |
![]() |
577 | 140.9 | 70.6 |
south-asia-peninsular |
![]() |
644 | 143.4 | 71.9 |
tibet |
![]() |
811 | 149.7 | 75.1 |
North America
| region | coverage | classes | fp32 MB | fp16 MB |
|---|---|---|---|---|
north-america-east |
![]() |
800 | 149.3 | 74.8 |
north-america-west |
![]() |
802 | 149.4 | 74.9 |
South America
| region | coverage | classes | fp32 MB | fp16 MB |
|---|---|---|---|---|
amazonia |
![]() |
809 | 149.7 | 75.0 |
andes |
![]() |
809 | 149.7 | 75.0 |
eastern-brazil |
![]() |
812 | 149.8 | 75.1 |
galapagos |
![]() |
136 | 124.1 | 62.3 |
southern-cone |
![]() |
807 | 149.6 | 75.0 |
Africa
| region | coverage | classes | fp32 MB | fp16 MB |
|---|---|---|---|---|
cape-verde |
![]() |
143 | 124.4 | 62.4 |
mauritius |
![]() |
72 | 121.7 | 61.0 |
reunion |
![]() |
73 | 121.8 | 61.1 |
sao-tome-principe |
![]() |
110 | 123.2 | 61.8 |
seychelles |
![]() |
115 | 123.3 | 61.9 |
southern-africa |
![]() |
802 | 149.4 | 74.9 |
Oceania
| region | coverage | classes | fp32 MB | fp16 MB |
|---|---|---|---|---|
australia-east |
![]() |
708 | 145.8 | 73.1 |
hawaii |
![]() |
272 | 129.3 | 64.8 |
new-caledonia |
![]() |
168 | 125.4 | 62.9 |
new-zealand |
![]() |
266 | 129.1 | 64.7 |
File naming and versioning
Files are named birdnet-<upstream>-[<region>-]<variant>-b<build>.onnx, where
upstream is the BirdNET release these weights come from (v3.0-preview3.1) and
build is this repo's build revision of that conversion. A new upstream release
or a new conversion always gets a new filename; a published file's bytes never
change. models.json is the machine-readable index: it lists every file with its
variant, checksum, input contract, and which backends it actually runs on
(including where a backend is not supported), plus a selection map from
hardware/backend to the file to download.
Deployment
- Point your host at a tile's model + its
_labels.txt(matching counts) and restart. Labels areScientific 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.






































