Upptäck ljudhändelser med Amazon Rekognition PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Upptäck ljudhändelser med Amazon Rekognition

När de flesta tänker på att använda maskininlärning (ML) med ljuddata, är det användningsfall som vanligtvis kommer att tänka på transkription, även känd som tal-till-text. Det finns dock andra användbara applikationer, inklusive att använda ML för att upptäcka ljud.

Att använda programvara för att upptäcka ett ljud kallas detektering av ljudhändelser, och den har ett antal tillämpningar. Anta till exempel att du vill övervaka ljudet från ett bullrigt fabriksgolv och lyssna efter en larmklocka som indikerar ett problem med en maskin. I en vårdmiljö kan du använda ljudhändelsedetektering för att passivt lyssna efter ljud från en patient som indikerar ett akut hälsoproblem. Media-arbetsbelastningar passar bra för denna teknik, till exempel för att upptäcka när en domare blåser i en sportvideo. Och naturligtvis kan du använda den här tekniken i en mängd olika övervakningsarbeten, som att lyssna efter ett skott eller ljudet av en bilolycka från en mikrofon monterad ovanför en stadsgata.

Det här inlägget beskriver hur man upptäcker ljud i en ljudfil även om det finns betydande bakgrundsljud som händer samtidigt. Dessutom, kanske överraskande nog, använder vi datorseende-baserade tekniker för att göra upptäckten, med hjälp av Amazon-erkännande.

Använda ljuddata med maskininlärning

Det första steget för att upptäcka ljudhändelser är att förstå hur ljuddata representeras. I det här inlägget behandlar vi endast inspelat ljud, även om dessa tekniker fungerar med strömmande ljud.

Inspelat ljud lagras vanligtvis som en sekvens av ljudprover, som mäter intensiteten av ljudvågorna som träffade mikrofonen under inspelning, över tid. Det finns en mängd olika format att lagra dessa sampel med, men ett vanligt tillvägagångssätt är att lagra 10,000 20,000, 40,000 0 eller till och med 65535 XNUMX sampel per sekund, där varje sampel är ett heltal från XNUMX–XNUMX (två byte). Eftersom varje sampel endast mäter intensiteten av ljudvågor vid ett visst ögonblick, är ljuddata i allmänhet inte till hjälp för ML-processer eftersom den inte har några användbara funktioner i sitt råa tillstånd.

För att göra denna data användbar konverteras ljudprovet till en bild som kallas a spektrogram, som är en representation av ljuddata som visar intensiteten för olika frekvensband över tiden. Följande bild visar ett exempel.

X-axeln i den här bilden representerar tid, vilket betyder att bildens vänstra kant är själva början av ljudet och bildens högra kant är slutet. Varje kolumn med data i bilden representerar olika frekvensband (anges av skalan på bildens vänstra sida), och färgen vid varje punkt representerar intensiteten för den frekvensen vid det ögonblicket.

Vertikal skalning för spektrogram kan ändras till andra representationer. Till exempel betyder linjär skalning att Y-axeln är jämnt uppdelad över frekvenser, logaritmisk skalning använder en log-skala och så vidare. Problemet med att använda dessa representationer är att frekvenserna i en ljudfil vanligtvis inte är jämnt fördelade, så det mesta av informationen vi kan vara intresserade av hamnar i kluster nära botten av bilden (de lägre frekvenserna).

För att lösa det problemet är vår exempelbild ett exempel på en Mel spektrogram, som är skalad för att nära approximera hur människor uppfattar ljud. Lägg märke till frekvensindikatorerna längs den vänstra sidan av bilden – de ger en uppfattning om hur de är fördelade vertikalt, och det är tydligt att det är en icke-linjär skala.

