BirdNET Go

en Perch

Na mijn geexperimenteer met de PUC, kwam ik al snel op het spoor van BirdNET-Pi en BirdNET-Go.
BirdNET-Pi is van dezelfde ontwikkelaar (birdweather) als de PUC, BirdNET-Go is een open-source project met momenteel de BirdNET AI als basis. Zowel Pi als Go gebruiken de AI lokaal, dus zonder een cloud. Er zijn een paar verschillen:

  • Pi is bedacht voor de Raspberry Pi minicomputer
  • Go kan op alle systemen geinstalleerd worden. Een Linux besturingssysteem is de beste keuze. Een minicomputer zoals een raspberry Pi of een Intel NUC is wel zo handig om ergens in een schuurtje of meterkast te plaatsen.
  • Zowel Pi als Go ondersteunen meerdere wifi rtsp microfoons. Pi heeft ook een speciale wifi microfoon ontwikkeld (de software voor goedkope esp32 hardware).
  • Go kan de audio filteren (met name high-pass filters waarmee de meeste achtergrondruis niet meer storend is)
  • In Go zijn de spectrogrammen aanpasbaar en daardoor veel beter te "lezen".
  • Go ziet er gewoon mooier en moderner uit. Pi is wat rommelig en een beetje "lelijk".

Ik ben vooralsnog met BirdNET Go aan de slag gegaan.

Wat heb je nodig?
Een minicomputer, goede microfoons en een beetje linux kennis (of veel geduld, veel lezen, en regelmatig vallen en opstaan).

Minicomputer
Een echte minicomputer zoals een Raspberry Pi (3,4,of 5) of een Intel NUC is wel zo handig vooral omdat we toch Linux gaan gebruiken, Raspberry PI OS lite op een Raspberry of Ubuntu server op een NUC. Een minicomputer gebruikt weinig stroom en kan eenvoudiger in een hoekje van de schuur of meterkast hangen.
Een notebook is ook prima, gewoon proberen. Met wat oudere hardware (vooral notebooks) kan de installer van BirdNET-Go gaan klagen dat het te oud is voor de AI. Er is zelfs een oudere versie van BirdNET Go speciaal voor Windows. Ik gebruik zelf een NUC 11 met Ubuntu.
Het installeren van Raspberry Pi OS, Ubuntu en BirdNET Go is in detail beschreven op hun websites. Aannemende dat dat gelukt is gaan we verder :)

Microfoon
Het (aller)belangrijkste is de microfoon:

  • In ieder geval een (hele) goede omnidirectionele microfoon zoals een dasspeld microfoon. Die zijn bijna nooit waterdicht dus daar moet iets op verzonnen worden (cellofaan folie bijvoorbeeld).
  • Een USB versie van een microfoon of een USB audio adapter werkt meteen maar heeft vaak last van ruis en interferentie. Vooral als je een raspberry Pi gebruikt is er soms ruis en geknetter te horen, een NUC PC is dan een betere keuze.
  • De USB microfoon moet altijd op een afstand van de computer staan, desnoods met een USB verlengkabel.
  • Bruikbare, en soms hele goede, USB microfoons zitten in de betere webcams of de USB luidsprekers voor Teams vergaderingen. Dat spul is tijdens corona veel verkocht en nu vaak in een rommella verdwenen, dus zoeken op marktplaats naar webcams en speakerphones. Logitech, Jabra, Plantronics, Sennheiser zijn merken die bruikbare USB webcams, microfoons en speakerphones leveren.
  • Of een volledige digitale microfoon bouwen die een rtsp stream over wifi opzet (voor de kenners een esp32 en i2s mems microfoon, dat zit ook in de PUC). BirdNET-Go heeft zelfbouw instructies voor een rtsp microfoon. De behuizing van deze zelfbouw microfoon is ook belangrijk. Er zijn geen kant en klare oplossingen te koop. Dus een kastje vinden of maken, cellofaanfolie om het min of meer waterbestendig te houden en heel belangrijk afscherming m.b.v. aluminiumfolie en afgeschermde bekabeling om brom en geknetter te voorkomen.

