Registrer lydbegivenheder med Amazon Rekognition PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Registrer lydbegivenheder med Amazon Rekognition

Når de fleste mennesker tænker på at bruge machine learning (ML) med lyddata, er den use case, der normalt kommer til at tænke på transkription, også kendt som tale-til-tekst. Der er dog andre nyttige applikationer, herunder at bruge ML til at registrere lyde.

Brug af software til at registrere en lyd kaldes registrering af lydhændelser, og det har en række applikationer. Antag for eksempel, at du vil overvåge lydene fra et støjende fabriksgulv og lytte efter en alarmklokke, der indikerer et problem med en maskine. I et sundhedsmiljø kan du bruge lydhændelsesdetektion til passivt at lytte efter lyde fra en patient, der indikerer et akut helbredsproblem. Mediearbejdsbelastninger passer godt til denne teknik, for eksempel til at registrere, når en dommer fløjter i en sportsvideo. Og selvfølgelig kan du bruge denne teknik i en række forskellige overvågningsopgaver, som at lytte efter et skud eller lyden af ​​et biluheld fra en mikrofon monteret over en bygade.

Dette indlæg beskriver, hvordan man registrerer lyde i en lydfil, selvom der sker betydelige baggrundslyde på samme tid. Hvad mere er, måske overraskende, bruger vi computersynsbaserede teknikker til at foretage detektionen, vha. Amazon-anerkendelse.

Brug af lyddata med maskinlæring

Det første trin i detektering af lydhændelser er at forstå, hvordan lyddata repræsenteres. I forbindelse med dette indlæg beskæftiger vi os kun med optaget lyd, selvom disse teknikker fungerer med streaming af lyd.

Optaget lyd gemmes typisk som en sekvens af lydprøver, som måler intensiteten af ​​de lydbølger, der ramte mikrofonen under optagelse, over tid. Der er en lang række formater til at gemme disse samples med, men en almindelig tilgang er at gemme 10,000, 20,000 eller endda 40,000 samples i sekundet, hvor hver sample er et heltal fra 0-65535 (to bytes). Fordi hver prøve kun måler intensiteten af ​​lydbølger på et bestemt tidspunkt, er lyddataene generelt ikke nyttige for ML-processer, fordi de ikke har nogen nyttige funktioner i sin rå tilstand.

For at gøre disse data nyttige, konverteres lydeksemplet til et billede kaldet a spektrogram, som er en repræsentation af lyddataene, der viser intensiteten af ​​forskellige frekvensbånd over tid. Følgende billede viser et eksempel.

X-aksen på dette billede repræsenterer tid, hvilket betyder, at venstre kant af billedet er begyndelsen af ​​lyden, og højre kant af billedet er slutningen. Hver kolonne med data i billedet repræsenterer forskellige frekvensbånd (angivet af skalaen i venstre side af billedet), og farven på hvert punkt repræsenterer intensiteten af ​​den frekvens på det tidspunkt.

Vertikal skalering for spektrogrammer kan ændres til andre repræsentationer. For eksempel betyder lineær skalering, at Y-aksen er jævnt fordelt over frekvenser, logaritmisk skalering bruger en log-skala og så videre. Problemet med at bruge disse repræsentationer er, at frekvenserne i en lydfil normalt ikke er jævnt fordelt, så det meste af den information, vi kunne være interesseret i, ender med at blive grupperet nær bunden af ​​billedet (de lavere frekvenser).

For at løse dette problem er vores eksempelbillede et eksempel på en Mel spektrogram, som er skaleret til tæt at tilnærme, hvordan mennesker opfatter lyd. Læg mærke til frekvensindikatorerne langs venstre side af billedet – de giver en idé om, hvordan de er fordelt lodret, og det er tydeligt, at det er en ikke-lineær skala.

