Skip to content
Merged
Show file tree
Hide file tree
Changes from 28 commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
edc87f3
Add BirdNET-Gemodel 3.0
Josef-Haupt May 5, 2026
7b1aef3
Added PB Geomodel
Josef-Haupt May 5, 2026
be7e70e
Updated model-specific year-round week handling
Josef-Haupt May 7, 2026
cfdde20
updated tests and ci to catch log files
Josef-Haupt May 8, 2026
c839b0e
allow redirects again
Josef-Haupt May 8, 2026
ec9fafe
review suggestions
Josef-Haupt May 9, 2026
6ec751d
add variables for languages
stefantaubert May 10, 2026
7e3d2f3
Remove version check from geo/inference/session.py to backends
Josef-Haupt May 11, 2026
2207ae8
Merge branch 'geomodel-3.0' of https://github.com/birdnet-team/birdne…
Josef-Haupt May 11, 2026
5638d34
Added tensorflow validation to perch + skip 3.0 geomodel tests with i…
Josef-Haupt May 11, 2026
408d5ce
Allo ai-edge-litert>=2.1.4 install, but disable geomodel litert tests…
Josef-Haupt May 11, 2026
532e6f0
initial
Josef-Haupt May 11, 2026
f7990b2
updated paths in pkg docs
Josef-Haupt May 11, 2026
a004d3a
updated docs to current pkg structure
Josef-Haupt May 12, 2026
c41eada
limit ai_edge_litert install to available platforms
Josef-Haupt May 12, 2026
6c64243
try to fix ruff warnings + simple geo session test
Josef-Haupt May 12, 2026
f817df1
Merge remote-tracking branch 'origin/main' into geomodel-3.0
Josef-Haupt May 12, 2026
0d07b47
comply with PEP 639
Josef-Haupt May 12, 2026
b5f0514
fix potential racecondition when downloading models
Josef-Haupt May 12, 2026
d340093
Merge branch 'geomodel-3.0' into birdnet-3
Josef-Haupt May 12, 2026
4757d95
tests
Josef-Haupt May 12, 2026
edeb7c3
update closeness test values + streaminlined taxonomy
Josef-Haupt May 14, 2026
e21603f
streamline taxonomy
Josef-Haupt May 14, 2026
589b2ab
updated actions in github workflows
Josef-Haupt May 14, 2026
663f49a
copilot suggestion
Josef-Haupt Jun 15, 2026
029a937
copilot suggestions 2
Josef-Haupt Jun 15, 2026
245f2cb
Potential fix for pull request finding
Josef-Haupt Jun 15, 2026
d4776be
Merge pull request #47 from birdnet-team/birdnet-3
Josef-Haupt Jun 15, 2026
87f654f
f string
Josef-Haupt Jun 15, 2026
02a3fac
annotations
Josef-Haupt Jun 15, 2026
96b3b1c
more verbose error msg + updated onnx filesize
Josef-Haupt Jun 15, 2026
39cbc19
preview 3 models initial
Josef-Haupt Jun 22, 2026
c030f90
updated pt indices
Josef-Haupt Jun 24, 2026
10728c8
more verbose error messages
Josef-Haupt Jun 24, 2026
0c33dee
more tests + small fixes
Josef-Haupt Jun 26, 2026
ac3c977
fix download check ordering
Josef-Haupt Jul 1, 2026
3636ef9
potential fix for kagglehub exception
Josef-Haupt Jul 1, 2026
7aa4012
remove kagglehub dependency
Josef-Haupt Jul 1, 2026
9c4d366
Merge remote-tracking branch 'origin/main' into geomodel-3.0
Josef-Haupt Jul 3, 2026
a7fcdf3
copilot suggestions
Josef-Haupt Jul 3, 2026
a066421
restore
Josef-Haupt Jul 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 34 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
fetch-depth: 2

Expand All @@ -56,7 +56,7 @@ jobs:
choco install libsndfile

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}

Expand Down Expand Up @@ -92,7 +92,38 @@ jobs:

- name: Upload results to Codecov
if: matrix.os == 'ubuntu-24.04' && matrix.python-version == '3.12'
uses: codecov/codecov-action@v5
uses: codecov/codecov-action@v6
with:
token: ${{ secrets.CODECOV_TOKEN }}
slug: birdnet-team/birdnet

- name: Extract log path
id: extract-log-path
shell: pwsh
run: |
$logPaths = @()

if (Test-Path output.log) {
$output = Get-Content output.log -Raw
$pattern = '(?<path>(?:[A-Za-z]:\\|/)[^\r\n]*?\.log)'
$logPaths = [regex]::Matches($output, $pattern) |
ForEach-Object { $_.Groups['path'].Value } |
Sort-Object -Unique |
Where-Object { Test-Path $_ -PathType Leaf }
}

if ($logPaths.Count -gt 0) {
"log_paths<<EOF" | Out-File -FilePath $env:GITHUB_OUTPUT -Append -Encoding utf8
$logPaths | Out-File -FilePath $env:GITHUB_OUTPUT -Append -Encoding utf8
"EOF" | Out-File -FilePath $env:GITHUB_OUTPUT -Append -Encoding utf8
}
else {
"log_paths=" | Out-File -FilePath $env:GITHUB_OUTPUT -Append -Encoding utf8
}

