Detectați evenimente audio cu Amazon Rekognition PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Detectați evenimente audio cu Amazon Rekognition

Atunci când majoritatea oamenilor se gândesc la utilizarea machine learning (ML) cu date audio, cazul de utilizare care de obicei vine în minte este transcriere, cunoscut și sub numele de vorbire în text. Cu toate acestea, există și alte aplicații utile, inclusiv utilizarea ML pentru a detecta sunete.

Utilizarea unui software pentru a detecta un sunet este numită detectarea evenimentelor audio, și are o serie de aplicații. De exemplu, să presupunem că doriți să monitorizați sunetele de la o podea zgomotoasă a fabricii, ascultând un sonerie de alarmă care indică o problemă cu o mașină. Într-un mediu de asistență medicală, puteți utiliza detectarea evenimentelor audio pentru a asculta pasiv sunetele de la un pacient care indică o problemă acută de sănătate. Volumul de lucru media este potrivit pentru această tehnică, de exemplu pentru a detecta când fluierul unui arbitru este sunat într-un videoclip sportiv. Și, desigur, puteți folosi această tehnică într-o varietate de sarcini de supraveghere, cum ar fi ascultarea unei împușcături sau a sunetului unui accident de mașină de la un microfon montat deasupra străzii orașului.

Această postare descrie cum să detectați sunete într-un fișier audio, chiar dacă există sunete de fundal semnificative care apar în același timp. Mai mult decât atât, poate în mod surprinzător, folosim tehnici bazate pe computer pentru a face detectarea, folosind Amazon Rekognition.

Utilizarea datelor audio cu învățare automată

Primul pas în detectarea evenimentelor audio este înțelegerea modului în care sunt reprezentate datele audio. În scopul acestei postări, ne ocupăm doar de sunetul înregistrat, deși aceste tehnici funcționează cu streaming audio.

Audio înregistrat este de obicei stocat ca o secvență de mostre de sunet, care măsoară intensitatea undelor sonore care au lovit microfonul în timpul înregistrării, în timp. Există o mare varietate de formate cu care să stocați aceste mostre, dar o abordare comună este stocarea a 10,000, 20,000 sau chiar 40,000 de mostre pe secundă, fiecare eșantion fiind un număr întreg de la 0 la 65535 (doi octeți). Deoarece fiecare probă măsoară doar intensitatea undelor sonore la un anumit moment, datele de sunet, în general, nu sunt utile pentru procesele ML, deoarece nu are caracteristici utile în starea sa brută.

Pentru a face aceste date utile, proba de sunet este convertită într-o imagine numită a spectrogramă, care este o reprezentare a datelor audio care arată intensitatea diferitelor benzi de frecvență în timp. Următoarea imagine prezintă un exemplu.

Axa X a acestei imagini reprezintă timpul, ceea ce înseamnă că marginea stângă a imaginii este chiar începutul sunetului, iar marginea dreaptă a imaginii este sfârșitul. Fiecare coloană de date din imagine reprezintă diferite benzi de frecvență (indicate de scara din partea stângă a imaginii), iar culoarea din fiecare punct reprezintă intensitatea acelei frecvențe în acel moment de timp.

Scalare verticală pentru spectrograme poate fi schimbată în alte reprezentări. De exemplu, scalarea liniară înseamnă că axa Y este împărțită uniform pe frecvențe, scalarea logaritmică utilizează o scară logaritmică și așa mai departe. Problema cu utilizarea acestor reprezentări este că frecvențele dintr-un fișier de sunet nu sunt de obicei distribuite uniform, astfel încât majoritatea informațiilor de care am putea fi interesați ajung să fie grupate în partea de jos a imaginii (frecvențele inferioare).

Pentru a rezolva această problemă, imaginea noastră eșantion este un exemplu de a Spectrograma Mel, care este scalat pentru a aproxima îndeaproape modul în care ființele umane percep sunetul. Observați indicatorii de frecvență de-a lungul părții stângi a imaginii – ei oferă o idee despre modul în care sunt distribuiti pe verticală și este clar că este o scară neliniară.

