Van geluid
naar herkenning.
Een microfoon hoort alles. Tussen het opnemen en wat je hier ziet zit een keten van herkennen, filteren en kiezen. Hier staat hoe die werkt.
De stations luisteren onafgebroken. Elk geluidsfragment gaat door een herkenningsmodel dat erbij zet welke soort het waarschijnlijk is en hoe zeker het daarvan is. De basis is BirdNET, het open model voor vogelgeluid, dat ik op de Raspberry Pi’s draai via de Nachtzuster-fork.
Daarbovenop draaien bijna tweehonderd modellen die ik zelf heb getraind. Die zetten het roeptype erbij: zang, lokroep, alarm of vluchtroep. Zo weet je niet alleen welke vogel het was, maar ook wat hij aan het doen was. Bij elke opname op de site staat het zekerheidspercentage. Herkenning is geen exacte wetenschap: een hoog percentage is waarschijnlijk goed, een laag is meer een gok.
Een microfoon in een tuin vangt ook mensen op: buren buiten, een gesprek op straat, een telefoon op het balkon. Dat wil ik niet op de site, en jij wil het ook niet als het over jou gaat. Daarom gaat elk fragment eerst langs een filter dat menselijke spraak eruit haalt, voordat er iets gepubliceerd wordt.
Dat gebeurt in twee stappen. Eerst een stemdetector (Silero) die een fragment markeert zodra er spraak in lijkt te zitten. De twijfelgevallen gaan daarna langs een tweede model (Whisper) dat controleert of het echt verstaanbare spraak is. Is dat zo, dan komt het fragment niet op de site. Ver weg gemompel en onverstaanbare flarden mogen blijven: dat hoort bij het geluid van een dorpstuin, en je kunt er niemand aan herkennen.
Niet elke detectie krijgt een opname op de site. Er komen per dag duizenden tikken binnen. Zou ik alles tonen, dan werd het onleesbaar. Dus ik kies.
Bij Bladerdak en Struikgewas komen alleen de bijzondere of leuke soorten met geluid op de site. Bij de vleermuizen mag alles, want vleermuisgeluid is sowieso bijzonder. En als een gewone soort toch een mooie opname oplevert, kan ik die met de hand alsnog publiceren.
In de live-tikker bovenaan een stationspagina zit een rustpauze per soort, zodat één luidruchtige merel de lijst niet volspamt. In de dagtijdlijn lager op de pagina worden herhalingen juist gegroepeerd. Twee mechanismen, voor twee verschillende doelen.
Ik laat zien hoe zeker een herkenning is, en ik verberg niet dat het systeem fouten maakt. De ruwe data is open onder CC BY-NC 4.0, en zowel het systeem als deze site staan op GitHub. Wie wil nakijken hoe iets tot stand komt, kan dat.
Meer hierover: de open data en API, de techniek onder de motorkap, en het verhaal achter het project.