Erkennen Sie Audioereignisse mit Amazon Rekognition PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Erkennen Sie Audioereignisse mit Amazon Rekognition

Wenn die meisten Leute daran denken, maschinelles Lernen (ML) mit Audiodaten zu verwenden, kommt ihnen normalerweise folgender Anwendungsfall in den Sinn Transkription, auch bekannt als Sprache-zu-Text. Es gibt jedoch andere nützliche Anwendungen, einschließlich der Verwendung von ML zur Erkennung von Geräuschen.

Die Verwendung von Software zur Erkennung eines Tons wird als bezeichnet Erkennung von Audioereignissen, und es hat eine Reihe von Anwendungen. Angenommen, Sie möchten die Geräusche einer lauten Fabrikhalle überwachen und auf ein Alarmsignal achten, das auf ein Problem mit einer Maschine hinweist. In einer Gesundheitsumgebung können Sie die Audioereigniserkennung verwenden, um passiv auf Geräusche eines Patienten zu hören, die auf ein akutes Gesundheitsproblem hinweisen. Medien-Workloads eignen sich gut für diese Technik, um beispielsweise zu erkennen, wenn ein Schiedsrichter in einem Sportvideo pfeift. Und natürlich können Sie diese Technik in einer Vielzahl von Überwachungsaufgaben einsetzen, z. B. beim Hören auf einen Schuss oder das Geräusch eines Autounfalls von einem Mikrofon, das über einer Straße in der Stadt montiert ist.

Dieser Beitrag beschreibt, wie man Geräusche in einer Audiodatei erkennt, auch wenn gleichzeitig signifikante Hintergrundgeräusche auftreten. Darüber hinaus verwenden wir, vielleicht überraschenderweise, Computer-Vision-basierte Techniken, um die Erkennung durchzuführen Amazon-Anerkennung.

Audiodaten mit maschinellem Lernen nutzen

Der erste Schritt bei der Erkennung von Audioereignissen besteht darin, zu verstehen, wie Audiodaten dargestellt werden. Für die Zwecke dieses Beitrags befassen wir uns nur mit aufgezeichnetem Audio, obwohl diese Techniken mit Streaming-Audio funktionieren.

Aufgenommenes Audio wird normalerweise als eine Folge von Tonproben gespeichert, die die Intensität der Schallwellen messen, die während der Aufnahme auf das Mikrofon auftreffen, im Laufe der Zeit. Es gibt eine Vielzahl von Formaten zum Speichern dieser Samples, aber ein gängiger Ansatz besteht darin, 10,000, 20,000 oder sogar 40,000 Samples pro Sekunde zu speichern, wobei jedes Sample eine Ganzzahl von 0–65535 (zwei Bytes) ist. Da jedes Sample nur die Intensität von Schallwellen zu einem bestimmten Zeitpunkt misst, sind die Schalldaten im Allgemeinen für ML-Prozesse nicht hilfreich, da sie im Rohzustand keine nützlichen Funktionen aufweisen.

Um diese Daten nutzbar zu machen, wird das Tonbeispiel in ein Bild umgewandelt, das als a bezeichnet wird Spektrogramm, die eine Darstellung der Audiodaten ist, die die Intensität verschiedener Frequenzbänder über die Zeit zeigt. Das folgende Bild zeigt ein Beispiel.

Die X-Achse dieses Bildes stellt die Zeit dar, was bedeutet, dass der linke Rand des Bildes der Anfang des Tons ist und der rechte Rand des Bildes das Ende. Jede Datenspalte innerhalb des Bildes stellt verschiedene Frequenzbänder dar (angezeigt durch die Skala auf der linken Seite des Bildes), und die Farbe an jedem Punkt repräsentiert die Intensität dieser Frequenz zu diesem Zeitpunkt.

