Wykrywaj zdarzenia dźwiękowe za pomocą Amazon Rekognition PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Wykrywaj zdarzenia dźwiękowe za pomocą Amazon Rekognition

Kiedy większość ludzi myśli o wykorzystaniu uczenia maszynowego (ML) z danymi dźwiękowymi, zwykle przychodzi na myśl przypadek użycia: transkrypcja, znany również jako zamiana mowy na tekst. Istnieją jednak inne przydatne aplikacje, w tym używanie ML do wykrywania dźwięków.

Używanie oprogramowania do wykrywania dźwięku nazywa się wykrywanie zdarzeń dźwiękowychi ma wiele zastosowań. Załóżmy na przykład, że chcesz monitorować dźwięki z hałaśliwej hali fabrycznej, nasłuchując dzwonka alarmowego, który wskazuje na problem z maszyną. W środowisku opieki zdrowotnej można użyć wykrywania zdarzeń dźwiękowych do biernego nasłuchiwania dźwięków pacjenta, które wskazują na poważny problem zdrowotny. Obciążenia medialne dobrze nadają się do tej techniki, na przykład do wykrywania gwizdka sędziego w filmie sportowym. I oczywiście tej techniki można używać w różnych zadaniach nadzoru, takich jak nasłuchiwanie wystrzału lub odgłosu wypadku samochodowego z mikrofonu zamontowanego nad ulicą miasta.

W tym poście opisano, jak wykrywać dźwięki w pliku audio, nawet jeśli w tym samym czasie występują znaczące dźwięki w tle. Co więcej, być może zaskakujące, do wykrywania używamy technik opartych na wizji komputerowej, używając Amazon Rekognition.

Korzystanie z danych dźwiękowych z uczeniem maszynowym

Pierwszym krokiem w wykrywaniu zdarzeń dźwiękowych jest zrozumienie, w jaki sposób są reprezentowane dane dźwiękowe. Na potrzeby tego posta zajmujemy się tylko nagranym dźwiękiem, chociaż te techniki działają w przypadku strumieniowego przesyłania dźwięku.

Nagrany dźwięk jest zwykle przechowywany jako sekwencja próbek dźwiękowych, które mierzą intensywność fal dźwiękowych, które uderzały w mikrofon podczas nagrywania w czasie. Istnieje wiele różnych formatów przechowywania tych próbek, ale powszechnym podejściem jest przechowywanie 10,000 20,000, 40,000 0, a nawet 65535 XNUMX próbek na sekundę, przy czym każda próbka jest liczbą całkowitą od XNUMX do XNUMX (dwa bajty). Ponieważ każda próbka mierzy tylko intensywność fal dźwiękowych w określonym momencie, dane dźwiękowe na ogół nie są przydatne w procesach ML, ponieważ w stanie surowym nie mają żadnych przydatnych funkcji.

Aby te dane były przydatne, próbka dźwięku jest konwertowana na obraz o nazwie a spektrogram, który jest reprezentacją danych dźwiękowych pokazującą intensywność różnych pasm częstotliwości w czasie. Poniższy obraz przedstawia przykład.

Oś X tego obrazu reprezentuje czas, co oznacza, że ​​lewa krawędź obrazu jest początkiem dźwięku, a prawa krawędź obrazu jest końcem. Każda kolumna danych na obrazie reprezentuje różne pasma częstotliwości (wskazane przez skalę po lewej stronie obrazu), a kolor w każdym punkcie reprezentuje intensywność tej częstotliwości w danym momencie.

Skalowanie pionowe dla spektrogramów można zmienić na inne reprezentacje. Na przykład skalowanie liniowe oznacza, że ​​oś Y jest równo podzielona na częstotliwości, skalowanie logarytmiczne wykorzystuje skalę logarytmiczną i tak dalej. Problem z używaniem tych reprezentacji polega na tym, że częstotliwości w pliku dźwiękowym zwykle nie są równomiernie rozłożone, więc większość informacji, którymi możemy być zainteresowani, jest zgrupowana u dołu obrazu (niższe częstotliwości).

Aby rozwiązać ten problem, nasz przykładowy obraz jest przykładem a Spektrogram Mel, który jest skalowany tak, aby ściśle przybliżać sposób, w jaki ludzie odbierają dźwięk. Zwróć uwagę na wskaźniki częstotliwości po lewej stronie obrazu — dają wyobrażenie o tym, jak są one rozłożone w pionie i wyraźnie widać, że jest to skala nieliniowa.