În plus, putem modifica măsurarea intensității în funcție de frecvență în timp pentru a îmbunătăți diferitele caracteristici ale sunetului măsurat. Ca și în cazul scalarii axei Y care este implementată de o spectrogramă Mel, alții subliniază caracteristici precum intensitatea celor 12 clase de înălțime distinctive care sunt utilizate pentru studiul muzicii (croma). O altă clasă pune accent pe trăsăturile orizontale (armonice) sau trăsăturile verticale (percusive). Tipul de sunet care este detectat ar trebui să determine tipul de spectrogramă utilizat pentru sistemul de detectare.

Exemplul de spectrogramă anterior reprezintă un clip muzical care durează puțin peste 2 minute. Mărirea dezvăluie mai multe detalii, așa cum se arată în imaginea următoare.

Detectați evenimente audio cu Amazon Rekognition PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Numerele din partea de sus a imaginii arată numărul de secunde de la începutul fișierului audio. Puteți vedea clar o secvență de sunete care pare să se repete de mai mult de patru ori pe secundă, indicată de culorile strălucitoare din partea de jos a imaginii.

După cum puteți vedea, acesta este unul dintre beneficiile conversiei audio într-o spectrogramă - sunete distincte sunt adesea ușor vizibile cu ochiul liber și, chiar dacă nu sunt, pot fi detectate frecvent folosind algoritmi de detectare a obiectelor de viziune computerizată. De fapt, acesta este exact procesul pe care îl urmăm pentru a detecta sunete.

Se caută sunete discrete într-o spectrogramă

În funcție de lungimea fișierului audio pe care îl căutăm, găsirea unui sunet discret care durează doar o secundă sau două este o provocare. Consultați prima spectrogramă pe care am partajat-o – pentru că vedem date întregi de 3:30 de minute, detaliile care durează doar o secundă și ceva nu sunt vizibile. Am mărit foarte mult pentru a vedea ritmul care este afișat în a doua imagine. În mod clar, cu fișiere de sunet mai mari (și, prin urmare, spectrograme mult mai mari), ne confruntăm rapid cu probleme dacă nu folosim o abordare diferită. Această abordare se numește geamuri.

Fereastră se referă la utilizarea unei ferestre glisante care se deplasează pe întreaga spectrogramă, izolând câteva secunde (sau mai puțin) la un moment dat. Izolând în mod repetat porțiuni din imaginea generală, obținem imagini mai mici care pot fi căutate pentru prezența sunetului care trebuie detectat. Deoarece fiecare fereastră poate avea ca rezultat doar o parte a imaginii pe care o căutăm (ca în cazul căutării unui sunet care nu începe exact la începutul unei ferestre), fereastra este adesea efectuată cu ferestrele ulterioare suprapuse. De exemplu, prima fereastră începe la 0:00 și se extinde 2 secunde, apoi a doua fereastră începe la 0:01 și se prelungește 2 secunde, iar a treia fereastră începe la 0:02 și se prelungește 2 secunde și așa mai departe.

Fereastra împarte o imagine spectrogramă pe orizontală. Putem îmbunătăți eficacitatea procesului de detectare prin izolarea anumitor benzi de frecvență prin decuparea sau căutând doar anumite părți verticale ale imaginii. De exemplu, dacă știți că soneria de alarmă pe care doriți să-l detectați creează sunete care variază de la o anumită frecvență la alta, puteți modifica fereastra curentă pentru a lua în considerare doar acele intervale de frecvență. Acest lucru reduce considerabil cantitatea de date care trebuie manipulată și are ca rezultat o căutare mult mai rapidă. De asemenea, îmbunătățește acuratețea, deoarece elimină posibilele potriviri false pozitive care apar în benzile de frecvență în afara intervalului dorit. Următoarele imagini compară o axa Y completă (stânga) cu o axa Y limitată (dreapta).

Axa Y completă

Axa Y completă

Axa Y limitată

Axa Y limitată

Acum că știm cum să repetăm ​​o spectrogramă cu o abordare de fereastră și să filtram la anumite benzi de frecvență, următorul pas este să facem căutarea reală a sunetului. Pentru asta folosim Etichete personalizate Amazon Rekognition. Caracteristica Rekognition Custom Labels se bazează pe capabilitățile existente ale Amazon Rekognition, care este deja antrenat pe zeci de milioane de imagini din mai multe categorii. În loc de mii de imagini, trebuie pur și simplu să încărcați un set mic de imagini de antrenament (de obicei câteva sute de imagini, dar dimensiunea optimă a setului de date de antrenament ar trebui să fie obținută experimental pe baza cazului de utilizare specific pentru a evita antrenarea insuficientă sau excesivă a modelului ) care sunt specifice cazului dvs. de utilizare prin consola Rekognition Custom Labels.