Het werkt!
Als de microfoon is aangesloten werkt het en kan het luisteren beginnen.
Afhankelijk van de kwaliteit van de microfoon laat Go, vergeleken met een PUC, meer detecties zien maar ook meer onzin. De resultaten van Go moet je via een browser bekijken op je PC of telefoon terwijl een PUC alleen een app heeft voor de telefoon. Het voordeel is wel dat spectogrammen beter in beeld komen en dat er meer mogelijkheden zijn om overzichten te maken. Het dashboard met een chronologisch overzicht per dag van gedetecteerde soorten en een lijst van de laatste detecties met een spectrogram is perfect.
Go heeft een berg mogelijkheden voor instellingen.
- De equalizer opties met name het high pass filter om alles onder een bepaalde frequentie te filteren (bijvoorbeeld 200 Hz) zorgt ervoor dat veel achtergrond geluid niet te horen is.
- De spectrogrammen zijn standaard in kleur. Zwart-wit (scientific dark) en 80 dB dynamic range kijkt prettiger.
- De rest van alle instellingen laten we maar even zo staan. Teveel, gelijktijdig, gedraai aan de knoppen is vragen om een teleurstelling.

Kan het beter?
Na een paar dagen ga je toch twijfelen. Er komt nogal wat bijzonders voorbij in de lijstjes en door de audioclips te beluisteren weet je soms zeker dat het onzin is. Roerdomp, patrijs, kerkuil, zwarte roodstaart, taigaboomkruiper, sneeuwgors, witgat en wat al niet meer. Vaak een enkele detectie, amper hoorbaar in de ruis en soms met hoge betrouwbaarheid volgens de AI. Een enkele keer is het wel raak met een steenuil of overvliegende kraanvogels. Rara hoe kan dat?
De "Threshold" opkrikken naar 0.7 (70%) of hoger laat het gokwerk van de AI niet zo snel zien.
We kunnen daarna altijd de AI de schuld geven maar Go maakt er ook een potje van. Er is een instelling "Dynamic Threshold" die veel onzin laat zien. Normaal zet je een grens op betrouwbaarheid (Threshold 70-80%) bijvoorbeeld. Met een verse installatie staat "Dynamic Threshold" aan en zodra Go een soort heeft gedetecteerd met 90% betrouwbaarheid of meer gaat hij zelf voor deze soort de betrouwbaarheidgrens verlagen tot 20%. En dan komt er veel boven water waar het gezang in de achtergrondruis verloren gaat, dat zijn misschien koperwieken maar om dat uit te vogelen gaan je oren piepen. Uit dus die "Dynamic Threshold".
Dan blijft de AI over om op te mopperen:

Wat is dat eigenlijk, een AI?
AI staat voor Artificial Intelligence of kunstmatige intelligentie. AI gebruikt inmiddels iedereen, in elke zoekopdracht krijg je ook de mogelijkheid om verder te zoeken met AI. Hoe het werkt kan bijna niemand uitleggen. Als je wel iemand vindt die dat kan, zul je zijn of haar uitleg niet begrijpen tenzij je zelf al wist hoe AI nu precies werkt. Ik kan het antwoord dus ook niet geven.
In ieder geval moet de AI les krijgen of in AI jargon getraind worden, en dat doen wij allemaal zonder dat we het weten. De makers van een AI hebben de AI eerst teksten leren lezen en daarna plaatjes leren kijken. Audio, zoals stemmen en vogelgeluiden, zijn voor de AI eigenlijk plaatjes (spectrogrammen). Als de AI kan lezen en kijken moet hem nog wel verteld worden wat wat is, in AI jargon heet dat annoteren. Dus iemand upload een foto of een geluid en zet er "dit is een vink" onder. Als er maar genoeg verschillende plaatjes met "dit is een vink" zijn kan een AI een volgend plaatje met "wat is dit?" herkennen als een vink. Nogmaals, hoe de AI dat lukt kan (bijna) niemand je uitleggen.
Een betere vertaling van AI is Alien Intelligence. Alien, omdat het vreemd en onbekend is. Het lijkt totaal niet op menselijke intelligentie, om het dan maar intelligent te noemen is een beetje dom. We hebben iets gemaakt wat in de verste verte niet op ons lijkt. Het is in ieder geval ook complexe statistiek en dat is voor de meeste mensen ook onbegrijpelijk gelet op de populariteit van gokken.
Of en hoe het nadenkt weten we niet. Als het al kan nadenken weten we niet hoe, en als het wel kan nadenken en helemaal zelfstandig dingen gaat bedenken zoals "ik denk, dus ik besta" dan weten we niet wat dat voor een Alien betekend. Misschien komt hij dan tot de conclusie dat wij hem misbruiken. Dat moment is dichterbij dan je denkt!