Derudover kan vi ændre målingen af ​​intensitet efter frekvens efter tid for at forbedre forskellige funktioner i den lyd, der måles. Som med Y-akse-skaleringen, der er implementeret af et Mel-spektrogram, fremhæver andre funktioner såsom intensiteten af ​​de 12 karakteristiske tonehøjdeklasser, der bruges til at studere musik (chroma). En anden klasse lægger vægt på horisontale (harmoniske) træk eller vertikale (perkussive) træk. Den type lyd, der detekteres, skal drive den type spektrogram, der bruges til detektionssystemet.

Det tidligere eksempelspektrogram repræsenterer et musikklip, der er lidt over 2 minutter langt. Zoom ind afslører flere detaljer, som vist på det følgende billede.

Registrer lydbegivenheder med Amazon Rekognition PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Tallene langs toppen af ​​billedet viser antallet af sekunder fra starten af ​​lydfilen. Du kan tydeligt se en sekvens af lyde, der ser ud til at gentages mere end fire gange i sekundet, angivet af de lyse farver nær bunden af ​​billedet.

Som du kan se, er dette en af ​​fordelene ved at konvertere lyd til et spektrogram - særskilte lyde er ofte let synlige med det blotte øje, og selvom de ikke er det, kan de ofte detekteres ved hjælp af computervision-objektdetektionsalgoritmer. Faktisk er det netop denne proces, vi følger for at detektere lyde.

Leder efter diskrete lyde i et spektrogram

Afhængigt af længden af ​​den lydfil, vi søger, er det en udfordring at finde en diskret lyd, der varer blot et sekund eller to. Se det første spektrogram, vi delte - fordi vi ser hele 3:30 minutters data, detaljer, der kun varer et sekund eller deromkring, er ikke synlige. Vi zoomede meget ind for at se rytmen, der vises på det andet billede. Det er klart, at med større lydfiler (og derfor meget større spektrogrammer) løber vi hurtigt ind i problemer, medmindre vi bruger en anden tilgang. Den tilgang kaldes vinduer.

Windowing refererer til at bruge et glidende vindue, der bevæger sig hen over hele spektrogrammet og isolerer nogle få sekunder (eller mindre) ad gangen. Ved gentagne gange at isolere dele af det samlede billede får vi mindre billeder, der er søgbare for tilstedeværelsen af ​​den lyd, der skal detekteres. Fordi hvert vindue kun kan resultere i en del af det billede, vi leder efter (som i tilfældet med at søge efter en lyd, der ikke starter nøjagtigt i starten af ​​et vindue), udføres vinduesvisning ofte med efterfølgende vinduer, der overlappes. For eksempel starter det første vindue klokken 0:00 og forlænges 2 sekunder, derefter starter det andet vindue klokken 0:01 og forlænges 2 sekunder, og det tredje vindue starter klokken 0:02 og forlænges 2 sekunder, og så videre.

Windowing opdeler et spektrogrambillede vandret. Vi kan forbedre effektiviteten af ​​detektionsprocessen ved at isolere visse frekvensbånd ved at beskære eller kun søge i bestemte lodrette dele af billedet. For eksempel, hvis du ved, at den alarmklokke, du vil registrere, skaber lyde, der spænder fra en bestemt frekvens til en anden, kan du ændre det aktuelle vindue til kun at tage hensyn til disse frekvensområder. Det reducerer i høj grad mængden af ​​data, der skal manipuleres, og resulterer i en meget hurtigere søgning. Det forbedrer også nøjagtigheden, fordi det eliminerer mulige falske positive matches, der forekommer i frekvensbånd uden for det ønskede område. De følgende billeder sammenligner en fuld Y-akse (venstre) med en begrænset Y-akse (højre).

Fuld Y-akse

Fuld Y-akse

Begrænset Y-akse

Begrænset Y-akse

Nu hvor vi ved, hvordan man itererer over et spektrogram med en vinduestilgang og filtrerer til bestemte frekvensbånd, er næste trin at lave selve søgningen efter lyden. Til det bruger vi Tilpassede etiketter til Amazon-genkendelse. Funktionen Rekognition Custom Labels bygger på de eksisterende muligheder i Amazon Rekognition, som allerede er trænet på titusinder af billeder på tværs af mange kategorier. I stedet for tusindvis af billeder skal du blot uploade et lille sæt træningsbilleder (typisk et par hundrede billeder, men optimal træningsdatasætstørrelse bør opnås eksperimentelt baseret på den specifikke use case for at undgå under- eller overtræning af modellen ), der er specifikke for din brugssituation via Rekognition Custom Labels-konsollen.

