BirdNet-Pi, 24/7 Monitoring-System für (Sing-)Vögel

Hintergrund

Wir leben aktuell im Anthropozän, einer Epoche in der der Mensch mit seinem Verhalten primär den weiteren Verlauf des Lebens auf der Erde bestimmt. In dieser Epoche können wir mit Mikroelektronik Funktionen unseres Gehirns nachbauen, live und in Farbe über tausende Kilometer hinweg kommunizieren und sogar Atome spalten. Gleichzeitig wissen wir aber nicht mal wie viele Insekten es so ungefähr in Deutschland gibt, welche Vögel, andere Insekten, weitere Tiere gerade wo leben und ggf. in ihrer Art oder am aktuellen Standort gefährdet oder sogar am aussterben sind: Sprich, wir sind ganz schon “menschbezogen”!

Das wäre alles ja nicht tragisch, wenn es um Steine oder Sandkörner ginge, die halt um uns herum sind. Leider geht es aber um das biologische System, in und von dem wir leben. Kein “nice to have”, sondern die essentielle, lebenswichtige Grundlage menschlichen Lebens. Das hätte mehr Aufmerksamkeit verdient, oder?

Bezeichnend ist, dass unser Wissen zum Status der Insektenmasse in Deutschland nicht von Audi oder Siemens finanzier wird, nicht mal von einer Uni stammt, sondern sehr lang auf Daten vom Entomologischen Verein Krefeld basierte. Diese Privatleuten, machen schon so lange citizen science, da gab es den Begriff in Deutschland noch gar nicht!

Die Langzeitbeobachtungen der Krefelder Studie zeigen erschreckend, wie die Insekten in Deutschland verschwinden. Keine staatliche Institution, keine Firma hat sich lange darum gekümmert, sondern Privatpersonen! Diese Insekten sind aber mit dem ganzen Ökosystem unsere Lebensgrundlage ohne die es unsere Umwelt so wie sie ist nicht gäbe.

Bevor wir also etwas gegen das Insektensterben, geben Flächenrückgang, gegen Versiegelung usw. tun können, braucht es Diagnostik, sprich wir müssen wissen, was sich in unserm Biotop tut und ob / wie (schnell) sich Dinge verändern.

Let’s start with the birds!

Vielleicht kennt ihr BirdNet

… oder habt es sogar auf eurem Handy (für iOS gibts das auch)! Eine App, mit der man Vogelstimmen aufnehmen kann, dann zur Analyse auf den BirdNet-Server schickt und das Klassifizierungsergebnis angezeigt bekommt. Übrigens entwickelt von Stefan Kahl Medieninformatik der TU Chemnitz zusammen mit der Cornell University, Projekt-website dort: https://birdnet.cornell.edu !

Ganz automatisch läuft das leider nicht, man muss etwas mitmachen …

  1. eine Aufnahme starten, man bekommt dabei das Spektrogramm der live und auf dem Gerät gerechneten FFT angezeigt, wählt dann
  2. den Bereich aus, in dem der Vogel singt für den man sich interessiert, schickt dann die Daten ab und
  3. bekommt nun die Klassifizierung zurück:

    

Die App ist also super nett, wenn man wissen will, welcher Vogel das ist, der gerade fuuuui fuuui singt, aber nicht um indirekt und 24/7 über den Gesang zu messen, welche Vögel gerade in der Nähe sind (und singen, small restriction, I know!).

Software

Netterweise hat sich Patrick McGuire unserem Problem angenommen und um den BirdNet-Algorithmus Code geschrieben, der einen RaspberryPi zu einem BirdPi macht:

Der RasPi nimmt 24/7 in default 15 Sekunden chunks Audio auf und analysiert das on device (!!) und speichert die erkannten Vogelarten in einer lokalen Datenbank. Der Pi hat auch ein Webinterface mit tollen features:

  • Übersichtsgrafik
  • Spektrogramme
  • Abspielen der erkannte Vögel / Audio-Dateien
  • usw.

Alles sehr gut gemacht (etwas schicker könnte es noch sein), läuft manchmal etwas hakelig auf dem RasPi.

Hardware

(noch nicht alles safe und getestet!!)