Dessutom kan vi modifiera mätningen av intensitet efter frekvens efter tid för att förbättra olika funktioner hos ljudet som mäts. Liksom med Y-axelns skalning som implementeras av ett Mel-spektrogram, betonar andra funktioner som intensiteten hos de 12 distinkta tonhöjdsklasserna som används för att studera musik (chroma). En annan klass betonar horisontella (harmoniska) drag eller vertikala (slagverkande) drag. Typen av ljud som detekteras bör driva den typ av spektrogram som används för detektionssystemet.

Det tidigare exemplet spektrogrammet representerar ett musikklipp som är drygt 2 minuter långt. Att zooma in avslöjar fler detaljer, som visas i följande bild.

Upptäck ljudhändelser med Amazon Rekognition PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Siffrorna längst upp på bilden visar antalet sekunder från början av ljudfilen. Du kan tydligt se en sekvens av ljud som verkar upprepas mer än fyra gånger per sekund, vilket indikeras av de ljusa färgerna nära botten av bilden.

Som du kan se är detta en av fördelarna med att konvertera ljud till ett spektrogram – distinkta ljud är ofta lätta att se med blotta ögat, och även om de inte är det, kan de ofta upptäckas med hjälp av algoritmer för detektering av objekt för datorseende. I själva verket är det precis den här processen vi följer för att upptäcka ljud.

Letar efter diskreta ljud i ett spektrogram

Beroende på längden på ljudfilen som vi söker är det en utmaning att hitta ett diskret ljud som varar bara en sekund eller två. Se det första spektrogrammet vi delade – eftersom vi tittar på hela 3:30 minuter av data, detaljer som bara varar i en sekund eller så är inte synliga. Vi zoomade in en hel del för att se rytmen som visas i den andra bilden. Det är klart att med större ljudfiler (och därför mycket större spektrogram) stöter vi snabbt på problem om vi inte använder ett annat tillvägagångssätt. Det tillvägagångssättet kallas fönster.

Windowing hänvisar till att använda ett glidfönster som rör sig över hela spektrogrammet och isolerar några sekunder (eller mindre) åt gången. Genom att upprepade gånger isolera delar av den totala bilden får vi mindre bilder som är sökbara för närvaron av ljudet som ska detekteras. Eftersom varje fönster bara kan resultera i en del av bilden vi letar efter (som i fallet med att söka efter ett ljud som inte startar exakt i början av ett fönster), utförs fönsterbildning ofta med efterföljande fönster som överlappas. Till exempel börjar det första fönstret kl. 0:00 och sträcker sig 2 sekunder, sedan börjar det andra fönstret kl. 0:01 och sträcker sig 2 sekunder, och det tredje fönstret börjar kl. 0:02 och sträcker sig 2 sekunder, och så vidare.

Windowing delar en spektrogrambild horisontellt. Vi kan förbättra effektiviteten i detekteringsprocessen genom att isolera vissa frekvensband genom att beskära eller endast söka i vissa vertikala delar av bilden. Om du till exempel vet att larmklockan du vill upptäcka skapar ljud som sträcker sig från en specifik frekvens till en annan, kan du ändra det aktuella fönstret så att det bara tar hänsyn till dessa frekvensområden. Det minskar avsevärt mängden data som ska manipuleras och resulterar i en mycket snabbare sökning. Det förbättrar också noggrannheten, eftersom det eliminerar möjliga falska positiva matchningar som inträffar i frekvensband utanför det önskade området. Följande bilder jämför en fullständig Y-axel (vänster) med en begränsad Y-axel (höger).

Full Y-axel

Full Y-axel

Begränsad Y-axel

Begränsad Y-axel

Nu när vi vet hur man itererar över ett spektrogram med ett fönstertillvägagångssätt och filtrerar till vissa frekvensband, är nästa steg att göra själva sökningen efter ljudet. För det använder vi Amazon Rekognition anpassade etiketter. Funktionen Rekognition Custom Labels bygger på de befintliga funktionerna hos Amazon Rekognition, som redan tränas på tiotals miljoner bilder i många kategorier. Istället för tusentals bilder behöver du helt enkelt ladda upp en liten uppsättning träningsbilder (vanligtvis några hundra bilder, men optimal träningsdatauppsättningsstorlek bör uppnås experimentellt baserat på det specifika användningsfallet för att undvika under- eller överträning av modellen ) som är specifika för ditt användningsfall via Rekognition Custom Labels-konsolen.

