Oppdag lydhendelser med Amazon Rekognition PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Oppdag lydhendelser med Amazon Rekognition

Når de fleste tenker på å bruke maskinlæring (ML) med lyddata, er brukssaken som vanligvis kommer til tankene transkripsjon, også kjent som tale-til-tekst. Det finnes imidlertid andre nyttige applikasjoner, inkludert bruk av ML for å oppdage lyder.

Å bruke programvare for å oppdage en lyd kalles deteksjon av lydhendelser, og den har en rekke applikasjoner. Anta for eksempel at du vil overvåke lydene fra et støyende fabrikkgulv, lytte etter en alarmklokke som indikerer et problem med en maskin. I et helsemiljø kan du bruke lydhendelsesdeteksjon til å passivt lytte etter lyder fra en pasient som indikerer et akutt helseproblem. Mediearbeidsmengder passer godt for denne teknikken, for eksempel for å oppdage når en dommers fløyte blåses i en sportsvideo. Og selvfølgelig kan du bruke denne teknikken i en rekke overvåkingsarbeid, som å lytte etter et skudd eller lyden av en bilulykke fra en mikrofon montert over en bygate.

Dette innlegget beskriver hvordan du oppdager lyder i en lydfil selv om det er betydelige bakgrunnslyder som skjer samtidig. Dessuten bruker vi kanskje overraskende datasynsbaserte teknikker for å gjøre deteksjonen ved å bruke Amazon-anerkjennelse.

Bruk av lyddata med maskinlæring

Det første trinnet i å oppdage lydhendelser er å forstå hvordan lyddata er representert. For formålet med dette innlegget tar vi bare for oss innspilt lyd, selv om disse teknikkene fungerer med streaming av lyd.

Innspilt lyd lagres vanligvis som en sekvens av lydprøver, som måler intensiteten til lydbølgene som traff mikrofonen under opptak, over tid. Det finnes et bredt utvalg av formater for å lagre disse prøvene, men en vanlig tilnærming er å lagre 10,000 20,000, 40,000 0 eller til og med 65535 XNUMX prøver per sekund, hvor hver prøve er et heltall fra XNUMX–XNUMX (to byte). Fordi hver prøve kun måler intensiteten til lydbølger i et bestemt øyeblikk, er ikke lyddataene generelt nyttige for ML-prosesser fordi de ikke har noen nyttige funksjoner i sin rå tilstand.

For å gjøre disse dataene nyttige, konverteres lydeksemplet til et bilde kalt a spektrogram, som er en representasjon av lyddataene som viser intensiteten til forskjellige frekvensbånd over tid. Følgende bilde viser et eksempel.

X-aksen til dette bildet representerer tid, noe som betyr at venstre kant av bildet er begynnelsen på lyden, og høyre kant av bildet er slutten. Hver kolonne med data i bildet representerer forskjellige frekvensbånd (indikert av skalaen på venstre side av bildet), og fargen på hvert punkt representerer intensiteten til den frekvensen på det tidspunktet.

Vertikal skalering for spektrogrammer kan endres til andre representasjoner. For eksempel betyr lineær skalering at Y-aksen er jevnt fordelt over frekvenser, logaritmisk skalering bruker en log-skala, og så videre. Problemet med å bruke disse representasjonene er at frekvensene i en lydfil vanligvis ikke er jevnt fordelt, så det meste av informasjonen vi kan være interessert i ender opp med å bli gruppert nær bunnen av bildet (de lavere frekvensene).

For å løse det problemet er eksempelbildet vårt et eksempel på en Mel spektrogram, som er skalert for å tilnærme hvordan mennesker oppfatter lyd. Legg merke til frekvensindikatorene langs venstre side av bildet – de gir en ide om hvordan de er fordelt vertikalt, og det er tydelig at det er en ikke-lineær skala.

