Erste Schritte Audio-Daten mit Machine Learning analysieren

@Marcus und ich wollen ein paar Schritte in Richtung Analyse von Audio-Daten mit Machine Learning gehen. Wir wollen in einem ersten Schritt schauen, ob man weisellose Völker von weiselrichtigen unterscheiden kann.

Datenmaterial

Als Datenmaterial haben wir hier schon Sound Samples and Basic Analysis Hive with Queen vs. Queenless allerdings als MP3-Dateien

Datenaufbereitung

Später wollen wir die FFT-Analyse auf dem Node machen und nur die Daten der FFT per Funk übertragen. Hier ein Beispiel:

Beispiel FFT-Output der Arduino Sound bzw. I2S-Lib

310864	167084	434716	974262	787796	113511	240794	46340	146542	46340	92681	0	65535	0	103621	0	80264	0	46340	0	46340	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	46340	46340	0	0	0	0	0	46340	0	0	0	0	0	0	0	0	0	0	0	
222243	80264	507639	894992	711903	167084	113511	0	92681	0	46340	0	0	0	46340	0	0	0	46340	0	46340	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	46340	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	
387716	92681	509750	897388	705844	139022	217358	113511	65535	46340	46340	0	46340	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	46340	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	46340	0	0	0	0	0	0	0	0	0	0	0	0	0	0	
0	196607	340535	910455	789157	131071	240794	92681	167084	46340	113511	0	113511	0	65535	0	46340	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	46340	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	
442064	146542	468020	892589	693567	113511	217358	113511	46340	0	46340	0	0	46340	0	46340	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	46340	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	
217358	46340	472586	832848	693567	179477	131071	65535	122606	0	65535	0	46340	0	46340	0	46340	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	46340	0	0	0	0	0	0	46340	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	
434716	222243	395937	936041	762868	113511	217358	46340	80264	0	80264	0	65535	0	46340	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	46340	0	0	0	0	0	0	0	0	0	0	0	0	0	
173391	167084	379317	910455	772658	131071	240794	65535	139022	0	103621	0	80264	0	80264	0	80264	0	46340	0	46340	0	46340	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	46340	0	0	0	0	0	0	0	0	0	0	0	
296726	212360	337367	939476	778196	80264	258015	80264	103621	0	80264	0	46340	0	80264	0	65535	0	46340	0	46340	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	46340	0	0	0	65535	46340	46340	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	
289399	167084	439628	869433	714913	113511	253819	113511	80264	46340	65535	0	65535	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	

Generierung der FFT-Roh-Daten von Audio-Daten

Nun ist die Frage, wie wir die Daten so wie oben von einer MP3- oder WAV-Datei bekommen. Ein paar Fundstücke:

@clemens man kann mit Audacity mp3 wieder in wavs umwandeln, würde das helfen?

Wir sind da vor drei Jahren da nicht weiter gekommen. Mittlerweile gibt es ML Software Frameworks und leistungsfähige Hardware, die Klassifikationen schon auf node-Ebene ermöglichen. Hier ein paar Beispiele, die sich nicht mit der menschlichen Stimme beschäftigen, sondern Tier-Sound analysieren:

darauf aufbauend

Die verwendeten Audiodaten sind sehr distinkt, wie dog, cow, sheep, dog, chirping_birds, vacuum_cleaner, d.h. ich weiß nicht, ob wir mit den Methoden ein weiselloses Brummen von einem weiselrichtigen unterscheiden könnten. Wollte die Sachen aber mal mit euch teilen.

Edge Impulse wird in den Projekten verwendet, das vermutlich über solche Sachen auch wieder customer generieren möchte. Weiß nicht, ob es ähnliches auch open source gibt. [edit] Hier noch ein praktisches Beispiel zu edge impulse / TinyML: TinyML - Motion Recognition Using Raspberry Pi Pico - Hackster.io gut erklärt wo (node / server) was (trainig / recognition) statt findet.