Hinweise zur Hardware

  • Momentan (2024-03) läuft BirdNet-Pi auf Raspberry Pi OS Lite (64-bit) Bullseye, bei der neuen und aktuellen OS Version Bookworm kommen Fehlermeldungen!

  • Eine Grafik zur RasPi-Speicherauslastung im Betrieb, d.h. sogar ein 2 GB-Modell sollte reichen:

  • Ein nettes Video mit Infos zu omnidirektionalen vs. gerichteten Mikros und Testssond der oben empfohlenen Clippy EM272 (allerdings die Stereo-Version und vermutlich mit XLR statt Klinke)
    https://www.youtube.com/watch?v=-QRin6d-ojg&t=654s

  • Erster Tests mit PowerBanks
    – volle 12 Ah Anker Prime Powerbank hat ziemlich genau 8 Stunden gehalten!
    3/4 volle 20 Ah Anker 335 Powerbank hat ca. 11 Stunden gehalten!

Zusammenbau

[todo cg] Fotos Zusammenbau / endgültiges Gerät

Sinnvolle Verbesserungen und Erweiterungen

Settings anpassen

Unter tools > settings sollte man ein paar Änderungen vornehmen, bei …

  • Model BirdNET_GLOBAL_6K_V2.4_Model_FP16 (2023)
    auswählen, default ist da das legacy Modell aktiviert.
  • Location, hier den eigenen Standort angeben
  • Localization als Database Language German auswählen, sonst bekommt man die Vogelnamen Englisch angezeigt.

Änderung der Top-10-Liste (auf Top-50 erweitert)

Auf der BirdNet-Pi Oberfläche gibt es auf der Start- / “Overview”- und auf der Daily Charts-Seite Top-10- bzw. Bottom-10-Listen (letzte nur auf Daily). Das ist etwas wenig und bei täglich um die 30+ erkannten Vogelarten sieht man nicht schnell alle erkannten Arten mit Häufigkeiten. Das kann man aber ändern, siehe:

Konkret habe ich hier mit dieser Datei gepatcht:
https://github.com/mcguirepr89/BirdNET-Pi/files/13863186/patch.txt

Per SSH auf dem RasPi einloggen oder über die Weboberfläche via Tools > Web Terminal

ins relevante Verzeichnis wechseln mit
cd ~/BirdNET-Pi/scripts/

better safe than sorry, backup der Datei
cp daily_plot.py daily_plot_backup.py

patch-file herunterladen
wget https://github.com/mcguirepr89/BirdNET-Pi/files/13863186/patch.txt

Datei patchen
patch daily_plot.py patch.txt

Zusätzliches WLAN / Handy-Hotspot einrichten

Die Konfiguration eines zweiten WLANs ist hilfreich, wenn man den RasPi zuhause und an anderer Stelle nutzen möchte. Ausserdem ist es für ein mobile Nutzung notwendig, siehe:

BirdNet-Pi läuft ja auf Raspberry Pi OS Lite (64-bit) Bullseye, dort sind die WLAN-Daten noch in der Datei wpa_supplicant.conf gespeichert, die man unter /etc/wpa_supplicant/ findet. Zum einfachen Hinzufügen eines neuen WLANs nutzt man:

sudo -i
sudo wpa_passphrase "YourSSID" "YourPASSWORD" >> /etc/wpa_supplicant/wpa_supplicant.conf
exit

Nutzung mit Handy als WLAN-Hotspot

Möchte man den BirdNet-Pi mit einer Powerbank im Feld nutzen und sich währenddessen die Kategorisierungen anschauen, dann hat sich bei mir folgendes Vorgehen bewährt:

  • Wie oben gezeigt Zugangsdaten des WLAN-Hotspot auf dem RasPi speichern.
  • Leider ging es bei mir dann nicht, wie auf GitHub berichtet, einfach z.B. http://birdnetpi.local (oder was man konfiguriert hat) im Browser auf dem Handy aufzurufen. Bei mir ging es nur über die lokale IP, aber die muss man erst rausfinden:
  • Daher BirdNet-Pi einmalig an Monitor und Tastatur anschließen und mit ifconfig die IP des RasPi herausfinden und notieren.
  • Nun kann man im Feld den RasPi nutzen und fürs monitoring das Handy bei aktiviertem Hotspot verwenden.