Dacă imaginile dvs. sunt deja etichetate, instruirea Amazon Rekognition este accesibilă cu doar câteva clicuri. Alternativ, puteți eticheta imaginile direct în interfața de etichetare Amazon Rekognition sau puteți utiliza Amazon SageMaker Ground Adevăr pentru a le eticheta pentru tine. Când Amazon Rekognition începe antrenamentul din setul dvs. de imagini, produce un model personalizat de analiză a imaginii pentru dvs. în doar câteva ore. În culise, Rekognition Custom Labels încarcă și inspectează automat datele de antrenament, selectează algoritmii ML potriviți, antrenează un model și furnizează valori de performanță a modelului. Puteți utiliza apoi modelul personalizat prin intermediul API-ul Rekognition Custom Labels și integrați-l în aplicațiile dvs.

Asamblarea datelor de instruire și formarea unui model Rekognition Custom Labels

În Repoziție GitHub asociată cu această postare, veți găsi cod care vă arată cum să ascultați sunetul declanșării unei alarme de fum, indiferent de zgomotul de fundal. În acest caz, modelul nostru de etichete personalizate Rekognition este un model de clasificare binar, ceea ce înseamnă că rezultatele sunt fie „s-a detectat sunet de alarmă de fum” fie „sunet de alarmă de fum nu a fost detectat”.

Pentru a crea un model personalizat, avem nevoie de date de antrenament. Datele de antrenament sunt compuse din două tipuri principale: sunete ambientale și sunetele pe care doriți să le detectați (cum ar fi declanșarea unei alarme de fum).

Datele de mediu ar trebui să reprezinte o mare varietate de peisaje sonore care sunt tipice pentru mediul în care doriți să detectați sunetul. De exemplu, dacă doriți să detectați un sunet de alarmă de fum într-un mediu din fabrică, începeți cu sunetele înregistrate în acel mediu din fabrică sub o varietate de situații (fără să sune alarma de fum, desigur).

Sunetele pe care doriți să le detectați ar trebui să fie izolate dacă este posibil, ceea ce înseamnă că înregistrările ar trebui să fie doar sunetul în sine, fără niciun sunet de fundal. Pentru exemplul nostru, acesta este un sunet al unei alarme de fum care se stinge.

După ce ați colectat aceste sunete, codul din depozitul GitHub arată cum să combinați sunetele ambientale cu sunetele alarmei de fum în diferite moduri (și apoi să le convertiți în spectrograme) pentru a crea un număr de imagini care reprezintă sunetele ambientale. cu și fără alarma de fum sună suprapus peste ele. Următoarea imagine este un exemplu de sunete ambientale cu un sunet de alarmă de fum (barele orizontale luminoase) suprapuse deasupra acesteia.

Detectați evenimente audio cu Amazon Rekognition PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Datele de instruire și de testare sunt stocate într-un Serviciul Amazon de stocare simplă (Amazon S3) găleată. Următoarea structură de directoare este un bun punct de plecare pentru organizarea datelor în compartiment.

Detectați evenimente audio cu Amazon Rekognition PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Exemplul de cod din depozitul GitHub vă permite să alegeți câte imagini de antrenament să creați. Etichetele personalizate Rekognition nu necesită un număr mare de imagini de antrenament. Un set de antrenament de 200–500 de imagini ar trebui să fie suficient.

Crearea unui proiect Rekognition Custom Labels necesită să specificați URI-urile folderului S3 care conține datele de antrenament și (opțional) datele de testare. Când se specifică sursele de date pentru jobul de formare, una dintre opțiuni este Etichetare automată, așa cum se arată în următoarea captură de ecran.

Detectați evenimente audio cu Amazon Rekognition PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Utilizarea acestei opțiuni înseamnă că Amazon Rekognition folosește numele folderelor ca nume de etichetă. Pentru cazul nostru de utilizare pentru detectarea alarmei de fum, structura folderelor din interiorul trenului și a dosarelor de testare arată ca următoarea captură de ecran.

