Detecteer audiogebeurtenissen met Amazon Rekognition PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Detecteer audiogebeurtenissen met Amazon Rekognition

Wanneer de meeste mensen denken aan het gebruik van machine learning (ML) met audiogegevens, is de use case die meestal in je opkomt: transcriptie, ook wel spraak-naar-tekst genoemd. Er zijn echter andere nuttige toepassingen, waaronder het gebruik van ML om geluiden te detecteren.

Het gebruik van software om een โ€‹โ€‹geluid te detecteren heet detectie van audiogebeurtenissen, en het heeft een aantal toepassingen. Stel dat u bijvoorbeeld de geluiden van een lawaaierige fabrieksvloer wilt bewaken, luisterend naar een alarmbel die een probleem met een machine aangeeft. In een zorgomgeving kunt u audiogebeurtenisdetectie gebruiken om passief te luisteren naar geluiden van een patiรซnt die wijzen op een acuut gezondheidsprobleem. Media-workloads passen goed bij deze techniek, bijvoorbeeld om te detecteren wanneer een scheidsrechtersfluitje wordt geblazen in een sportvideo. En natuurlijk kun je deze techniek gebruiken bij allerlei soorten bewakingstaken, zoals het luisteren naar een geweerschot of het geluid van een auto-ongeluk uit een microfoon die boven een stadsstraat is gemonteerd.

Dit bericht beschrijft hoe u geluiden in een audiobestand kunt detecteren, zelfs als er tegelijkertijd significante achtergrondgeluiden zijn. Wat meer is, misschien verrassend, gebruiken we op computervisie gebaseerde technieken om de detectie uit te voeren, met behulp van Amazon Rekognition.

Audiogegevens gebruiken met machine learning

De eerste stap bij het detecteren van audiogebeurtenissen is begrijpen hoe audiogegevens worden weergegeven. Voor de doeleinden van dit bericht behandelen we alleen opgenomen audio, hoewel deze technieken werken met streaming audio.

Opgenomen audio wordt meestal opgeslagen als een reeks geluidssamples, die de intensiteit meten van de geluidsgolven die de microfoon tijdens het opnemen in de loop van de tijd hebben geraakt. Er is een grote verscheidenheid aan formaten om deze samples op te slaan, maar een algemene benadering is om 10,000, 20,000 of zelfs 40,000 samples per seconde op te slaan, waarbij elke sample een geheel getal is van 0-65535 (twee bytes). Omdat elk monster alleen de intensiteit van geluidsgolven op een bepaald moment meet, zijn de geluidsgegevens over het algemeen niet nuttig voor ML-processen omdat het geen bruikbare functies heeft in de onbewerkte staat.

Om die gegevens bruikbaar te maken, wordt het geluidsvoorbeeld omgezet in een afbeelding genaamd a spectrogram, wat een weergave is van de audiogegevens die de intensiteit van verschillende frequentiebanden in de loop van de tijd laat zien. De volgende afbeelding toont een voorbeeld.

De X-as van dit beeld stelt de tijd voor, wat betekent dat de linkerrand van het beeld het begin van het geluid is en de rechterrand van het beeld het einde. Elke kolom met gegevens in de afbeelding vertegenwoordigt verschillende frequentiebanden (aangegeven door de schaal aan de linkerkant van de afbeelding), en de kleur op elk punt vertegenwoordigt de intensiteit van die frequentie op dat moment.

Verticale schaling voor spectrogrammen kan worden gewijzigd in andere representaties. Lineaire schaling betekent bijvoorbeeld dat de Y-as gelijkmatig over frequenties is verdeeld, logaritmische schaling gebruikt een log-schaal, enzovoort. Het probleem met het gebruik van deze representaties is dat de frequenties in een geluidsbestand meestal niet gelijkmatig zijn verdeeld, dus de meeste informatie waarin we mogelijk geรฏnteresseerd zijn, wordt uiteindelijk geclusterd aan de onderkant van het beeld (de lagere frequenties).

Om dat probleem op te lossen, is onze voorbeeldafbeelding een voorbeeld van a Mel-spectrogram, die is geschaald om nauwkeurig te benaderen hoe mensen geluid waarnemen. Let op de frequentie-indicatoren aan de linkerkant van de afbeelding - ze geven een idee van hoe ze verticaal zijn verdeeld, en het is duidelijk dat het een niet-lineaire schaal is.