Dodatkowo możemy modyfikować pomiar intensywności według częstotliwości w czasie, aby ulepszyć różne cechy mierzonego dźwięku. Podobnie jak w przypadku skalowania osi Y, które jest implementowane przez spektrogram Mel, inne podkreślają cechy, takie jak intensywność 12 odrębnych klas wysokości dźwięku, które są używane do badania muzyki (chroma). Inna klasa podkreśla cechy poziome (harmoniczne) lub pionowe (perkusyjne). Rodzaj wykrywanego dźwięku powinien wpływać na typ spektrogramu używanego w systemie wykrywania.

Wcześniejszy przykładowy spektrogram reprezentuje klip muzyczny o długości nieco ponad 2 minut. Powiększenie ujawnia więcej szczegółów, jak pokazano na poniższym obrazku.

Wykrywaj zdarzenia dźwiękowe za pomocą Amazon Rekognition PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Liczby na górze obrazu pokazują liczbę sekund od początku pliku audio. Możesz wyraźnie zobaczyć sekwencję dźwięków, która wydaje się powtarzać więcej niż cztery razy na sekundę, co jest wskazywane przez jasne kolory w dolnej części obrazu.

Jak widać, jest to jedna z zalet konwersji dźwięku na spektrogram — wyraźne dźwięki są często łatwo widoczne gołym okiem, a nawet jeśli nie są, można je często wykryć za pomocą algorytmów komputerowego wykrywania obiektów. W rzeczywistości jest to dokładnie proces, który stosujemy, aby wykrywać dźwięki.

Poszukiwanie dyskretnych dźwięków w spektrogramie

W zależności od długości pliku audio, którego szukamy, znalezienie dyskretnego dźwięku, który trwa zaledwie sekundę lub dwie, jest wyzwaniem. Odnieś się do pierwszego udostępnionego przez nas spektrogramu — ponieważ oglądamy dane z całego 3:30 minut, szczegóły, które trwają tylko sekundę lub dłużej, są niewidoczne. Bardzo się powiększyliśmy, aby zobaczyć rytm pokazany na drugim obrazie. Oczywiście przy większych plikach dźwiękowych (a więc znacznie większych spektrogramach) szybko napotykamy problemy, chyba że zastosujemy inne podejście. Takie podejście nazywa się okienkowanie.

Okienkowanie odnosi się do używania przesuwanego okna, które porusza się po całym spektrogramie, izolując jednorazowo kilka sekund (lub mniej). Poprzez wielokrotne izolowanie części całego obrazu otrzymujemy mniejsze obrazy, które można przeszukiwać pod kątem obecności dźwięku, który ma zostać wykryty. Ponieważ każde okno może skutkować tylko częścią szukanego obrazu (jak w przypadku wyszukiwania dźwięku, który nie zaczyna się dokładnie na początku okna), okienkowanie jest często wykonywane z nakładaniem się kolejnych okien. Na przykład, pierwsze okno rozpoczyna się o godzinie 0:00 i trwa 2 sekundy, następnie drugie okno zaczyna się o godzinie 0:01 i trwa 2 sekundy, a trzecie okno zaczyna się o godzinie 0:02 i trwa 2 sekundy i tak dalej.

Okienkowanie dzieli obraz spektrogramu w poziomie. Skuteczność procesu wykrywania możemy poprawić, izolując określone pasma częstotliwości, przycinając lub przeszukując tylko określone pionowe fragmenty obrazu. Na przykład, jeśli wiesz, że dzwonek alarmowy, który chcesz wykryć, wytwarza dźwięki o zakresie od jednej określonej częstotliwości do drugiej, możesz zmodyfikować bieżące okno, aby uwzględniało tylko te zakresy częstotliwości. To znacznie zmniejsza ilość danych, którymi należy manipulować, i skutkuje znacznie szybszym wyszukiwaniem. Poprawia również dokładność, ponieważ eliminuje możliwe fałszywe trafienia, które występują w pasmach częstotliwości poza pożądanym zakresem. Poniższe obrazy porównują pełną oś Y (po lewej) z ograniczoną osią Y (po prawej).

Pełna oś Y

Pełna oś Y

Ograniczona oś Y

Ograniczona oś Y

Teraz, gdy wiemy, jak iterować po spektrogramie z podejściem okienkowym i filtrować do określonych pasm częstotliwości, następnym krokiem jest faktyczne wyszukiwanie dźwięku. Do tego używamy Etykiety niestandardowe Amazon Rekognition. Funkcja Rekognition Custom Labels opiera się na istniejących możliwościach usługi Amazon Rekognition, która jest już przeszkolona na dziesiątkach milionów obrazów w wielu kategoriach. Zamiast tysięcy obrazów wystarczy przesłać niewielki zestaw obrazów szkoleniowych (zwykle kilkaset obrazów, ale optymalny rozmiar zestawu danych szkoleniowych należy ustalić eksperymentalnie w oparciu o konkretny przypadek użycia, aby uniknąć niedostatecznego lub nadmiernego przetrenowania modelu ), które są specyficzne dla Twojego przypadku użycia za pomocą konsoli Rekognition Custom Labels.