Die vertikale Skalierung für Spektrogramme kann auf andere Darstellungen geändert werden. Beispielsweise bedeutet lineare Skalierung, dass die Y-Achse gleichmäßig über Frequenzen verteilt wird, logarithmische Skalierung verwendet eine logarithmische Skalierung und so weiter. Das Problem bei der Verwendung dieser Darstellungen besteht darin, dass die Frequenzen in einer Tondatei normalerweise nicht gleichmäßig verteilt sind, sodass die meisten Informationen, an denen wir interessiert sein könnten, am unteren Rand des Bildes angehäuft werden (die niedrigeren Frequenzen).

Um dieses Problem zu lösen, ist unser Beispielbild ein Beispiel für a Mel-Spektrogramm, die so skaliert ist, dass sie der menschlichen Wahrnehmung von Schall sehr nahe kommt. Beachten Sie die Frequenzindikatoren auf der linken Seite des Bildes – sie geben eine Vorstellung davon, wie sie vertikal verteilt sind, und es ist klar, dass es sich um eine nichtlineare Skala handelt.

Darüber hinaus können wir die Messung der Intensität nach Frequenz nach Zeit modifizieren, um verschiedene Merkmale des gemessenen Audios zu verbessern. Wie bei der Y-Achsen-Skalierung, die durch ein Mel-Spektrogramm implementiert wird, betonen andere Merkmale wie die Intensität der 12 unterschiedlichen Tonhöhenklassen, die zum Studieren von Musik (Chroma) verwendet werden. Eine andere Klasse betont horizontale (harmonische) Merkmale oder vertikale (perkussive) Merkmale. Die Art des erkannten Schalls sollte die Art des Spektrogramms ansteuern, das für das Erkennungssystem verwendet wird.

Das frühere Beispiel-Spektrogramm stellt einen Musikclip dar, der etwas mehr als 2 Minuten lang ist. Beim Vergrößern werden mehr Details sichtbar, wie im folgenden Bild gezeigt.

Erkennen Sie Audioereignisse mit Amazon Rekognition PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Die Zahlen am oberen Rand des Bildes zeigen die Anzahl der Sekunden ab dem Start der Audiodatei. Sie können deutlich eine Tonfolge sehen, die sich mehr als viermal pro Sekunde zu wiederholen scheint, was durch die hellen Farben am unteren Rand des Bildes angezeigt wird.

Wie Sie sehen können, ist dies einer der Vorteile der Konvertierung von Audio in ein Spektrogramm – deutliche Geräusche sind oft mit bloßem Auge leicht sichtbar, und selbst wenn dies nicht der Fall ist, können sie häufig mithilfe von Objekterkennungsalgorithmen für Computervision erkannt werden. Tatsächlich ist dies genau der Prozess, dem wir folgen, um Geräusche zu erkennen.

Suche nach diskreten Tönen in einem Spektrogramm

Abhängig von der Länge der gesuchten Audiodatei ist es eine Herausforderung, einen diskreten Ton zu finden, der nur ein oder zwei Sekunden dauert. Sehen Sie sich das erste Spektrogramm an, das wir geteilt haben – da wir ganze 3:30 Minuten an Daten anzeigen, sind Details, die nur etwa eine Sekunde dauern, nicht sichtbar. Wir haben stark hineingezoomt, um den Rhythmus zu sehen, der im zweiten Bild gezeigt wird. Bei größeren Tondateien (und daher viel größeren Spektrogrammen) stoßen wir natürlich schnell auf Probleme, wenn wir nicht einen anderen Ansatz verwenden. Dieser Ansatz heißt Fensterung.

Windowing bezieht sich auf die Verwendung eines gleitenden Fensters, das sich über das gesamte Spektrogramm bewegt und jeweils einige Sekunden (oder weniger) isoliert. Durch wiederholtes Isolieren von Teilen des Gesamtbildes erhalten wir kleinere Bilder, die auf das Vorhandensein des zu detektierenden Tons durchsuchbar sind. Da jedes Fenster nur einen Teil des Bildes ergeben könnte, nach dem wir suchen (wie im Fall der Suche nach einem Ton, der nicht genau am Anfang eines Fensters beginnt), wird die Fensterung oft so ausgeführt, dass nachfolgende Fenster überlappt werden. Beispielsweise beginnt das erste Fenster um 0:00 und erstreckt sich über 2 Sekunden, das zweite Fenster beginnt um 0:01 und erstreckt sich über 2 Sekunden, und das dritte Fenster beginnt um 0:02 und erstreckt sich über 2 Sekunden, und so weiter.