I tillegg kan vi endre målingen av intensitet etter frekvens etter tid for å forbedre ulike funksjoner i lyden som måles. Som med Y-akse-skaleringen som er implementert av et Mel-spektrogram, legger andre vekt på funksjoner som intensiteten til de 12 karakteristiske tonehøydeklassene som brukes til å studere musikk (chroma). En annen klasse legger vekt på horisontale (harmoniske) trekk eller vertikale (perkussive) trekk. Lydtypen som blir detektert skal drive typen spektrogram som brukes for deteksjonssystemet.

Det tidligere eksempelspektrogrammet representerer et musikkklipp som er litt over 2 minutter langt. Zoom inn avslører flere detaljer, som vist på bildet nedenfor.

Oppdag lydhendelser med Amazon Rekognition PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Tallene langs toppen av bildet viser antall sekunder fra starten av lydfilen. Du kan tydelig se en sekvens av lyder som ser ut til å gjenta seg mer enn fire ganger per sekund, indikert av de lyse fargene nær bunnen av bildet.

Som du kan se, er dette en av fordelene med å konvertere lyd til et spektrogram - distinkte lyder er ofte lett synlige med det blotte øye, og selv om de ikke er det, kan de ofte oppdages ved hjelp av datasyn-objektdeteksjonsalgoritmer. Faktisk er dette nøyaktig prosessen vi følger for å oppdage lyder.

Leter etter diskrete lyder i et spektrogram

Avhengig av lengden på lydfilen vi søker, er det en utfordring å finne en diskret lyd som varer bare et sekund eller to. Se det første spektrogrammet vi delte – fordi vi ser på hele 3:30 minutter med data, detaljer som varer bare et sekund eller så er ikke synlige. Vi zoomet mye inn for å se rytmen som vises i det andre bildet. Det er klart at med større lydfiler (og derfor mye større spektrogrammer), får vi raskt problemer med mindre vi bruker en annen tilnærming. Den tilnærmingen kalles vinduer.

Windowing refererer til å bruke et skyvevindu som beveger seg over hele spektrogrammet, og isolerer noen få sekunder (eller mindre) om gangen. Ved gjentatte ganger å isolere deler av helhetsbildet får vi mindre bilder som er søkbare for tilstedeværelsen av lyden som skal oppdages. Fordi hvert vindu kan resultere i bare en del av bildet vi leter etter (som i tilfellet med å søke etter en lyd som ikke starter nøyaktig ved starten av et vindu), utføres vinduet ofte med påfølgende vinduer som overlappes. For eksempel starter det første vinduet klokken 0:00 og strekker seg 2 sekunder, deretter starter det andre vinduet klokken 0:01 og strekker seg 2 sekunder, og det tredje vinduet starter klokken 0:02 og strekker seg 2 sekunder, og så videre.

Windowing deler et spektrogrambilde horisontalt. Vi kan forbedre effektiviteten til deteksjonsprosessen ved å isolere visse frekvensbånd ved å beskjære eller søke kun i visse vertikale deler av bildet. Hvis du for eksempel vet at alarmklokken du vil oppdage lager lyder som spenner fra en spesifikk frekvens til en annen, kan du endre det gjeldende vinduet til kun å vurdere disse frekvensområdene. Det reduserer mengden data som skal manipuleres betraktelig, og resulterer i et mye raskere søk. Det forbedrer også nøyaktigheten, fordi det eliminerer mulige falske positive treff som forekommer i frekvensbånd utenfor ønsket område. Følgende bilder sammenligner en full Y-akse (venstre) med en begrenset Y-akse (høyre).

Full Y-akse

Full Y-akse

Begrenset Y-akse

Begrenset Y-akse

Nå som vi vet hvordan vi skal iterere over et spektrogram med en vindustilnærming og filtrere til bestemte frekvensbånd, er neste trinn å gjøre selve søket etter lyden. Til det bruker vi Amazon Rekognition Egendefinerte etiketter. Funksjonen Rekognition Custom Labels bygger på de eksisterende egenskapene til Amazon Rekognition, som allerede er trent på titalls millioner bilder i mange kategorier. I stedet for tusenvis av bilder, trenger du bare å laste opp et lite sett med treningsbilder (vanligvis noen få hundre bilder, men optimal treningsdatasettstørrelse bør oppnås eksperimentelt basert på den spesifikke brukssaken for å unngå under- eller overtrening av modellen ) som er spesifikke for brukstilfellet ditt via Rekognition Custom Labels-konsollen.