Om dina bilder redan är märkta är Amazon Rekognition-utbildning tillgänglig med bara några få klick. Alternativt kan du märka bilderna direkt i Amazon Rekognition-etiketteringsgränssnittet, eller använda Amazon SageMaker Ground Sannhet för att märka dem åt dig. När Amazon Rekognition börjar träna från din bilduppsättning producerar den en anpassad bildanalysmodell åt dig på bara några timmar. Bakom kulisserna laddar och inspekterar Rekognition Custom Labels automatiskt träningsdata, väljer rätt ML-algoritmer, tränar en modell och tillhandahåller modellprestandamått. Du kan sedan använda din anpassade modell via Rekognition Custom Labels API och integrera det i dina applikationer.

Sammanställning av träningsdata och utbildning av en Rekognition Custom Labels-modell

I GitHub-repo kopplat till det här inlägget, hittar du kod som visar hur du lyssnar efter ljudet av en brandvarnare som går igång, oavsett bakgrundsljud. I det här fallet är vår Rekognition Custom Labels-modell en binär klassificeringsmodell, vilket innebär att resultaten antingen är "röklarmljud upptäcktes" eller "röklarmljud upptäcktes inte."

För att skapa en anpassad modell behöver vi utbildningsdata. Den träningsdatan består av två huvudtyper: omgivningsljud och de ljud du vill upptäcka (som en brandvarnare som går igång).

Miljödatan bör representera en mängd olika ljudlandskap som är typiska för den miljö du vill upptäcka ljudet i. Om du till exempel vill upptäcka ett brandvarnarljud i en fabriksmiljö, börja med ljud som spelats in i den fabriksmiljön under en mängd olika situationer (utan brandvarnaren så klart).

Ljuden du vill upptäcka bör isoleras om möjligt, vilket innebär att inspelningarna bara ska vara själva ljudet utan några miljömässiga bakgrundsljud. För vårt exempel är det ljudet av en brandvarnare som går igång.

Efter att du har samlat in dessa ljud visar koden i GitHub-repo hur man kombinerar miljöljuden med brandvarnarljuden på olika sätt (och sedan konverterar dem till spektrogram) för att skapa ett antal bilder som representerar miljöljuden med och utan brandvarnarljud överlagrade på dem. Följande bild är ett exempel på några miljöljud med ett brandvarnarljud (de ljusa horisontella staplarna) ovanpå.

Upptäck ljudhändelser med Amazon Rekognition PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Tränings- och testdata lagras i en Amazon enkel lagringstjänst (Amazon S3) hink. Följande katalogstruktur är en bra utgångspunkt för att organisera data i hinken.

Upptäck ljudhändelser med Amazon Rekognition PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Exempelkoden i GitHub-repo låter dig välja hur många träningsbilder du vill skapa. Rekognition Custom Labels kräver inte ett stort antal träningsbilder. En träningsuppsättning på 200–500 bilder borde räcka.

För att skapa ett Rekognition Custom Labels-projekt krävs att du anger URI:erna för S3-mappen som innehåller träningsdata och (valfritt) testdata. När du anger datakällorna för utbildningsjobbet är ett av alternativen Automatisk märkning, som visas i följande skärmdump.

Upptäck ljudhändelser med Amazon Rekognition PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Att använda det här alternativet innebär att Amazon Rekognition använder namnen på mapparna som etikettnamn. För vårt användningsfall för brandvarnare, ser mappstrukturen inuti tåget och testmappar ut som följande skärmdump.

