Zastanawiałem się nad możliwością klasyfikacji dźwięku (na przykład dźwięków zwierząt) za pomocą spektrogramów. Chodzi o to, aby użyć głębokich splotowych sieci neuronowych do rozpoznania segmentów w spektrogramie i uzyskania jednej (lub wielu) etykiet klasy. To nie jest nowy pomysł (patrz na przykład klasyfikacja dźwięku wieloryba lub rozpoznawanie stylu muzyki ).
Problem, przed którym stoję, polega na tym, że mam pliki dźwiękowe o różnej długości, a zatem spektrogramy o różnych rozmiarach. Jak dotąd każde podejście, które widziałem, wykorzystuje próbkę dźwięku o stałym rozmiarze, ale nie mogę tego zrobić, ponieważ mój plik dźwiękowy może mieć 10 sekund lub 2 minuty długości.
Na przykład z dźwiękiem ptaka na początku i dźwiękiem żaby na końcu (wyjście powinno brzmieć „Bird, Frog”). Moje obecne rozwiązanie polegałoby na dodaniu komponentu czasowego do sieci neuronowej (tworząc bardziej rekurencyjną sieć neuronową), ale na razie chciałbym zachować prostotę. Wszelkie pomysły, linki, samouczki, ...?
Odpowiedzi:
W przypadku automatycznego rozpoznawania mowy (ASR) funkcje banku filtrów działają tak dobrze, jak CNN w spektrogramach Tabela 1 . Możesz szkolić system DBN-DNN na fbank do klasyfikowania dźwięków zwierząt.
W praktyce dłuższe wypowiedzi są podzielone na krótsze, ponieważ dekodowanie Viterbi nie działa dobrze w przypadku dłuższych wypowiedzi. Możesz zrobić to samo.
Możesz podzielić dłuższe wypowiedzi na mniejsze wypowiedzi o stałej długości. Dzielenie dłuższych wypowiedzi na mniejsze jest łatwe. Problem polega na zwiększeniu długości mniejszych wypowiedzi w celu osiągnięcia stałej długości.
Możesz wypaczać oś częstotliwości spektrogramu w celu zwiększenia mniejszych wypowiedzi. Wykazano, że to powiększanie danych poprawia zwiększanie wydajności danych ASR .
Aby uzyskać dłuższą wypowiedź z wieloma dźwiękami, możesz użyć algorytmów segmentacji muzyki, aby podzielić ją na wiele wypowiedzi. Wypowiedzi te mogą być wykonane ze stałej długości przez podział lub powiększenie.
źródło
RNN nie dawały wystarczająco dobrych wyników i są również trudne do trenowania, więc wybrałem CNN.
Ponieważ konkretny dźwięk zwierzęcia trwa tylko kilka sekund, możemy podzielić spektrogram na części. Użyłem długości 3 sekund. Następnie przeprowadzamy klasyfikację dla każdego fragmentu i uśredniamy wyjścia, aby utworzyć pojedynczą prognozę dla pliku audio. Działa to naprawdę dobrze i jest również łatwe do wdrożenia.
Bardziej szczegółowe wyjaśnienie można znaleźć tutaj: http://ceur-ws.org/Vol-1609/16090547.pdf
źródło