1 Like

Ich habe auch schon ein wenig meine Suchmaschine Gequält. Ich denke die KI ist so genau so genau, wie die Datensätze die zum lernen genutzt werden. Es hat sich in den Letzen Jahren auch sehr viel in Sachen Audioanalyse getan. So ist es heute schon möglich eine emotionale Stimmung von einer Menschlichen Person anhand einer Sprachprobe zu bestimmen. Auch ist es Möglich bei einer Maschine anhand von Sound den Wartungszustand zu bestimmen. Ich denke das sind die Sachen, die wir näher betrachten sollten.
Einen ersten Ansatz hatten wir mit GitHub - hiveeyes/audiohealth: Bee colony vitality using audio analysis. Applies machine learning algorithms in C++ from the OSBH project. schon, aber wie gesagt hat sich seit dem relativ viel getan.
Einen Interessanten Beitrag habe ich hier gefunden https://towardsdatascience.com/whats-wrong-with-spectrograms-and-cnns-for-audio-processing-311377d7ccd.
In den letzten Jahren haben sich recht viele Zweige ausgebildet die sich speziell Mit der Audio Analyse beschäftigen.

Nur um einen kleinen teil davon zu nennen. Besonders schwierig finde ich, zu erkennen, was für uns interessant sein kann. Auch fehlt mir in der Angelegenheit das nötige Fachwissen viele der Anleitungen die es gibt erfordern schon eher fortgeschrittenes Grundwissen über das Thema.

Auch weiß ich nicht welchen Ansatz wir zuerst angehen sollten. Wir wissen im Endeffekt ja nicht genau was wir suchen, eine KI beizubringen welches Tier da gerade einen Ton erzeugt ist stark vereinfacht ausgedrückt, die KI nur mit ein paar Bekannten Soundschnipseln zu füttern und sie rechnen lassen bis sie einen Algorithmus errechnet hat mit dem sie die Tiere erkennen kann.

Bei uns ist es denke ich einiges schwerer, wir müssen versuchen die guten Sounds von den schlechten unterscheiden. Wobei wir auch nicht ganz genau sagen können was die guten sind.
Da wir momentan ja nicht live Analysieren können was im Volk genau vor sich geht. Und auch nicht selbst Erhören können, was da stimmt, oder nicht.
Ich habe in meiner Imkerlichen Erfahrung zwar auch schon ein bisschen Gespür dafür bekommen am Ton und am Flugloch zu erkennen, ob es sich loht in eine Beute rein zu schauen, aber ich könnte das jetzt nicht näher beschreiben.

Daher finde ich ein system-fur-kontinuierliche-audio-aufzeichnung so wichtig. Bei irgendwelchen Ereignissen kann man ein paar Tage Wochen oder sogar Monate zurück gehen und schauen, ob sich da evtl. schon etwas zu früher verändert hat.

Wenn ich mir was wünschen könnte wär es, das man mit der KI Weiselrichtigkeit, Schwarmstimmung, Räuberrei, Weißelzellen oder tödlicher Varoabefall oder Krankheiten schon in einer frühen Phase im voraus erkennen kann, und so rechtzeitig Chance hat einzugreifen.
Außerdem wär es sicherlich noch Interessant zu sehen ob sich noch andere für Imker interessante Sachen wie Brutfreiheit, Hunger oder Tracht erkennen lassen.

Falls so ein System Funktioniert könnte man sicher die Durchsicht-Intervalle verlängern und somit auch “unnötigen” Stress von den Bienen und den Imkern nehmen.

2 Likes

Hallo in die Runde,

Hier ein paar Dinge, die mit TensorFlow Lite auf einem RP2040 (Raspberry Pi Pico) arbeiten und auf das Thema Audioanalyse anwenden.

Hier der Artikel dazu:

Viele Grüße,
Andreas.

2 Likes