- name: Upload log file
if: failure() && steps.extract-log-path.outputs.log_paths != ''
uses: actions/upload-artifact@v7
with:
name: birdnet-log
path: ${{ steps.extract-log-path.outputs.log_paths }}
8 changes: 4 additions & 4 deletions .github/workflows/documentation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6

- uses: actions/setup-python@v5
- uses: actions/setup-python@v6
with:
python-version: "3.12"

Expand All @@ -31,7 +31,7 @@ jobs:
run: sphinx-build -b html docs/ docs/_build/html -j auto

- name: Upload pages artifact
uses: actions/upload-pages-artifact@v3
uses: actions/upload-pages-artifact@v5
with:
path: docs/_build/html

Expand All @@ -55,4 +55,4 @@ jobs:
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
uses: actions/deploy-pages@v5
16 changes: 11 additions & 5 deletions docs/benchmarking.rst
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
Benchmarking using command-line tool
============
====================================

This page provides information on benchmarking BirdNET's performance on different hardware configurations. For some real world benchmark results, see :doc:`Comparative benchmarking results <benchmarking_results>`.

.. toctree::
:hidden:

benchmarking_results

.. note::

The information provided here is not up-to-date with the latest developments in the BirdNET library.
Expand All @@ -20,7 +25,8 @@ Example usage
- Use Protobuf backend: ``birdnet-benchmark soundscape.wav -b "pb"``
- Output predictions for top 10 species: ``birdnet-benchmark soundscape.wav --top-k 10 --confidence -100``
- Run on GPU: ``birdnet-benchmark soundscape.wav --backend "pb" --worker 1 --device "GPU" --batch-size 1000``
- To determine the largest possible batch size, you must experiment with several values. On a GPU with 24 GB of VRAM, a batch size of roughly 1,000 usually works well. If the batch size is set too high, the pipeline will abort with a runtime error ("Analysis was cancelled due to an error."), and the log will state that the GPU ran out of memory.

To determine the largest possible batch size, you must experiment with several values. On a GPU with 24 GB of VRAM, a batch size of roughly 1,000 usually works well. If the batch size is set too high, the pipeline will abort with a runtime error ("Analysis was cancelled due to an error."), and the log will state that the GPU ran out of memory.
- Run on three GPUs: ``birdnet-benchmark soundscape.wav --backend "pb" --worker 3 --device "GPU:0" "GPU:1" "GPU:2" --batch-size 1000``
- Increase amount of *Producers*: ``birdnet-benchmark soundscape.wav --producers 2``
- Increase *Buffer* size to 3 * *Worker*: ``birdnet-benchmark soundscape.wav --prefetch-ratio 2``
Expand Down Expand Up @@ -70,7 +76,7 @@ Example output on Linux:


Interpretation of runtime metrics
--------------------------------
---------------------------------

During analysis, performance indicators are updated and printed once per second.

Expand Down Expand Up @@ -109,15 +115,15 @@ Example log line::


Typical bottlenecks and mitigation measures
^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* **High WAIT values or empty buffer** – Increase the number of *Producers*. If insufficient, use faster storage (NVMe/SSD) or reduce *Workers*.
* **BUSY < Worker count** – Typically an I/O bottleneck. Apply steps above.
* **Cache effect** – OS file caching boosts SPEED significantly on the second pass. For benchmarking, use only runs starting from the second pass.


Metrics after completion
-----
------------------------

After analysis completes, the benchmark tool reports:

Expand Down
12 changes: 6 additions & 6 deletions docs/benchmarking_results.rst
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Comparative benchmarking results
===================
================================

.. contents::
:local:
Expand All @@ -14,7 +14,7 @@ Run 10 h WAV-files on Intel i7-8565U (4-Core, 16 GB RAM, Windows 10)

**Result:** 49 × real-time (RTF: 0.02047110)

.. code-block:: txt
.. code-block:: text

$ birdnet-benchmark test-dataset/test_dataset_100x60min -p 5

Expand Down Expand Up @@ -52,7 +52,7 @@ Run 100 h WAV-files on AMD Ryzen 7 3800X (8-Core, 64 GB RAM, Linux)

**Result:** 416 × real-time (RTF: 0.00240288)

.. code-block:: txt
.. code-block:: text

$ birdnet-benchmark test-dataset/test_dataset_100x60min -f

Expand Down Expand Up @@ -92,13 +92,13 @@ Run 100 h WAV-files on NVIDIA Titan RTX (24 GB, Linux)

Disk speed:

.. code-block:: txt
.. code-block:: text

$ sudo hdparm -tT /dev/nvme0n1
Timing cached reads: 27324 MB in 1.99 seconds = 13707.90 MB/sec
Timing buffered disk reads: 6880 MB in 3.00 seconds = 2293.17 MB/sec

.. code-block:: txt
.. code-block:: text

$ birdnet-benchmark test-dataset/test_dataset_100x60min --device GPU --backend pb -w 1 -p 5 -s 1025 --prefetch-ratio 5