In China hebben ze fabriekshallen vol met moderne slaven die de hele dag foto's van voorzien van kadertjes met daaronder "dit is een ...". De rest doen wij door foto's te uploaden naar internet en geluiden van vogels op xeno-canto te plaatsen.
Een AI kan dus in onze beleving wonderen verrichten en wonderbaarlijk is het zeker als je een AI vraagt om foto's of video's te maken van een of ander verzinsel wat je in een tekst beschrijft (een prompt). Het resultaat is prachtig maar niet echt.
De chatgpt's en andere AI's presenteren als antwoord op onze onschuldige vragen prachtige teksten, keurig opgemaakt met stappenplannen en wat al niet meer. De docenten Nederlands of Engels zouden onder de indruk zijn als de leerlingen dat zelfstandig zouden opschrijven. Ondertussen noteert de baas van de AI onze zieleroerselen, die privacyverklaring is een lange wassen neus.
Voor veel mensen is het alsof een goeroe de weg wijst. Helaas is het eerste antwoord vaak een greep uit de voorraad kant en klare antwoorden. Simpele vervolgvraagjes als "weet je het zeker", "kun je referenties geven" of "ja, maar..." zetten de AI aan het werk en dan komen er vaak correcties of nog wat meer onzin.
Geloof dus niets van wat een AI zegt en controleer alles. Dat is dus ook van toepassing op de AI van Birdnet.

AI voor (vogel)geluiden
Op dit moment is er één AI die bijna iedereen gebruikt, BirdNET. Laten we maar zeggen de eerste en tot nu toe zo'n beetje de enige. Hij is waarschijnlijk getraind met de database van Cornell Lab, en dus zijn in ieder geval heel veel amerikaanse vogels en/of vogels met een amerikaans accent gebruikt voor het leren van de AI. Hij werkt verrassend goed maar is niet perfect, controleren dus wat hij zegt te horen. Dat kan prima met een paar nederlandse oren maar de audioopnames van Go zijn soms wat minder doordat de vogel ver weg zit, achtergrondlawaai etc.
Er zijn ook verschillende versies van de BirdNET AI. Met alle toeters en bellen via de cloud of light versies voor een telefoon. Zoek de verschillen... Al zoekende kom je al snel vanalles tegen:
- Google is bezig met een nieuwe AI (Google Perch 2.0). De database van xeno-canto is gebruikt om de AI op vogels te trainen. Ze willen alle geluiden van alle dieren (bio-acoustics) opnemen.
- BirdNET-Analyzer (gratis te downloaden voor Mac en PC)

BirdNET analyzer is een leuke tool om de resultaten van een Go (of een PUC) te controleren. Door de audioclips te downloaden en door de analyzer te halen spreekt de BirdNET AI zichzelf soms tegen (dezelfde AI in de Go en de analyzer). Is dat typisch AI gedrag? Andere instellingen of is de oorzaak is geknip en geplak in de oorspronkelijke opname waardoor de details waar de AI eerst op reageerde verloren zijn gegaan? BirdNET wil namelijk alles in mootjes van 3 seconden bekijken, Go en de PUC bepalen eerst zelf welke 3 seconden porties aan de AI worden voorgeschoteld en de AI gaat misschien zelf ook weer knippen en plakken. Probeer daar maar eens chocolade van te maken.

BirdNET analyzer heeft ook een optie om de AI te kiezen. Naast de BirdNET 2.4 AI is de preview van Perch 2.0 beschikbaar. Voor de twijfelgevallen in de detecties worden dan heel andere resultaten zichtbaar. Een instinker zijn ook de instellingen van een AI in de analyzer, direct uit de doos horen de AI's zelfs paradijsvogels in de achtergrondruis.

  • Waar BirdNet Go een patrijs in de tuin hoort met 93% zekerheid, hoort Perch daar een zwarte kraai (en het was ook een zwarte kraai).
  • Van een koolmees maakt BirdNET plotseling een kuifmees. Perch hoort alleen maar een koolmees.
  • Een zaag in de verte is volgens Go een kerkuil. Perch hoort niets
  • Op straat is vanalles te horen. BirdNET hoort een kerkuil en een patrijs, ik hoor veel maar geen vogel. Perch heeft ook niets gevonden.
  • Een roodborst in de achtergrondruis komt in Go tevoorschijn als een bonte strandloper. Perch heeft daar ook moeite mee en denkt een bonte strandloper en een roodborst te horen. De AI's maken het extra bont door net te doen alsof ze het zeker weten.
  • Met alleen korte piepjes hebben ze alletwee (of beter alledrie, met mij erbij) moeite.

Perch 2.0 lijkt dus een verbetering. Het volgende experiment is dan: Hoe krijg je Go zover dat hij Perch als AI gaat gebruiken...