Windowing teilt ein Spektrogrammbild horizontal. Wir können die Effektivität des Erkennungsprozesses verbessern, indem wir bestimmte Frequenzbänder isolieren, indem wir nur bestimmte vertikale Teile des Bildes zuschneiden oder durchsuchen. Wenn Sie beispielsweise wissen, dass die Alarmglocke, die Sie erkennen möchten, Geräusche erzeugt, die von einer bestimmten Frequenz zur anderen reichen, können Sie das aktuelle Fenster so ändern, dass nur diese Frequenzbereiche berücksichtigt werden. Das reduziert die Menge der zu manipulierenden Daten erheblich und führt zu einer viel schnelleren Suche. Es verbessert auch die Genauigkeit, da es mögliche falsche positive Übereinstimmungen eliminiert, die in Frequenzbändern außerhalb des gewünschten Bereichs auftreten. Die folgenden Bilder vergleichen eine vollständige Y-Achse (links) mit einer eingeschränkten Y-Achse (rechts).

Vollständige Y-Achse

Vollständige Y-Achse

Begrenzte Y-Achse

Begrenzte Y-Achse

Nachdem wir nun wissen, wie man mit einem Fensteransatz über ein Spektrogramm iteriert und nach bestimmten Frequenzbändern filtert, besteht der nächste Schritt darin, die eigentliche Suche nach dem Ton durchzuführen. Dafür verwenden wir Benutzerdefinierte Etiketten von Amazon Rekognition. Die Rekognition Custom Labels-Funktion baut auf den bestehenden Funktionen von Amazon Rekognition auf, das bereits mit zig Millionen Bildern in vielen Kategorien trainiert wurde. Anstelle von Tausenden von Bildern müssen Sie nur einen kleinen Satz von Trainingsbildern hochladen (normalerweise einige hundert Bilder, aber die optimale Größe des Trainingsdatensatzes sollte experimentell basierend auf dem spezifischen Anwendungsfall erreicht werden, um ein Unter- oder Übertraining des Modells zu vermeiden ), die für Ihren Anwendungsfall spezifisch sind, über die Rekognition Custom Labels-Konsole.

Wenn Ihre Bilder bereits beschriftet sind, können Sie mit nur wenigen Klicks auf das Amazon Rekognition-Training zugreifen. Alternativ können Sie die Bilder direkt in der Amazon Rekognition-Beschriftungsoberfläche beschriften oder verwenden Amazon Sagemaker Ground Truth um sie für Sie zu beschriften. Wenn Amazon Rekognition mit dem Training aus Ihrem Bildsatz beginnt, erstellt es in nur wenigen Stunden ein benutzerdefiniertes Bildanalysemodell für Sie. Hinter den Kulissen lädt und überprüft Rekognition Custom Labels automatisch die Trainingsdaten, wählt die richtigen ML-Algorithmen aus, trainiert ein Modell und stellt Modellleistungsmetriken bereit. Sie können dann Ihr benutzerdefiniertes Modell über die verwenden API für benutzerdefinierte Erkennungsetiketten und in Ihre Anwendungen integrieren.

Zusammenstellen von Trainingsdaten und Trainieren eines Rekognition Custom Labels-Modells

Im Mit diesem Beitrag verknüpftes GitHub-Repo, finden Sie Code, der zeigt, wie Sie unabhängig von Hintergrundgeräuschen auf das Geräusch eines Rauchmelders hören können. In diesem Fall ist unser Rekognition Custom Labels-Modell ein binäres Klassifizierungsmodell, was bedeutet, dass die Ergebnisse entweder „Rauchalarmton wurde erkannt“ oder „Rauchalarmton wurde nicht erkannt“ lauten.