Bovendien kunnen we de meting van de intensiteit per frequentie in de tijd aanpassen om verschillende kenmerken van de te meten audio te verbeteren. Net als bij de Y-asschaling die wordt geรฏmplementeerd door een Mel-spectrogram, benadrukken andere kenmerken zoals de intensiteit van de 12 onderscheidende toonhoogteklassen die worden gebruikt om muziek te bestuderen (chroma). Een andere klasse benadrukt horizontale (harmonische) kenmerken of verticale (percussieve) kenmerken. Het type geluid dat wordt gedetecteerd, moet het type spectrogram aansturen dat voor het detectiesysteem wordt gebruikt.

Het eerdere voorbeeldspectrogram vertegenwoordigt een muziekclip die iets meer dan 2 minuten duurt. Door in te zoomen worden meer details zichtbaar, zoals te zien is in de volgende afbeelding.

Detecteer audiogebeurtenissen met Amazon Rekognition PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

De cijfers bovenaan de afbeelding geven het aantal seconden aan vanaf het begin van het audiobestand. Je kunt duidelijk een reeks geluiden zien die zich meer dan vier keer per seconde lijken te herhalen, wat wordt aangegeven door de heldere kleuren onderaan het beeld.

Zoals je kunt zien, is dit een van de voordelen van het converteren van audio naar een spectrogram: verschillende geluiden zijn vaak gemakkelijk zichtbaar met het blote oog, en zelfs als ze dat niet zijn, kunnen ze vaak worden gedetecteerd met behulp van algoritmen voor het detecteren van computervisie-objecten. In feite is dit precies het proces dat we volgen om geluiden te detecteren.

Op zoek naar discrete geluiden in een spectrogram

Afhankelijk van de lengte van het audiobestand dat we zoeken, is het een uitdaging om een โ€‹โ€‹discreet geluid te vinden dat slechts een seconde of twee duurt. Raadpleeg het eerste spectrogram dat we hebben gedeeld - omdat we een volledige 3:30 minuten aan gegevens bekijken, zijn details die slechts een seconde duren niet zichtbaar. We hebben flink ingezoomd om het ritme te zien dat in de tweede afbeelding wordt weergegeven. Het is duidelijk dat we bij grotere geluidsbestanden (en dus veel grotere spectrogrammen) snel in de problemen komen, tenzij we een andere aanpak gebruiken. Die aanpak heet raamwerk.

Windowing verwijst naar het gebruik van een schuifvenster dat over het hele spectrogram beweegt en een paar seconden (of minder) per keer isoleert. Door herhaaldelijk delen van het totale beeld te isoleren, krijgen we kleinere afbeeldingen die kunnen worden doorzocht op de aanwezigheid van het te detecteren geluid. Omdat elk venster slechts een deel van de afbeelding kan opleveren waarnaar we op zoek zijn (zoals in het geval van het zoeken naar een geluid dat niet precies aan het begin van een venster begint), wordt windowing vaak uitgevoerd met opeenvolgende vensters die elkaar overlappen. Het eerste venster begint bijvoorbeeld om 0:00 en verlengt 2 seconden, het tweede venster begint om 0:01 en verlengt 2 seconden, en het derde venster begint om 0:02 en verlengt 2 seconden, enzovoort.

Windowing splitst een spectrogrambeeld horizontaal. We kunnen de effectiviteit van het detectieproces verbeteren door bepaalde frequentiebanden te isoleren door alleen bepaalde verticale delen van het beeld bij te snijden of te doorzoeken. Als u bijvoorbeeld weet dat de alarmbel die u wilt detecteren geluiden maakt die variรซren van de ene specifieke frequentie tot de andere, kunt u het huidige venster wijzigen om alleen die frequentiebereiken in aanmerking te nemen. Dat vermindert de hoeveelheid gegevens die moet worden gemanipuleerd enorm en resulteert in een veel snellere zoekopdracht. Het verbetert ook de nauwkeurigheid, omdat het mogelijke fout-positieve overeenkomsten elimineert die optreden in frequentiebanden buiten het gewenste bereik. De volgende afbeeldingen vergelijken een volledige Y-as (links) met een beperkte Y-as (rechts).

Volledige Y-as

Volledige Y-as

Beperkte Y-as

Beperkte Y-as

Nu we weten hoe we een spectrogram moeten doorlopen met een vensterbenadering en filteren op bepaalde frequentiebanden, is de volgende stap het daadwerkelijke zoeken naar het geluid. Daarvoor gebruiken we Aangepaste labels voor Amazon-herkenning. De functie Rekognition Custom Labels bouwt voort op de bestaande mogelijkheden van Amazon Rekognition, die al is getraind op tientallen miljoenen afbeeldingen in vele categorieรซn. In plaats van duizenden afbeeldingen, hoeft u alleen maar een kleine set trainingsafbeeldingen te uploaden (meestal een paar honderd afbeeldingen, maar de optimale grootte van de trainingsdataset moet experimenteel worden bereikt op basis van de specifieke use case om onder- of overtraining van het model te voorkomen ) die specifiek zijn voor uw gebruiksscenario via de Rekognition Custom Labels-console.