Jeśli Twoje obrazy są już oznaczone etykietami, szkolenie Amazon Rekognition jest dostępne za pomocą zaledwie kilku kliknięć. Alternatywnie możesz oznaczyć obrazy bezpośrednio w interfejsie etykietowania Amazon Rekognition lub użyć Amazon SageMaker Ground Prawda oznaczyć je dla Ciebie. Gdy Amazon Rekognition rozpoczyna trenowanie z zestawu obrazów, w ciągu zaledwie kilku godzin tworzy dla Ciebie niestandardowy model analizy obrazu. Za kulisami Rekognition Custom Labels automatycznie ładuje i sprawdza dane szkoleniowe, wybiera odpowiednie algorytmy ML, trenuje model i dostarcza metryki wydajności modelu. Następnie możesz użyć swojego niestandardowego modelu za pomocą Interfejs API rozpoznawania niestandardowych etykiet i zintegrować go ze swoimi aplikacjami.

Gromadzenie danych treningowych i trenowanie modelu Rekognition Custom Labels

W Repozytorium GitHub powiązane z tym postem, znajdziesz kod, który pokazuje, jak nasłuchiwać dźwięku alarmu przeciwpożarowego, niezależnie od hałasu w tle. W tym przypadku nasz model Rekognition Custom Labels jest modelem klasyfikacji binarnej, co oznacza, że ​​wyniki to „wykryto dźwięk alarmu dymu” lub „nie wykryto dźwięku alarmu dymu”.

Aby utworzyć model niestandardowy, potrzebujemy danych uczących. Te dane treningowe składają się z dwóch głównych typów: dźwięków otoczenia i dźwięków, które chcesz wykryć (takich jak alarm dymu).

Dane środowiskowe powinny reprezentować szeroką gamę krajobrazów dźwiękowych, które są typowe dla środowiska, w którym chcesz wykryć dźwięk. Na przykład, jeśli chcesz wykryć dźwięk alarmu przeciwpożarowego w środowisku fabrycznym, zacznij od dźwięków nagranych w tym środowisku fabrycznym w różne sytuacje (oczywiście bez alarmu przeciwpożarowego).

Dźwięki, które chcesz wykryć, powinny być izolowane, jeśli to możliwe, co oznacza, że ​​nagrania powinny być samym dźwiękiem bez żadnych dźwięków otoczenia. W naszym przykładzie jest to dźwięk alarmu przeciwpożarowego.

Po zebraniu tych dźwięków kod w repozytorium GitHub pokazuje, jak na różne sposoby łączyć dźwięki otoczenia z dźwiękami alarmu dymu (a następnie przekonwertować je na spektrogramy) w celu utworzenia wielu obrazów reprezentujących dźwięki otoczenia z nałożonymi dźwiękami alarmu dymu i bez nich. Poniższy obraz to przykład niektórych dźwięków otoczenia z nałożonym dźwiękiem alarmu dymu (jasne poziome paski).

Wykrywaj zdarzenia dźwiękowe za pomocą Amazon Rekognition PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Dane treningowe i testowe są przechowywane w Usługa Amazon Simple Storage (Amazon S3) łyżka. Poniższa struktura katalogów jest dobrym punktem wyjścia do organizowania danych w zasobniku.

Wykrywaj zdarzenia dźwiękowe za pomocą Amazon Rekognition PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Przykładowy kod w repozytorium GitHub pozwala wybrać liczbę obrazów szkoleniowych do utworzenia. Etykiety niestandardowe rozpoznawania nie wymagają dużej liczby obrazów szkoleniowych. Zestaw szkoleniowy składający się z 200–500 obrazów powinien wystarczyć.

Tworzenie projektu Rekognition Custom Labels wymaga określenia identyfikatorów URI folderu S3 zawierającego dane szkoleniowe i (opcjonalnie) dane testowe. Podczas określania źródeł danych dla zadania szkoleniowego jedną z opcji jest: Automatyczne etykietowanie, jak pokazano na poniższym zrzucie ekranu.

Wykrywaj zdarzenia dźwiękowe za pomocą Amazon Rekognition PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Użycie tej opcji oznacza, że ​​Amazon Rekognition używa nazw folderów jako nazw etykiet. W naszym przypadku użycia wykrywania dymu struktura folderów wewnątrz folderów pociągu i testów wygląda jak na poniższym zrzucie ekranu.