Detectați evenimente audio cu Amazon Rekognition PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Imaginile cu date de antrenament intră în acele foldere, spectrogramele care conțin sunetul alarmei de fum mergând în folderul alarmă și spectrogramele care nu conțin sunetul alarmei de fum în no_alarm pliant. Amazon Rekognition folosește aceste nume ca nume de clasă de ieșire pentru modelul de etichete personalizate.

Formarea unui model de etichetă personalizată durează de obicei 30-90 de minute. La sfârșitul acelui antrenament, trebuie să începeți modelul antrenat, astfel încât să devină disponibil pentru utilizare.

Arhitectură end-to-end pentru detectarea sunetului

După ce ne creăm modelul, următorul pas este configurarea unei conducte de inferență, astfel încât să putem folosi modelul pentru a detecta dacă un sunet de alarmă de fum este prezent într-un fișier audio. Pentru a face acest lucru, sunetul de intrare trebuie transformat într-o spectrogramă și apoi fereastră și filtrată după frecvență, așa cum sa făcut pentru procesul de antrenament. Fiecare fereastră a spectrogramei este dată modelului, care returnează o clasificare care indică dacă alarma de fum a sunat sau nu.

Următoarea diagramă prezintă un exemplu de arhitectură care implementează această conductă de inferență.

Detectați evenimente audio cu Amazon Rekognition PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Această arhitectură așteaptă ca un fișier audio să fie plasat într-o găleată S3, ceea ce determină apoi un AWS Lambdas funcția care trebuie invocată. Lambda este un serviciu de calcul fără server, bazat pe evenimente, care vă permite să rulați cod pentru aproape orice tip de aplicație sau serviciu backend fără a furniza sau gestiona servere. Puteți declanșa o funcție Lambda din peste 200 de servicii AWS și aplicații software ca serviciu (SaaS) și puteți plăti doar pentru ceea ce utilizați.

Funcția Lambda primește numele găleții și numele cheii (sau numele fișierului) fișierului audio. Fișierul este descărcat de pe Amazon S3 în memoria funcției, care apoi îl convertește într-o spectrogramă și efectuează filtrarea ferestrelor și a frecvenței. Fiecare porțiune cu fereastră a spectrogramei este apoi trimisă către Amazon Rekognition, care utilizează modelul Amazon Custom Labels antrenat anterior pentru a detecta sunetul. Dacă se găsește acel sunet, funcția Lambda semnalează că prin utilizarea unui Serviciul de notificare simplă Amazon notificare (Amazon SNS). Amazon SNS oferă o abordare pub/sub la care pot fi trimise notificări Serviciul de coadă simplă Amazon Cozi (Amazon SQS), funcții Lambda, puncte finale HTTPS, adrese de e-mail, push mobil și multe altele.

Concluzie

Puteți utiliza învățarea automată cu date audio pentru a determina când apar anumite sunete, chiar și atunci când apar alte sunete în același timp. Pentru a face acest lucru, este nevoie de conversia sunetului într-o imagine de spectrogramă și apoi de orientarea către diferite părți ale acelei spectrograme prin fereastra și filtrarea după banda de frecvență. Etichetele personalizate Rekognition facilitează antrenarea unui model personalizat pentru detectarea sunetului.

Aveți posibilitatea să utilizați GitHub repo care conține exemplul de cod pentru această postare ca punct de plecare pentru propriile experimente. Pentru mai multe informații despre detectarea evenimentelor audio, consultați Detectarea evenimentelor sonore: un tutorial.


Despre autori

Detectați evenimente audio cu Amazon Rekognition PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Greg Sommerville este arhitect senior de prototipare în echipa AWS Prototyping and Cloud Engineering, unde îi ajută pe clienții AWS să implementeze soluții inovatoare pentru problemele provocatoare legate de învățarea automată, IoT și tehnologiile fără server. Locuiește în Ann Arbor, Michigan și îi place să practice yoga, să-și îngrijească câinii și să joace poker.

Detectați evenimente audio cu Amazon Rekognition PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Jeff Harman este arhitect senior de prototipare în echipa AWS Prototyping and Cloud Engineering, unde îi ajută pe clienții AWS să implementeze soluții inovatoare pentru probleme provocatoare. Locuiește în Unionville, Connecticut și îi place să lucreze lemnul, fierăria și Minecraft.

Timestamp-ul:

Mai mult de la Învățare automată AWS