Skip to content

BirdNET‐Go Guide

Tomi P. Hakala edited this page Dec 27, 2023 · 9 revisions

BirdNET-Go is an application inspired by BirdNET-Pi and BirdNET Analyzer. It aims to be a high-performance and easy-to-deploy alternative to both of these.

BirdNET-Go Features

  • Audio analysis based on the BirdNET 2.4 tflite model
  • 24/7 real-time analysis of soundcard capture
  • Real-time analysis output compatible with OBS chat log input for wildlife streams
  • BirdWeather API support for real-time analysis
  • File analysis of WAV files
  • Analysis output options: Raven table, CSV file, SQLite, or MySQL database
  • Localized species labels, thanks to translations by Patrick Levin
  • Runs on Windows, Linux (including Raspberry Pi), and macOS
  • Minimal runtime dependencies; the BirdNET TensorFlow Lite model and other supporting files are embedded in the executable

Supported Platforms

BirdNET-Go has been successfully tested on:

  • Raspberry Pi 3B+ with 512MB RAM
  • Raspberry Pi 4B with 4GB RAM
  • Raspberry Pi 5 with 4GB RAM
  • Intel NUC running Windows 10
  • Intel desktop PC running Windows 11
  • Intel MacBook Pro

For 24/7 real-time detection, the Raspberry Pi 3B+ is more than sufficient. It can process 3-second segments in approximately 500ms.

Note: TPU accelerators such as Coral.AI are not supported due to incompatibility with the BirdNET tflite model.

Installation

Pre-compiled BirdNET-Go executables are available at https://github.com/tphakala/birdnet-go/releases/, unzip birdnet-go in any directory you wish to run it in, on Windows for example c:\users\username\birdnet-go.

TensorFlow Lite C library

In addition to BirdNET-Go executable you also need TensorFlow Lite C library which is available for download at https://github.com/tphakala/tflite_c/releases. Download library for your target platform and install it in proper library path for your system

  • On Linux copy libtensorflowlite_c.so to /usr/local/lib and run "sudo ldconfig"
  • On macOS libtensorflowlite_c.dylib to /usr/local/lib
  • On Windows copy libtensorflowlite_c.so to BirdNET-Go executable directory or any other directory in system PATH

Configuration

BirdNET-Go accepts several settings from command line but main configuration method is through configuration file which is created when birdnet-go is first run

Configuration file location is operating system depended and there is alternative locations for user preference.

On Linux and macOS default and primary location for configuration file is $HOME/.config/birdnet-go/config.yaml for user specific deployment, alternative location is /etc/birdnet-go/config.yaml for system wide deployment.

On Windows default and primary configuration file location is config.yaml in birdnet-go.exe installation directory, secondary location is C:\User\username\AppData\Local\birdnet-go\config.yaml

Default configuration file

The configuration file uses the YAML format, which does not recognize tabs as indentation.

# BirdNET-Go configuration
# Paths support environment variables such as $HOME and %appdata%

debug: false			# print debug messages, can help with problem solving

# Node specific settings
node:
  name: BirdNET-Go		# name of node, can be used to identify source of notes
  locale: en			# language to use for labels
  timeas24h: true		# true for 24-hour time format, false for 12-hour time format
  threads: 0			# 0 to use all available CPU threads

# BirdNET model specific settings
birdnet:
  sensitivity: 1.0		# sigmoid sensitivity, 0.1 to 1.5
  threshold: 0.8		# threshold for prediction confidence to report, 0.0 to 1.0
  overlap: 0.0			# overlap between chunks, 0.0 to 2.9
  latitude: 00.000		# latitude of recording location for prediction filtering
  longitude: 00.000		# longitude of recording location for prediction filtering

# Realtime processing settings
realtime:
  interval: 15		        # minimum interval between repeating detections
  processingtime: false         # true to report processing time for each prediction
  audioexport:
    enabled: false 		# true to export audio clips containing indentified bird calls
    path: clips/   		# path to audio clip export directory
    type: wav      		# audio file type, wav, mp3 or flac
  log:
    enabled: false		# true to enable OBS chat log
    path: birdnet.txt	        # path to OBS chat log
  birdweather:
    enabled: false		# true to enable birdweather uploads
    debug: false		# true to enable birdweather api debug mode
    id: 00000			# birdweather ID
    threshold: 0.9		# threshold of prediction confidence for uploads, 0.0 to 1.0

# Ouput settings
output:
  file:
    enabled: true		# true to enable file output for file and directory analysis
    path: output/		# path to output directory
    type: table			# ouput format, Raven table or csv
  # Only one database is supported at a time
  # if both are enabled, SQLite will be used.
  sqlite:
    enabled: false		# true to enable sqlite output
    path: birdnet.db	        # path to sqlite database
  mysql:
    enabled: false		# true to enable mysql output
    username: birdnet	        # mysql database username
    password: secret	        # mysql database user password
    database: birdnet	        # mysql database name
    host: localhost		# mysql database host
    port: 3306			# mysql database port

Supported locales for species labels

af: Afrikaans
ca: Catalan
cs: Czech
zh: Chinese
hr: Croatian
da: Danish
nl: Dutch
en: English
et: Estonian
fi: Finnish
fr: French
de: German
hu: Hungarian
is: Icelandic
id: Indonesia
it: Italian
ja: Japanese
lv: Latvian
lt: Lithuania
no: Norwegian
pl: Polish
pt: Portugues
ru: Russian
sk: Slovak
sl: Slovenian
es: Spanish
sv: Swedish
th: Thai
uk: Ukrainian