Um ein benutzerdefiniertes Modell zu erstellen, benötigen wir Trainingsdaten. Diese Trainingsdaten bestehen aus zwei Haupttypen: Umgebungsgeräusche und die Geräusche, die Sie erkennen möchten (wie das Auslösen eines Rauchmelders).

Die Umgebungsdaten sollten eine Vielzahl von Geräuschkulissen darstellen, die typisch für die Umgebung sind, in der Sie den Ton erkennen möchten. Wenn Sie beispielsweise einen Rauchmelder in einer Fabrikumgebung erkennen möchten, beginnen Sie mit Geräuschen, die in dieser Fabrikumgebung unter aufgezeichnet wurden einer Vielzahl von Situationen (natürlich ohne dass der Rauchmelder ertönt).

Die Geräusche, die Sie erkennen möchten, sollten nach Möglichkeit isoliert sein, d. h. die Aufnahmen sollten nur das Geräusch selbst ohne Umgebungsgeräusche sein. In unserem Beispiel ist das das Geräusch eines Rauchmelders, der losgeht.

Nachdem Sie diese Geräusche gesammelt haben, zeigt der Code im GitHub-Repo, wie Sie die Umgebungsgeräusche mit den Rauchalarmgeräuschen auf verschiedene Weise kombinieren (und sie dann in Spektrogramme konvertieren), um eine Reihe von Bildern zu erstellen, die die Umgebungsgeräusche darstellen mit und ohne überlagerten Rauchalarmtönen. Das folgende Bild ist ein Beispiel für einige Umgebungsgeräusche mit einem darüber gelegten Rauchalarmton (die hellen horizontalen Balken).

Erkennen Sie Audioereignisse mit Amazon Rekognition PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Die Trainings- und Testdaten werden in einem gespeichert Amazon Simple Storage-Service (Amazon S3) Eimer. Die folgende Verzeichnisstruktur ist ein guter Ausgangspunkt, um Daten innerhalb des Buckets zu organisieren.

Erkennen Sie Audioereignisse mit Amazon Rekognition PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Mit dem Beispielcode im GitHub-Repository können Sie auswählen, wie viele Trainingsbilder erstellt werden sollen. Rekognition Custom Labels erfordert keine große Anzahl von Trainingsbildern. Ein Trainingssatz von 200–500 Bildern sollte ausreichen.

Zum Erstellen eines Rekognition Custom Labels-Projekts müssen Sie die URIs des S3-Ordners angeben, der die Trainingsdaten und (optional) Testdaten enthält. Bei der Angabe der Datenquellen für den Trainingsjob ist eine der Optionen Automatische Kennzeichnung, wie im folgenden Screenshot gezeigt.

Erkennen Sie Audioereignisse mit Amazon Rekognition PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Die Verwendung dieser Option bedeutet, dass Amazon Rekognition die Namen der Ordner als Bezeichnungsnamen verwendet. Für unseren Anwendungsfall Rauchmeldererkennung sieht die Ordnerstruktur innerhalb der Zug- und Testordner wie im folgenden Screenshot aus.

Erkennen Sie Audioereignisse mit Amazon Rekognition PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Die Bilder der Trainingsdaten werden in diese Ordner verschoben, wobei Spektrogramme, die den Ton des Rauchmelders enthalten, in den Ordner „Alarm“ und Spektrogramme, die den Ton des Rauchmelders nicht enthalten, in den Ordner „ no_alarm Mappe. Amazon Rekognition verwendet diese Namen als Ausgabeklassennamen für das benutzerdefinierte Labels-Modell.

Das Training eines benutzerdefinierten Etikettenmodells dauert normalerweise 30–90 Minuten. Am Ende dieses Trainings müssen Sie das trainierte Modell starten, damit es verwendet werden kann.

End-to-End-Architektur für die Geräuscherkennung