Wykrywaj zdarzenia dźwiękowe za pomocą Amazon Rekognition PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Obrazy danych treningowych trafiają do tych folderów, spektrogramy zawierające dźwięk alarmu dymu trafiają do folderu alarmu, a spektrogramy nie zawierają dźwięku alarmu dymu w folderze alarmów. no_alarm teczka. Amazon Rekognition używa tych nazw jako nazw klas wyjściowych dla modelu etykiet niestandardowych.

Szkolenie modelu etykiety niestandardowej zajmuje zwykle 30–90 minut. Pod koniec tego szkolenia należy uruchomić wyszkolony model, aby stał się dostępny do użycia.

Kompleksowa architektura do wykrywania dźwięku

Po utworzeniu naszego modelu następnym krokiem jest skonfigurowanie potoku wnioskowania, dzięki czemu możemy użyć modelu do wykrycia, czy w pliku audio jest dźwięk alarmu dymu. Aby to zrobić, dźwięk wejściowy musi zostać przekształcony w spektrogram, a następnie przeniesiony do okna i przefiltrowany według częstotliwości, tak jak to zrobiono w procesie uczenia. Każde okno spektrogramu jest przypisane do modelu, który zwraca klasyfikację, która wskazuje, czy zabrzmiał alarm dymu, czy nie.

Poniższy diagram przedstawia przykładową architekturę implementującą ten potok wnioskowania.

Wykrywaj zdarzenia dźwiękowe za pomocą Amazon Rekognition PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Ta architektura czeka na umieszczenie pliku audio w wiadrze S3, co powoduje AWS Lambda funkcja do wywołania. Lambda to bezserwerowa, sterowana zdarzeniami usługa obliczeniowa, która umożliwia uruchamianie kodu dla praktycznie dowolnego typu aplikacji lub usługi zaplecza bez udostępniania serwerów ani zarządzania nimi. Możesz uruchomić funkcję Lambda z ponad 200 usług AWS i aplikacji oprogramowania jako usługi (SaaS) i płacić tylko za to, z czego korzystasz.

Funkcja Lambda otrzymuje nazwę kubełka i nazwę klucza (lub nazwę pliku) pliku audio. Plik jest pobierany z Amazon S3 do pamięci funkcji, która następnie konwertuje go na spektrogram i wykonuje okienkowanie oraz filtrowanie częstotliwości. Każda część spektrogramu w oknie jest następnie wysyłana do usługi Amazon Rekognition, która wykorzystuje przeszkolony wcześniej model Amazon Custom Labels do wykrywania dźwięku. Jeśli ten dźwięk zostanie znaleziony, funkcja Lambda zasygnalizuje to za pomocą Usługa prostego powiadomienia Amazon (Amazon SNS) powiadomienie. Amazon SNS oferuje podejście pub/sub, w którym powiadomienia mogą być wysyłane do Usługa Amazon Simple Queue (Amazon SQS), funkcje Lambda, punkty końcowe HTTPS, adresy e-mail, mobile push i nie tylko.

Wnioski

Możesz użyć uczenia maszynowego z danymi dźwiękowymi, aby określić, kiedy pojawiają się określone dźwięki, nawet jeśli inne dźwięki występują w tym samym czasie. Wymaga to przekształcenia dźwięku w obraz spektrogramu, a następnie nakierowania na różne części tego spektrogramu poprzez okienkowanie i filtrowanie według pasma częstotliwości. Rekognition Custom Labels ułatwia trenowanie niestandardowego modelu do wykrywania dźwięku.

Możesz użyć GitHub repo zawierający przykładowy kod tego posta jako punkt wyjścia do własnych eksperymentów. Aby uzyskać więcej informacji na temat wykrywania zdarzeń dźwiękowych, zobacz Wykrywanie zdarzeń dźwiękowych: samouczek.


O autorach

Wykrywaj zdarzenia dźwiękowe za pomocą Amazon Rekognition PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Grega Sommerville'a jest starszym architektem prototypowania w zespole AWS Prototyping and Cloud Engineering, gdzie pomaga klientom AWS wdrażać innowacyjne rozwiązania trudnych problemów związanych z uczeniem maszynowym, IoT i technologiami bezserwerowymi. Mieszka w Ann Arbor w stanie Michigan i lubi ćwiczyć jogę, żywić swoje psy i grać w pokera.

Wykrywaj zdarzenia dźwiękowe za pomocą Amazon Rekognition PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Jeffa Harmana jest starszym architektem prototypowania w zespole AWS Prototyping and Cloud Engineering, gdzie pomaga klientom AWS wdrażać innowacyjne rozwiązania trudnych problemów. Mieszka w Unionville w stanie Connecticut i lubi stolarstwo, kowalstwo i Minecraft.

Znak czasu:

Więcej z Uczenie maszynowe AWS