Das ist nur eine Methode, wie man im Feld auf den RasPi per Handy (also im gleichen lokalen WLAN) zugreifen kann, nicht remote übers “richtige” Internet! Für letzteres müsse der RasPi anders konfiguriert werden.

Windschutz

Wie wichtig ein Windschutz fürs Mikros ist, sieht man hier: Die gelben, sprich “lauten” Anteile im tiefen (unten) Bereich des Spektrums werden vom Wind verursacht und überlagern teilweise auch das auditive Geschehen weiter oben im Spektrum, was zu einer schlechteren oder im Zweifel auch keiner Erkennung führt:

Infos zur Biologie und Akustik des Vogelgesangs

[to do cg]

  • Hardware-Liste final checken und ggf. ergänzen
  • passt überhaupt alles so wie gedacht in das Gehäuse? :-)
  • Fotos Zusammenbau / endgültiges Gerät
  • Alternatives Mikro: EM272 in der Einbauvariante / in Kabeldurchführung eingelassen (!), wie cool ist das denn!? Rugged Mount Mono Primo EM272Z1 Microphone
  • Datenbank-Export, s. birdnetpi export data - Google Suche
  • testen, ob USB-Soundkarte nur Mono- oder auch Stereo-Eingang hat
4 Likes

Mikro-Vergleich Anker PowerConf vs. Clippy EM272

Mikrofone spielen bei der Klassifizierung von Vogelstimmen eine zentrale Rolle, daher hier ein Vergleich des Anker PowerConf S330-Konferenzmikros (lag hier für ein anderes Projekt rum), ein Gerät, das ein 4-fach-Mikrofon-Array verbaut hat vs. dem auf GitHub und bei Leuten, die field recording machen sehr beliebten Clippy EM272 Mono. Dem Anker-Mic hatte ich anfangs gar keine große Aufmerksamkeit geschenkt, es nur zu Beginn verwendet, weil das Clippy noch nicht da war, vielleicht zu unrecht, wie die Ergebnisse zeigen:

Setup

Links das Anker PowerConf, rechts das Clippy EM272 in der Mono-Ausführung

Die beiden Mikros waren zeitgleich an identische RasPis angeschlossen, auch die Konfigurationsparameter von BirdNet-Pi waren gleich und die default-Werte, ausser:

  • Recording Length: 12 sec
  • Minimum Confidence: 0.6
  • Modell: BirdNET_GLOBAL_6K_V2.4_Model_FP16 (2023)

Da hatte ich etwas rumgespielt, da – mein Wissensstand bisher – in den default 15 Sekunden pro Aufnahme, immer nur eine Vogelart bestimmt wird. Hier haben heute viele Vogelarten durcheinander gesungen, so dass ich dachte, mit einer kürzeren Zeit mehr Arten erkennen zu können. Bei der Reduktion der Zeit waren die Kondidenz-Werte pro chunk allerdings geringer (ist das tatsächlich so, oder war das Zufall bei meiner Beobachtung?), weshalt ich dann doch wieder auf 12 Sekunden und bei der Confidence auf 0,6 runter bin (default 0,7). Alle Änderungen wurde immer parallel und zeitgleich an beiden Installationen vorgenommen.

D.h. beide Mikros haben identischen Sound aufgenommen und auf gleicher Konfigurationsbasis ausgewertet, Zeitraum: 2024-03-15, ca. 7 bis 17 Uhr.

Vergleich Anzahl Detections

Schon zu Beginn fiel mir auf, dass die Anker-Variante mehr Vögel erkannte als das Clippy-Mikro und das zeigte sich auch am Ende des Tests:

detections_mic-anker_birdnet
Anker PowerConf

detections_mic-clippy_birdnet
Clippy EM272

Das Clippy erkannte nur 75 % der Menge des Ankers (1950 vs. 2589), was sich dann auch bei den erkannten Spezies über den Messzeitraum niederschlägt: Hier waren es 32 Vogelarten, die das Anker klassifizierte und nur 28 mit dem Clippy, das sind nur 87 % Erkennungsrate für das Clippy.

Vergleich Reihenfolge Häufigkeiten

Schaut man sich die Häufigkeitsverteilung nach Spezies für die beiden Mikrofona an, sieht man, dass nicht nur die abolute Anzahl für das Clippy geringer ist, sondern dass mal das eine, mal das andere Geräte eine Vogelart besser detektiert.