Hvis dine billeder allerede er mærket, er Amazon Rekognition-træning tilgængelig med blot et par klik. Alternativt kan du mærke billederne direkte i Amazon Rekognition-mærkningsgrænsefladen eller bruge Amazon SageMaker Ground Truth at mærke dem for dig. Når Amazon Rekognition begynder at træne fra dit billedsæt, producerer det en tilpasset billedanalysemodel til dig på få timer. Bag kulisserne indlæser og inspicerer Rekognition Custom Labels automatisk træningsdataene, vælger de rigtige ML-algoritmer, træner en model og leverer modelpræstationsmålinger. Du kan derefter bruge din brugerdefinerede model via Anerkendelse Custom Labels API og integrere det i dine applikationer.

Samling af træningsdata og træning af en Rekognition Custom Labels-model

I GitHub-repo tilknyttet dette indlæg, finder du kode, der viser, hvordan du lytter efter lyden af ​​en røgalarm, der går i gang, uanset baggrundsstøj. I dette tilfælde er vores Rekognition Custom Labels-model en binær klassifikationsmodel, hvilket betyder, at resultaterne enten er "røgalarmlyd blev registreret" eller "røgalarmlyd blev ikke registreret."

For at skabe en tilpasset model har vi brug for træningsdata. Disse træningsdata består af to hovedtyper: omgivende lyde og de lyde, du ønsker at detektere (som en røgalarm, der går i gang).

Miljødataene bør repræsentere en bred vifte af lydlandskaber, der er typiske for det miljø, du ønsker at detektere lyden i. Hvis du f.eks. ønsker at detektere en røgalarmlyd i et fabriksmiljø, skal du starte med lyde optaget i det pågældende fabriksmiljø under en række forskellige situationer (uden at røgalarmen lyder, selvfølgelig).

De lyde, du ønsker at detektere, skal isoleres, hvis det er muligt, hvilket betyder, at optagelserne kun skal være selve lyden uden nogen baggrundslyde fra omgivelserne. For vores eksempel er det lyden af ​​en røgalarm, der går i gang.

Efter at du har samlet disse lyde, viser koden i GitHub-reposen, hvordan du kombinerer miljølydene med røgalarmlydene på forskellige måder (og derefter konverterer dem til spektrogrammer) for at skabe et antal billeder, der repræsenterer miljølydene med og uden røgalarmlydene overlejret på dem. Det følgende billede er et eksempel på nogle miljølyde med en røgalarmlyd (de lyse vandrette bjælker) overlejret ovenpå.

Registrer lydbegivenheder med Amazon Rekognition PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Trænings- og testdataene gemmes i en Amazon Simple Storage Service (Amazon S3) spand. Følgende mappestruktur er et godt udgangspunkt for at organisere data i bøtten.

Registrer lydbegivenheder med Amazon Rekognition PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Eksempelkoden i GitHub-reposen giver dig mulighed for at vælge, hvor mange træningsbilleder du vil oprette. Tilpassede etiketter for anerkendelse kræver ikke et stort antal træningsbilleder. Et træningssæt på 200-500 billeder burde være tilstrækkeligt.

Oprettelse af et Rekognition Custom Labels-projekt kræver, at du angiver URI'erne for S3-mappen, der indeholder træningsdataene og (valgfrit) testdata. Når du angiver datakilderne for uddannelsesjobbet, er en af ​​mulighederne Automatisk mærkning, som vist i følgende skærmbillede.

Registrer lydbegivenheder med Amazon Rekognition PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Brug af denne mulighed betyder, at Amazon Rekognition bruger navnene på mapperne som etiketnavne. For vores røgalarmdetektionsbrug ser mappestrukturen inde i toget og testmapperne ud som følgende skærmbillede.

