BirdPROBE does offline live monitoring of bird vocals using the BirdNET artificial neural network.
BirdPROBE consists of several components loosley connected through a MQTT broker:
birdprobe-detection
- records audio and does detection based on BirdNET, publishes it's detections via MQTTbirdprobe-display
- displays detections and status informations via external displays by listening to MQTT eventsbirdprobe-location
- publishes location information via MQTT from different providers (none
,static
,gpsd
)birdprobe-record
- records detection events TODObirdprobe-sysclock
- approximate system time from gpsd for budget gps dongles (for SBCs w/o RTC like Raspberry Pi)
All components can run on a single host. They also can run distributed or you could run multiple instances.
By default the MQTT topics contains the $(hostname)
string to distinguish component instances per node.
This is project is in WIP and not ready to use, yet.
You need a MQTT broker. You can use a local mosquitto:
# apt-get install mosquitto mosquitto-clients
Install external dependencies for birdnetlib and pyaudio python packages:
# apt-get install ffmpeg virtualenv portaudio19-dev
Clone this repository locally:
$ git clone https://codeberg.org/liske/BirdPROBE.git
Create a python3 virtualenv
$ cd BirdPROBE
$ virtualenv -p python3 venv
$ . venv/bin/activate
Install BirdPROBE:
$ pip install -e .
You can add optional features:
gps
- gpsd based location providerws-epd
- waveshare-epaper display support
$ pip install -e '.[gps,ws-epd]'
The components provide appropriate commands in the virtualenv to start them.
Run the detection component:
$ birdprobe-detector -c /path/to/config.ini
Run the location provider:
$ birdprobe-location -c /path/to/config.ini
Monitor MQTT messages:
$ mosquitto_sub -v -t 'BirdPROBE/#'
- provide some packaging
- finish components
- logging
- more optimization for low power setups
- use some binary rather than JSON message format
- update prediction only if location has significant changes
- update week_48 less often