Häufigkeit absteigend für beide Mikrofone

Hier könnte eine Rolle spielen, dass das Anker ein Array von 4 Mikrofonen ist, dass laut Werbung explizit 360° abdeckt, allerdings ist das Clippy auch ein ominidirektionales, kann ggf. aber wegen der Bauform die Umgebung nicht ganz so gut oder anders abdecken, als das Anker. Das setup war übrigens ca. 2 m von einer Hauswand entfernt aufgestellt, ggf. hat das Anker im komplett freien Feld nochmal anders / besser gemessen.

Hier nochmal zum Vergleich die beiden Mikros mit absoluten Häufigkeiten nach Uhrzeit / Stunde:

Anker PowerConf mit 32 Arten

Clippy EM272 mit 28 Arten

Sampels

Trotz der niedrigeren Erkennungsraten von BirdNet-Pi hört sich das Clippy EM272 subjektiv klarer an als das Anker, beide Aufnahmen um die gleiche Tageszeit:

Anker PowerConf mit Rotkehlchen

Clippy EM272 mit Feldlerche

Conclusio

Zusammengefallst bin ich etwas enttäuscht vom Clippy und habe bessere oder zumindest gleich gute Ergebnisse erwartet, da es in vielen Foren der Quasi-Standard für field recording zu sein scheint. Subjektiv kann ich das nachvollziehen und die Aufnahmen des Clippy EM272 gefallen mir deutlich besser als die des Anker Powerconf. Ich hätte auch erwartet, dass das Anker Mikro evtl. auf Sprache optimiert ist und daher schlechter für Vogelstimmen geeignet ist. dem scheint aber nicht so zu sein. Vielleicht haben aber auch die 4 Mikrofone des Ankers vs. die eine Kapsel beim Clippy einen Vorteil.

Das Anker ist ziemlich bulky und eignet sich schlecht für einen Einsatz draußen. Eine Alternative wöre hier das ReSpeaker 4-Mic Array für den Raspberry Pi von Seeed Studio. Das ReSpeaker Array sitzt aber auf dem RasPi und ist so schlecht vor Wettereinflüssen zu schützen, das ging mit einem Mikro, das alleine aus einem wetterfesten Gehäuse herausgeführt wird vermutlich besser.

Alternativ könnte ein Clippy Stereo, das in zwei unterschiedliche Richtungen ausgerichtet ist auch bessere Erkennungleistungen liefern.

2 Likes

lieber clemens, vielen dank für diesen tollen test. das mit den vier mikros und der raumausrichtung leuchtet mir sehr sein. bin drauf und dran, mir ein konferenz-mikro zuzulegen (wo ist die nächste große konferenz, hähähä!), um das nachzubauen mit den kids für den balkon und diverse campingaufenthalte.
eine nachfrage: wie ist das denn in diesem setting mit den false positives? was war da dein eindruck beim testen?

Ich habe keine Ahnung wie viele falsch-positive Erkennungen ich im Livebetrieb habe. Allerdings werden ja alle snippets aufgezeichnet und man könnte sich diese anhören und bewerten. Bei 2589 detections habe ich das nicht gemacht und bin auch überhaupt kein Ornithologe, der das sicher hören würde, deshalb brauche / möchte ich u.a. auch die KI! :-) Die Minimum Confidence war bei den Tests oben auf 0.6 eingestellt, default ist 0.7, also immer noch recht konservativ, denke ich, was sich vermutlich auch positiv auf die falsch-positiven “Fehler” auswirkt.

Bei Tests direkt nach der Installation hatte ich ein paar Erkennungen von Vögeln, die so was ähnliches wie Klopfgeräusche machen, und die auch vorkamen, wenn ich am Rechner oder derm Mikro rumgewerkelt habe. Das sind die Alarmrufe (nicht der normale Gesang) des Middendorff-Schwirls, siehe XC451342 Middendorff's Grasshopper Warbler (Helopsaltes ochotensis) :: xeno-canto und der pfeifende Gesang des Trauerhonigfressers XC860215 Black Honeyeater (Sugomel niger) :: xeno-canto . Aber das ist vermutlich Mikrofon unabhängig.