Registrer lydbegivenheder med Amazon Rekognition PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Træningsdatabillederne går ind i disse mapper, med spektrogrammer, der indeholder lyden fra røgalarmen, der går i alarmmappen, og spektrogrammer, der ikke indeholder røgalarmlyden i no_alarm folder. Amazon Rekognition bruger disse navne som outputklassenavne for modellen med brugerdefinerede etiketter.

Træning af en brugerdefineret etiketmodel tager normalt 30-90 minutter. Ved afslutningen af ​​den træning skal du starte den trænede model, så den bliver tilgængelig til brug.

End-to-end-arkitektur til lyddetektion

Når vi har oprettet vores model, er næste trin at opsætte en inferenspipeline, så vi kan bruge modellen til at registrere, om der er en røgalarmlyd i en lydfil. For at gøre dette skal inputlyden omdannes til et spektrogram og derefter vindues- og filtreres efter frekvens, som det blev gjort for træningsprocessen. Hvert vindue i spektrogrammet er givet til modellen, som returnerer en klassificering, der angiver, om røgalarmen lød eller ej.

Følgende diagram viser et eksempel på arkitektur, der implementerer denne inferenspipeline.

Registrer lydbegivenheder med Amazon Rekognition PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Denne arkitektur venter på, at en lydfil bliver placeret i en S3-bøtte, hvilket så forårsager en AWS Lambda funktion, der skal aktiveres. Lambda er en serverløs, hændelsesdrevet beregningstjeneste, der lader dig køre kode til stort set enhver type applikation eller backend-tjeneste uden at klargøre eller administrere servere. Du kan udløse en Lambda-funktion fra over 200 AWS-tjenester og software as a service-applikationer (SaaS) og kun betale for det, du bruger.

Lambdafunktionen modtager navnet på bøtten og navnet på nøglen (eller filnavnet) til lydfilen. Filen downloades fra Amazon S3 til funktionens hukommelse, som derefter konverterer den til et spektrogram og udfører vindues- og frekvensfiltrering. Hver vinduesdel af spektrogrammet sendes derefter til Amazon Rekognition, som bruger den tidligere trænede Amazon Custom Labels-model til at registrere lyden. Hvis den lyd findes, signalerer Lambda-funktionen, at ved at bruge en Amazon Simple Notification Service (Amazon SNS) meddelelse. Amazon SNS tilbyder en pub/sub-tilgang, hvor meddelelser kan sendes til Amazon Simple Queue Service (Amazon SQS) køer, Lambda-funktioner, HTTPS-endepunkter, e-mail-adresser, mobil-push og mere.

Konklusion

Du kan bruge maskinlæring med lyddata til at bestemme, hvornår visse lyde opstår, selv når andre lyde opstår på samme tid. For at gøre det kræver det at konvertere lyden til et spektrogrambillede og derefter søge ind på forskellige dele af det spektrogram ved at vinduer og filtrere efter frekvensbånd. Rekognition Custom Labels gør det nemt at træne en brugerdefineret model til lyddetektion.

Du kan bruge GitHub repo indeholdende eksempelkoden til dette indlæg som udgangspunkt for dine egne eksperimenter. For mere information om registrering af lydhændelser, se Lydhændelsesdetektion: En vejledning.


Om forfatterne

Registrer lydbegivenheder med Amazon Rekognition PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Greg Sommerville er Senior Prototyping Architect på AWS Prototyping and Cloud Engineering-teamet, hvor han hjælper AWS-kunder med at implementere innovative løsninger på udfordrende problemer med maskinlæring, IoT og serverløse teknologier. Han bor i Ann Arbor, Michigan og nyder at dyrke yoga, tage sig af sine hunde og spille poker.

Registrer lydbegivenheder med Amazon Rekognition PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Jeff Harman er Senior Prototyping Architect på AWS Prototyping and Cloud Engineering team, hvor han hjælper AWS kunder med at implementere innovative løsninger på udfordrende problemer. Han bor i Unionville, Connecticut og nyder træarbejde, smedearbejde og Minecraft.

Tidsstempel:

Mere fra AWS maskinindlæring