Nachdem wir unser Modell erstellt haben, besteht der nächste Schritt darin, eine Inferenzpipeline einzurichten, damit wir das Modell verwenden können, um zu erkennen, ob ein Rauchalarmton in einer Audiodatei vorhanden ist. Dazu muss der Eingangsschall in ein Spektrogramm umgewandelt und dann gefenstert und nach Frequenz gefiltert werden, wie es für den Trainingsprozess getan wurde. Jedes Fenster des Spektrogramms wird dem Modell gegeben, das eine Klassifizierung zurückgibt, die angibt, ob der Rauchalarm ausgelöst wurde oder nicht.

Das folgende Diagramm zeigt eine Beispielarchitektur, die diese Rückschlusspipeline implementiert.

Erkennen Sie Audioereignisse mit Amazon Rekognition PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Diese Architektur wartet darauf, dass eine Audiodatei in einen S3-Bucket platziert wird, was dann eine verursacht AWS Lambda Funktion, die aufgerufen werden soll. Lambda ist ein serverloser, ereignisgesteuerter Rechendienst, mit dem Sie Code für praktisch jede Art von Anwendung oder Backend-Dienst ausführen können, ohne Server bereitstellen oder verwalten zu müssen. Sie können eine Lambda-Funktion aus über 200 AWS-Services und SaaS-Anwendungen (Software as a Service) auslösen und zahlen nur für das, was Sie nutzen.

Die Lambda-Funktion erhält den Namen des Buckets und den Namen des Schlüssels (oder Dateinamen) der Audiodatei. Die Datei wird von Amazon S3 in den Speicher der Funktion heruntergeladen, die sie dann in ein Spektrogramm umwandelt und eine Fensterung und Frequenzfilterung durchführt. Jeder gefensterte Teil des Spektrogramms wird dann an Amazon Rekognition gesendet, das das zuvor trainierte Amazon Custom Labels-Modell verwendet, um den Ton zu erkennen. Wenn dieser Ton gefunden wird, signalisiert die Lambda-Funktion dies mit einem Amazon Simple Notification Service (Amazon SNS)-Benachrichtigung. Amazon SNS bietet einen Pub/Sub-Ansatz, an den Benachrichtigungen gesendet werden können Amazon Simple Queue-Dienst (Amazon SQS)-Warteschlangen, Lambda-Funktionen, HTTPS-Endpunkte, E-Mail-Adressen, Mobile Push und mehr.

Zusammenfassung

Sie können maschinelles Lernen mit Audiodaten verwenden, um zu bestimmen, wann bestimmte Geräusche auftreten, selbst wenn gleichzeitig andere Geräusche auftreten. Dazu müssen Sie den Ton in ein Spektrogrammbild umwandeln und dann durch Fenstern und Filtern nach Frequenzband auf verschiedene Teile dieses Spektrogramms zielen. Rekognition Custom Labels macht es einfach, ein benutzerdefiniertes Modell für die Geräuscherkennung zu trainieren.

Sie können die Verwendung GitHub Repo enthält den Beispielcode für diesen Beitrag als Ausgangspunkt für Ihre eigenen Experimente. Weitere Informationen zur Audioereigniserkennung finden Sie unter Schallereigniserkennung: Ein Tutorial.


Über die Autoren

Erkennen Sie Audioereignisse mit Amazon Rekognition PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.Gregor Sommerville ist Senior Prototyping Architect im AWS-Prototyping- und Cloud-Engineering-Team, wo er AWS-Kunden hilft, innovative Lösungen für herausfordernde Probleme mit maschinellem Lernen, IoT und serverlosen Technologien zu implementieren. Er lebt in Ann Arbor, Michigan und praktiziert gerne Yoga, versorgt seine Hunde und spielt Poker.

Erkennen Sie Audioereignisse mit Amazon Rekognition PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.Jeff Harmann ist Senior Prototyping Architect im AWS-Prototyping- und Cloud-Engineering-Team, wo er AWS-Kunden hilft, innovative Lösungen für herausfordernde Probleme zu implementieren. Er lebt in Unionville, Connecticut und liebt Holzbearbeitung, Schmiedekunst und Minecraft.

Zeitstempel:

Mehr von AWS Maschinelles Lernen