Hvis bildene dine allerede er merket, er Amazon Rekognition-opplæring tilgjengelig med bare noen få klikk. Alternativt kan du merke bildene direkte i Amazon Rekognition-merkingsgrensesnittet, eller bruke Amazon SageMaker Ground Truth for å merke dem for deg. Når Amazon Rekognition begynner å trene fra bildesettet ditt, produserer det en tilpasset bildeanalysemodell for deg på bare noen få timer. Bak kulissene laster og inspiserer Rekognition Custom Labels automatisk treningsdataene, velger de riktige ML-algoritmene, trener en modell og gir modellytelsesmålinger. Du kan deretter bruke din egendefinerte modell via Rekognition Custom Labels API og integrer den i applikasjonene dine.

Sammenstilling av treningsdata og opplæring av en Rekognition Custom Labels-modell

GitHub-repo knyttet til dette innlegget, finner du kode som viser hvordan du lytter etter lyden av en røykvarsler som går av, uavhengig av bakgrunnsstøy. I dette tilfellet er vår Rekognition Custom Labels-modell en binær klassifiseringsmodell, noe som betyr at resultatene enten er "lyd av røykvarsler ble oppdaget" eller "lyd av røykvarsler ble ikke oppdaget."

For å lage en tilpasset modell trenger vi treningsdata. Disse treningsdataene består av to hovedtyper: miljølyder og lydene du ønsker å oppdage (som en røykvarsler som går av).

Miljødataene skal representere et bredt utvalg av lydlandskap som er typiske for miljøet du ønsker å detektere lyden i. Hvis du for eksempel ønsker å oppdage en røykvarslerlyd i et fabrikkmiljø, start med lyder tatt opp i det fabrikkmiljøet under en rekke situasjoner (uten at røykvarsleren går, selvfølgelig).

Lydene du ønsker å oppdage bør om mulig isoleres, noe som betyr at opptakene bare skal være selve lyden uten bakgrunnslyder fra omgivelser. For vårt eksempel er det lyden av en røykvarsler som går av.

Etter at du har samlet disse lydene, viser koden i GitHub-repoen hvordan du kombinerer miljølydene med røykvarslerlydene på ulike måter (og deretter konverterer dem til spektrogrammer) for å lage en rekke bilder som representerer miljølydene med og uten røykvarsleren er lagt over dem. Følgende bilde er et eksempel på noen miljølyder med en røykvarslerlyd (de lyse horisontale stolpene) lagt over.

Oppdag lydhendelser med Amazon Rekognition PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Trenings- og testdataene lagres i en Amazon enkel lagringstjeneste (Amazon S3) bøtte. Følgende katalogstruktur er et godt utgangspunkt for å organisere data i bøtten.

Oppdag lydhendelser med Amazon Rekognition PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Eksempelkoden i GitHub-repoen lar deg velge hvor mange treningsbilder du vil lage. Egendefinerte etiketter for anerkjennelse krever ikke et stort antall treningsbilder. Et treningssett med 200–500 bilder bør være tilstrekkelig.

Oppretting av et Rekognition Custom Labels-prosjekt krever at du spesifiserer URIene til S3-mappen som inneholder treningsdataene, og (valgfritt) testdata. Når du spesifiserer datakildene for opplæringsjobben, er ett av alternativene Automatisk merking, som vist på følgende skjermbilde.

Oppdag lydhendelser med Amazon Rekognition PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Å bruke dette alternativet betyr at Amazon Rekognition bruker navnene på mappene som etikettnavn. For vår brukstilfelle for røykvarslere, ser mappestrukturen inne i toget og testmappene ut som følgende skjermbilde.