Als uw afbeeldingen al zijn gelabeld, is Amazon Rekognition-training toegankelijk met slechts een paar klikken. U kunt de afbeeldingen ook rechtstreeks labelen in de labelinterface van Amazon Rekognition, of gebruik Amazon SageMaker Grondwaarheid om ze voor u te labelen. Wanneer Amazon Rekognition begint met trainen vanuit uw afbeeldingenset, produceert het in slechts een paar uur een aangepast beeldanalysemodel voor u. Achter de schermen laadt en inspecteert Rekognition Custom Labels automatisch de trainingsgegevens, selecteert het de juiste ML-algoritmen, traint een model en levert het modelprestatiestatistieken. U kunt dan uw aangepaste model gebruiken via de API voor herkenning van aangepaste labels en integreer het in uw applicaties.

Trainingsgegevens samenstellen en een Rekognition Custom Labels-model trainen

In het GitHub-opslagplaats gekoppeld aan dit bericht, vindt u een code die laat zien hoe u moet luisteren naar het geluid van een rookmelder die afgaat, ongeacht het achtergrondgeluid. In dit geval is ons Rekognition Custom Labels-model een binair classificatiemodel, wat betekent dat de resultaten ofwel 'rookalarmgeluid is gedetecteerd' of 'rookalarmgeluid is niet gedetecteerd' zijn.

Om een โ€‹โ€‹aangepast model te maken, hebben we trainingsgegevens nodig. Die trainingsgegevens bestaan โ€‹โ€‹uit twee hoofdtypen: omgevingsgeluiden en de geluiden die u wilt detecteren (zoals een rookalarm dat afgaat).

De omgevingsgegevens moeten een breed scala aan soundscapes vertegenwoordigen die typerend zijn voor de omgeving waarin u het geluid wilt detecteren. Als u bijvoorbeeld het geluid van een rookalarm in een fabrieksomgeving wilt detecteren, begint u met geluiden die in die fabrieksomgeving zijn opgenomen onder verschillende situaties (uiteraard zonder dat de rookmelder afgaat).

De geluiden die u wilt detecteren, moeten indien mogelijk worden geรฏsoleerd, wat betekent dat de opnames gewoon het geluid zelf moeten zijn zonder achtergrondgeluiden uit de omgeving. Voor ons voorbeeld is dat het geluid van een rookmelder die afgaat.

Nadat je deze geluiden hebt verzameld, laat de code in de GitHub-repo zien hoe je de omgevingsgeluiden op verschillende manieren kunt combineren met de rookalarmgeluiden (en ze vervolgens kunt converteren naar spectrogrammen) om een โ€‹โ€‹aantal afbeeldingen te maken die de omgevingsgeluiden vertegenwoordigen met en zonder de rookmelders erop. De volgende afbeelding is een voorbeeld van enkele omgevingsgeluiden met een rookalarmgeluid (de heldere horizontale balken) eroverheen.

Detecteer audiogebeurtenissen met Amazon Rekognition PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

De trainings- en testgegevens worden opgeslagen in een Amazon eenvoudige opslagservice (Amazon S3) emmer. De volgende directorystructuur is een goed startpunt om gegevens in de bucket te ordenen.

Detecteer audiogebeurtenissen met Amazon Rekognition PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Met de voorbeeldcode in de GitHub-opslagplaats kunt u kiezen hoeveel trainingsinstallatiekopieรซn u wilt maken. Rekognition Custom Labels vereist geen groot aantal trainingsafbeeldingen. Een trainingsset van 200-500 afbeeldingen zou voldoende moeten zijn.

Voor het maken van een Rekognition Custom Labels-project moet u de URI's opgeven van de S3-map die de trainingsgegevens en (optioneel) testgegevens bevat. Bij het specificeren van de gegevensbronnen voor de trainingstaak is een van de opties: Automatische etikettering, zoals weergegeven in de volgende schermafbeelding.

Detecteer audiogebeurtenissen met Amazon Rekognition PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Het gebruik van deze optie betekent dat Amazon Rekognition de namen van de mappen gebruikt als labelnamen. Voor onze rookmelderdetectie use case, ziet de mappenstructuur in de trein- en testmappen eruit als de volgende schermafbeelding.