Expand Down Expand Up @@ -137,7 +137,7 @@ Run 100 h FLAC-files on NVIDIA Titan RTX (24 GB, Linux)

**Result:** 2487 × real-time (RTF: 0.00040214)

.. code-block:: txt
.. code-block:: text

$ birdnet-benchmark test-dataset/test_dataset_100x60min_flac --device GPU --backend pb -w 1 -p 5 -s 1025

Expand Down
45 changes: 45 additions & 0 deletions docs/birdnet.acoustic.inference.core.encoding.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
birdnet.acoustic.inference.core.encoding package
================================================

Submodules
----------

birdnet.acoustic.inference.core.encoding.encoding\_benchmarking module
----------------------------------------------------------------------

.. automodule:: birdnet.acoustic.inference.core.encoding.encoding_benchmarking
:members:
:show-inheritance:
:undoc-members:

birdnet.acoustic.inference.core.encoding.encoding\_result module
----------------------------------------------------------------

.. automodule:: birdnet.acoustic.inference.core.encoding.encoding_result
:members:
:show-inheritance:
:undoc-members:

birdnet.acoustic.inference.core.encoding.encoding\_tensor module
----------------------------------------------------------------

.. automodule:: birdnet.acoustic.inference.core.encoding.encoding_tensor
:members:
:show-inheritance:
:undoc-members:

birdnet.acoustic.inference.core.encoding.encoding\_worker module
----------------------------------------------------------------

.. automodule:: birdnet.acoustic.inference.core.encoding.encoding_worker
:members:
:show-inheritance:
:undoc-members:

Module contents
---------------

.. automodule:: birdnet.acoustic.inference.core.encoding
:members:
:show-inheritance:
:undoc-members:
45 changes: 45 additions & 0 deletions docs/birdnet.acoustic.inference.core.prediction.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
birdnet.acoustic.inference.core.prediction package
==================================================

Submodules
----------

birdnet.acoustic.inference.core.prediction.prediction\_benchmarking module
---------------------------------------------------------------------------

.. automodule:: birdnet.acoustic.inference.core.prediction.prediction_benchmarking
:members:
:show-inheritance:
:undoc-members:

birdnet.acoustic.inference.core.prediction.prediction\_result module
---------------------------------------------------------------------

.. automodule:: birdnet.acoustic.inference.core.prediction.prediction_result
:members:
:show-inheritance:
:undoc-members:

birdnet.acoustic.inference.core.prediction.prediction\_tensor module
---------------------------------------------------------------------

.. automodule:: birdnet.acoustic.inference.core.prediction.prediction_tensor
:members:
:show-inheritance:
:undoc-members:

birdnet.acoustic.inference.core.prediction.prediction\_worker module
---------------------------------------------------------------------

.. automodule:: birdnet.acoustic.inference.core.prediction.prediction_worker
:members:
:show-inheritance:
:undoc-members:

Module contents
---------------

.. automodule:: birdnet.acoustic.inference.core.prediction
:members:
:show-inheritance:
:undoc-members:
86 changes: 86 additions & 0 deletions docs/birdnet.acoustic.inference.core.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
birdnet.acoustic.inference.core package
=======================================

Subpackages
-----------

.. toctree::
:maxdepth: 4

birdnet.acoustic.inference.core.encoding
birdnet.acoustic.inference.core.prediction

Submodules
----------

birdnet.acoustic.inference.core.benchmarking module
---------------------------------------------------

.. automodule:: birdnet.acoustic.inference.core.benchmarking
:members:
:show-inheritance:
:undoc-members:

birdnet.acoustic.inference.core.consumer module
-----------------------------------------------

.. automodule:: birdnet.acoustic.inference.core.consumer
:members:
:show-inheritance:
:undoc-members:

birdnet.acoustic.inference.core.input\_analyzer module
------------------------------------------------------

.. automodule:: birdnet.acoustic.inference.core.input_analyzer
:members:
:show-inheritance:
:undoc-members:

birdnet.acoustic.inference.core.perf\_tracker module
----------------------------------------------------

.. automodule:: birdnet.acoustic.inference.core.perf_tracker
:members:
:show-inheritance:
:undoc-members:

birdnet.acoustic.inference.core.producer module
-----------------------------------------------

.. automodule:: birdnet.acoustic.inference.core.producer
:members:
:show-inheritance:
:undoc-members:

birdnet.acoustic.inference.core.result\_base module
---------------------------------------------------

.. automodule:: birdnet.acoustic.inference.core.result_base
:members:
:show-inheritance:
:undoc-members:

birdnet.acoustic.inference.core.tensor module
---------------------------------------------

.. automodule:: birdnet.acoustic.inference.core.tensor
:members:
:show-inheritance:
:undoc-members:

birdnet.acoustic.inference.core.worker module
---------------------------------------------

.. automodule:: birdnet.acoustic.inference.core.worker
:members:
:show-inheritance:
:undoc-members:

Module contents
---------------

.. automodule:: birdnet.acoustic.inference.core
:members:
:show-inheritance:
:undoc-members:
Loading
Loading