Oppdag lydhendelser med Amazon Rekognition PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Treningsdatabildene går inn i disse mappene, med spektrogrammer som inneholder lyden av røykvarsleren i alarmmappen, og spektrogrammer som ikke inneholder røykvarslerlyden i no_alarm mappe. Amazon Rekognition bruker disse navnene som utdataklassenavn for den tilpassede etikettmodellen.

Trening av en tilpasset etikettmodell tar vanligvis 30–90 minutter. På slutten av den opplæringen må du starte den trente modellen slik at den blir tilgjengelig for bruk.

End-to-end-arkitektur for lyddeteksjon

Etter at vi har laget vår modell, er neste trinn å sette opp en inferensrørledning, slik at vi kan bruke modellen til å oppdage om en røykvarslerlyd er tilstede i en lydfil. For å gjøre dette, må inngangslyden gjøres om til et spektrogram og deretter vinduet og filtrert etter frekvens, slik det ble gjort for treningsprosessen. Hvert vindu i spektrogrammet er gitt til modellen, som returnerer en klassifisering som indikerer om røykvarsleren gikk eller ikke.

Følgende diagram viser en eksempelarkitektur som implementerer denne inferensrørledningen.

Oppdag lydhendelser med Amazon Rekognition PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Denne arkitekturen venter på at en lydfil skal plasseres i en S3-bøtte, som deretter forårsaker en AWS Lambda funksjon som skal påberopes. Lambda er en serverløs, hendelsesdrevet databehandlingstjeneste som lar deg kjøre kode for praktisk talt alle typer applikasjoner eller backend-tjenester uten å klargjøre eller administrere servere. Du kan utløse en Lambda-funksjon fra over 200 AWS-tjenester og programvare som en tjeneste (SaaS)-applikasjoner, og kun betale for det du bruker.

Lambda-funksjonen mottar navnet på bøtten og navnet på nøkkelen (eller filnavnet) til lydfilen. Filen lastes ned fra Amazon S3 til funksjonens minne, som deretter konverterer den til et spektrogram og utfører vindus- og frekvensfiltrering. Hver vindudel av spektrogrammet sendes deretter til Amazon Rekognition, som bruker den tidligere opplærte Amazon Custom Labels-modellen for å oppdage lyden. Hvis den lyden blir funnet, signaliserer Lambda-funksjonen at ved å bruke en Amazon enkel varslingstjeneste (Amazon SNS) varsling. Amazon SNS tilbyr en pub/sub-tilnærming hvor varsler kan sendes til Amazon enkel køtjeneste (Amazon SQS) køer, Lambda-funksjoner, HTTPS-endepunkter, e-postadresser, mobil-push og mer.

konklusjonen

Du kan bruke maskinlæring med lyddata for å bestemme når visse lyder oppstår, selv når andre lyder oppstår samtidig. Å gjøre det krever å konvertere lyden til et spektrogrambilde, og deretter gå inn på forskjellige deler av det spektrogrammet ved å skjerme og filtrere etter frekvensbånd. Rekognition Custom Labels gjør det enkelt å trene en tilpasset modell for lyddeteksjon.

Du kan også bruke det GitHub repo som inneholder eksempelkoden for dette innlegget som et utgangspunkt for dine egne eksperimenter. For mer informasjon om lydhendelsesdeteksjon, se Lydhendelsegjenkjenning: En veiledning.


Om forfatterne

Oppdag lydhendelser med Amazon Rekognition PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Greg Sommerville er en Senior Prototyping Architect på AWS Prototyping and Cloud Engineering-teamet, hvor han hjelper AWS-kunder med å implementere innovative løsninger på utfordrende problemer med maskinlæring, IoT og serverløse teknologier. Han bor i Ann Arbor, Michigan og liker å trene yoga, servere hundene sine og spille poker.

Oppdag lydhendelser med Amazon Rekognition PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Jeff Harman er en Senior Prototyping Architect på AWS Prototyping and Cloud Engineering-teamet, hvor han hjelper AWS-kunder med å implementere innovative løsninger på utfordrende problemer. Han bor i Unionville, Connecticut og liker trearbeid, smedarbeid og Minecraft.

Tidstempel:

Mer fra AWS maskinlæring