Detecteer audiogebeurtenissen met Amazon Rekognition PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

De afbeeldingen met trainingsgegevens gaan naar die mappen, met spectrogrammen met het geluid van de rookmelder in de alarmmap en spectrogrammen die het geluid van de rookmelder niet bevatten in de no_alarm map. Amazon Rekognition gebruikt die namen als de namen van de uitvoerklassen voor het model voor aangepaste labels.

Het trainen van een aangepast labelmodel duurt meestal 30-90 minuten. Aan het einde van die training moet u het getrainde model starten zodat het beschikbaar wordt voor gebruik.

End-to-end architectuur voor geluidsdetectie

Nadat we ons model hebben gemaakt, is de volgende stap het opzetten van een inferentiepijplijn, zodat we het model kunnen gebruiken om te detecteren of een rookalarmgeluid aanwezig is in een audiobestand. Om dit te doen, moet het ingangsgeluid worden omgezet in een spectrogram en vervolgens worden vensters en gefilterd op frequentie, zoals werd gedaan voor het trainingsproces. Elk venster van het spectrogram wordt aan het model gegeven, dat een classificatie retourneert die aangeeft of het rookalarm afging of niet.

In het volgende diagram ziet u een voorbeeldarchitectuur die deze inferentiepijplijn implementeert.

Detecteer audiogebeurtenissen met Amazon Rekognition PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Deze architectuur wacht tot een audiobestand in een S3-bucket wordt geplaatst, wat vervolgens leidt tot een AWS Lambda functie op te roepen. Lambda is een serverloze, gebeurtenisgestuurde rekenservice waarmee je code kunt uitvoeren voor vrijwel elk type applicatie of backend-service zonder servers te hoeven inrichten of beheren. U kunt een Lambda-functie activeren vanuit meer dan 200 AWS-services en Software as a Service (SaaS)-toepassingen en alleen betalen voor wat u gebruikt.

De Lambda-functie ontvangt de naam van de bucket en de naam van de sleutel (of bestandsnaam) van het audiobestand. Het bestand wordt gedownload van Amazon S3 naar het geheugen van de functie, dat het vervolgens omzet in een spectrogram en windowing en frequentiefiltering uitvoert. Elk venstergedeelte van het spectrogram wordt vervolgens naar Amazon Rekognition gestuurd, dat het eerder getrainde Amazon Custom Labels-model gebruikt om het geluid te detecteren. Als dat geluid wordt gevonden, signaleert de Lambda-functie dat met behulp van een Amazon eenvoudige meldingsservice (Amazon SNS) melding. Amazon SNS biedt een pub/sub-benadering waar meldingen naar kunnen worden verzonden Amazon Simple Queue-service (Amazon SQS) wachtrijen, Lambda-functies, HTTPS-eindpunten, e-mailadressen, mobiele push en meer.

Conclusie

U kunt machine learning met audiogegevens gebruiken om te bepalen wanneer bepaalde geluiden optreden, zelfs wanneer andere geluiden tegelijkertijd optreden. Om dit te doen, moet het geluid worden omgezet in een spectrogrambeeld en vervolgens worden gezocht naar verschillende delen van dat spectrogram door vensters en filtering op frequentieband. Rekognition Custom Labels maakt het gemakkelijk om een โ€‹โ€‹aangepast model te trainen voor geluidsdetectie.

U kunt gebruik maken van de GitHub repo met de voorbeeldcode voor dit bericht als startpunt voor uw eigen experimenten. Raadpleeg voor meer informatie over detectie van audiogebeurtenissen: Detectie van geluidsgebeurtenissen: een zelfstudie.


Over de auteurs

Detecteer audiogebeurtenissen met Amazon Rekognition PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Greg Somerville is Senior Prototyping Architect in het AWS Prototyping en Cloud Engineering-team, waar hij AWS-klanten helpt bij het implementeren van innovatieve oplossingen voor uitdagende problemen met machine learning, IoT en serverloze technologieรซn. Hij woont in Ann Arbor, Michigan en beoefent graag yoga, verzorgt zijn honden en speelt poker.

Detecteer audiogebeurtenissen met Amazon Rekognition PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Jef Harman is Senior Prototyping Architect in het AWS Prototyping en Cloud Engineering-team, waar hij AWS-klanten helpt bij het implementeren van innovatieve oplossingen voor uitdagende problemen. Hij woont in Unionville, Connecticut en houdt van houtbewerking, smeden en Minecraft.

Tijdstempel:

Meer van AWS-machine learning