Upptäck ljudhändelser med Amazon Rekognition PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Träningsdatabilderna hamnar i dessa mappar, med spektrogram som innehåller ljudet från brandvarnaren som går i larmmappen och spektrogram som inte innehåller brandvarnarljudet i no_alarm mapp. Amazon Rekognition använder dessa namn som utdataklassnamn för den anpassade etikettmodellen.

Att träna en anpassad etikettmodell tar vanligtvis 30–90 minuter. I slutet av den utbildningen måste du starta den tränade modellen så att den blir tillgänglig för användning.

End-to-end-arkitektur för ljuddetektering

När vi har skapat vår modell är nästa steg att sätta upp en inferenspipeline, så att vi kan använda modellen för att upptäcka om ett brandvarnarljud finns i en ljudfil. För att göra detta måste ingångsljudet omvandlas till ett spektrogram och sedan fönster och filtreras efter frekvens, som gjordes för träningsprocessen. Varje fönster i spektrogrammet ges till modellen, som returnerar en klassificering som indikerar om brandvarnaren har ljudit eller inte.

Följande diagram visar ett exempel på arkitektur som implementerar denna slutledningspipeline.

Upptäck ljudhändelser med Amazon Rekognition PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Denna arkitektur väntar på att en ljudfil ska placeras i en S3-hink, vilket sedan orsakar en AWS Lambda funktion som ska anropas. Lambda är en serverlös, händelsedriven beräkningstjänst som låter dig köra kod för praktiskt taget alla typer av applikationer eller backend-tjänster utan att tillhandahålla eller hantera servrar. Du kan trigga en Lambda-funktion från över 200 AWS-tjänster och SaaS-applikationer (Software as a Service), och bara betala för det du använder.

Lambdafunktionen tar emot namnet på hinken och namnet på nyckeln (eller filnamnet) för ljudfilen. Filen laddas ner från Amazon S3 till funktionens minne, som sedan omvandlar den till ett spektrogram och utför fönster- och frekvensfiltrering. Varje fönsterparti av spektrogrammet skickas sedan till Amazon Rekognition, som använder den tidigare tränade Amazon Custom Labels-modellen för att upptäcka ljudet. Om det ljudet hittas signalerar lambdafunktionen att genom att använda en Amazon enkel meddelandetjänst (Amazon SNS) meddelande. Amazon SNS erbjuder en pub/sub-metod dit meddelanden kan skickas till Amazon enkel kötjänst (Amazon SQS) köer, Lambda-funktioner, HTTPS-slutpunkter, e-postadresser, mobil push och mer.

Slutsats

Du kan använda maskininlärning med ljuddata för att avgöra när vissa ljud uppstår, även när andra ljud uppträder samtidigt. För att göra det krävs att ljudet konverteras till en spektrogrambild och sedan går in på olika delar av det spektrogrammet genom att fönster och filtrera efter frekvensband. Rekognition Custom Labels gör det enkelt att träna en anpassad modell för ljuddetektering.

Du kan använda GitHub repo som innehåller exempelkoden för det här inlägget som utgångspunkt för dina egna experiment. För mer information om ljudhändelsedetektering, se Ljudhändelsedetektering: En handledning.


Om författarna

Upptäck ljudhändelser med Amazon Rekognition PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Greg Sommerville är en Senior Prototyping Architect på AWS Prototyping and Cloud Engineering-teamet, där han hjälper AWS-kunder att implementera innovativa lösningar på utmanande problem med maskininlärning, IoT och serverlösa teknologier. Han bor i Ann Arbor, Michigan och tycker om att utöva yoga, servera sina hundar och spela poker.

Upptäck ljudhändelser med Amazon Rekognition PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Jeff Harman är en Senior Prototyping Architect på AWS Prototyping and Cloud Engineering-teamet, där han hjälper AWS-kunder att implementera innovativa lösningar på utmanande problem. Han bor i Unionville, Connecticut och tycker om träbearbetning, smide och Minecraft.

Tidsstämpel:

Mer från AWS maskininlärning