Próbuję zbadać i dowiedzieć się, jak najlepiej zaatakować ten problem. Skupia się na przetwarzaniu muzyki, przetwarzaniu obrazu i przetwarzaniu sygnału, więc istnieje wiele sposobów, aby na to spojrzeć. Chciałem zapytać o najlepsze sposoby podejścia, ponieważ to, co może wydawać się skomplikowane w czystej sig-proc domenie, może być proste (i już rozwiązane) przez ludzi, którzy przetwarzają obrazy lub muzykę. W każdym razie problem jest następujący:
Jeśli wybaczysz mojemu rysowaniu problemu, możemy zobaczyć, co następuje:
Z powyższego rysunku mam 3 różne „typy” sygnałów. Pierwszy z nich to puls, który jakby „zwiększa” częstotliwość od do , a następnie się powtarza. Ma określony czas trwania impulsu i określony czas powtarzania impulsu.f 4
Drugi istnieje tylko dla , ale ma krótszą długość impulsu i większą częstotliwość powtarzania impulsu.
Wreszcie trzeci jest po prostu tonem na .
Problem polega na tym, w jaki sposób podchodzę do tego problemu, tak że mogę napisać klasyfikator, który może rozróżniać sygnał-1, sygnał-2 i sygnał-3. To znaczy, jeśli podasz mu jeden z sygnałów, powinien być w stanie powiedzieć ci, że ten sygnał jest taki i taki. Jaki najlepszy klasyfikator dałby mi diagonalną macierz zamieszania?
Dodatkowy kontekst i to, o czym do tej pory myślałem:
Jak powiedziałem, obejmuje to wiele pól. Chciałem zapytać, jakie metodologie mogą już istnieć, zanim usiądę i rozpocznę z tym wojnę. Nie chcę przypadkowo wynaleźć koła na nowo. Oto kilka myśli, na które patrzyłem z różnych punktów widzenia.
Stanowisko przetwarzania sygnałów: Jedną rzeczą, na którą patrzyłem, była analiza cepstralna , a następnie prawdopodobnie wykorzystanie szerokości pasma Gabora cepstrum w rozróżnianiu sygnału-3 od pozostałych 2, a następnie pomiar najwyższego piku cepstrum w rozróżnianiu sygnału 1 z sygnału-2. To moje obecne rozwiązanie do przetwarzania sygnałów.
Stanowisko przetwarzania obrazu: oto myślę, skoro MOGĘ w rzeczywistości tworzyć obrazy w stosunku do spektrogramów, być może mogę wykorzystać coś z tego pola? Nie jestem do końca zaznajomiony z tą częścią, ale co z wykrywaniem „linii” za pomocą transformacji Hougha , a następnie „zliczaniem” linii (a jeśli nie są to linie i plamy?) I odtąd? Oczywiście w dowolnym momencie, gdy biorę spektrogram, wszystkie impulsy, które widzisz, mogą zostać przesunięte wzdłuż osi czasu, więc czy to ma znaczenie? Niepewny...
Stanowisko przetwarzania muzyki: Pewnie podzbiór przetwarzania sygnału, ale przychodzi mi do głowy, że sygnał-1 ma pewną, być może powtarzalną (muzyczną?) Jakość, którą ludzie w procesie muzycznym widzą cały czas i już rozwiązali może instrumenty dyskryminujące? Nie jestem pewien, ale ta myśl przyszła mi do głowy. Być może ten punkt widzenia jest najlepszym sposobem, aby na to spojrzeć, biorąc kawałek domeny czasu i wypróbowując te stopnie? Ponownie, to nie jest moja dziedzina, ale mocno podejrzewam, że to coś, co widzieliśmy wcześniej ... czy możemy postrzegać wszystkie 3 sygnały jako różne typy instrumentów muzycznych?
Powinienem również dodać, że mam przyzwoitą ilość danych treningowych, więc być może użycie niektórych z tych metod może po prostu pozwolić mi na wyodrębnienie funkcji, z którymi mogę następnie skorzystać z K-Najbliższego sąsiada , ale to tylko myśl.
W każdym razie tutaj właśnie stoję, każda pomoc jest doceniana.
Dzięki!
EDYCJE OPARTE NA KOMENTARZACH:
Tak, , , , są znane z góry. (Pewna wariancja, ale bardzo mała. Załóżmy na przykład, że wiemy, że = 400 kHz, ale może wynosić 401,32 kHz. Jednak odległość do jest duża, więc może wynosić 500 kHz w porównaniu.) Sygnał-1 ZAWSZE wejdzie na te 4 znane częstotliwości. Signal-2 ZAWSZE będzie miał 1 częstotliwość.f 2 f 3 f 4 f 1 f 2 f 2
Częstotliwość powtarzania i długości impulsów wszystkich trzech klas sygnałów są również znane z góry. (Znowu trochę wariancji, ale bardzo mało). Jednak niektóre zastrzeżenia, częstości powtarzania i długości impulsów sygnałów 1 i 2 są zawsze znane, ale są one zakresem. Na szczęście zakresy te w ogóle się nie pokrywają.
Dane wejściowe są ciągłymi szeregami czasowymi nadchodzącymi w czasie rzeczywistym, ale możemy założyć, że sygnały 1, 2 i 3 wykluczają się wzajemnie, ponieważ w danym momencie istnieje tylko jeden z nich. Mamy również dużą elastyczność, jeśli chodzi o to, ile czasu zajmujecie przetwarzaniu w dowolnym momencie.
Dane mogą być zaszumione tak, i mogą występować fałszywe dźwięki itp. W pasmach nie w naszym znanym , , , . Jest to całkiem możliwe. Możemy założyć średni SNR SN, aby „zacząć” problem.f 2 f 3 f 4
Odpowiedzi:
Krok 1
Oblicz STFT sygnału, używając rozmiaru ramki mniejszego niż czas trwania impulsu. Zakładam, że ten rozmiar ramki nadal będzie oferował wystarczającą dyskryminację częstotliwości między f1, f2, f3 i f4. to indeks ramki, to indeks bin FFT.S(m,k) m k
Krok 2
Dla każdej ramki STFT oblicz dominującą częstotliwość podstawową za pomocą czegoś takiego jak YIN, wraz ze wskaźnikiem „pewności wysokości tonu”, takim jak głębokość „zapadu” DMF obliczonego przez YIN.
Nazwijmy dominującym f0 oszacowanym w ramce a pewność wysokości wykrytą w ramce .f(m) m v(m) m
Zauważ, że jeśli twoje dane nie są tak hałaśliwe, możesz uciec, używając autokorelacji jako estymatora wysokości tonu, a stosunek większego wtórnego piku autokorelacji do jako wskaźnika pewności tonu. YIN jest jednak tani w implementacji.r0
Można również obliczyć całkowitą energię sygnału dla ramki FFT .e(m) m
Krok 3
Rozważ przesuwane okno ramek STFT. Wybrano aby była większa niż czas powtarzania impulsu i 5 do 10 razy mniejsza niż typowa długość segmentu sygnału (na przykład jeśli wystąpienie sygnału trwa około 10s, a rozmiar ramki STFT wynosi 20 ms, możesz wybrać ).M M M=50
Wyodrębnij następujące funkcje:
Intuicyjnie, mierzy stabilność częstotliwości głównego skoku sygnału, mierzy zmienność „wysokości” sygnału, i zmienność amplitudy sygnału.σ v σ eσf σv σe
To będą funkcje, na których oprze się twoje wykrycie. Sygnały typu 1 będą miały wysoką (zmienna wysokość tonu) i umiarkowaną i (stała siła sygnału). Sygnały typu 2 będą miały niski (stały skok) oraz wysoki i (zmienna siła). Sygnały typu 3 będą miały niską (stała wysokość) i niską i (stała siła).σ v σ e σ f σ v σ e σ f σ v σ eσf σv σe σf σv σe σf σv σe
Oblicz te 3 cechy na podstawie danych treningowych i wytrenuj naiwny klasyfikator bayesowski (tylko kilka rozkładów gaussowskich). W zależności od tego, jak dobre są twoje dane, możesz nawet uciec od klasyfikatorów i zastosować ręcznie określone progi dla funkcji, choć nie polecam tego.
Krok 4
Aby przetworzyć przychodzący strumień danych, oblicz STFT, oblicz funkcje i sklasyfikuj każde okno ramek STFT.M
Jeśli twoje dane i klasyfikator są dobre, zobaczysz coś takiego:
1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3
To dość dobrze rozgranicza czas rozpoczęcia i zakończenia oraz rodzaj każdego sygnału.
Jeśli dane są zaszumione, muszą istnieć fałszywe błędnie sklasyfikowane ramki:
1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 3, 2, 2, 1, 1, 1, 3, 1, 1, 1, 3, 3, 3, 2, 3, 3, 3
Jeśli widzisz dużo bzdur, jak w drugim przypadku, użyj filtru trybu dla danych w okolicach 3 lub 5 detekcji; lub użyj HMM.
Wiadomość do domu
To, na czym chcesz oprzeć swoje wykrywanie, nie jest cechą spektralną, ale zagregowanymi statystykami czasowymi cech spektralnych nad oknami, które są w tej samej skali co czas trwania sygnału. Ten problem naprawdę wymaga przetwarzania w dwóch skalach czasowych: ramka STFT, na której obliczane są bardzo lokalne właściwości sygnału (amplituda, dominująca wysokość tonu, siła tonu), oraz większe okna, nad którymi zerkniesz na zmienność czasową tych właściwości sygnału.
źródło
Alternatywnym podejściem mogą być cztery detektory heterodynowe: Pomnóż sygnał wejściowy przez lokalne oscylatory o 4 częstotliwościach i filtr dolnoprzepustowy uzyskanych wyników. Każde wyjście reprezentuje pionową linię na twoim obrazie. Otrzymujesz moc wyjściową dla każdej z 4 częstotliwości w funkcji czasu. Dzięki filtrowi dolnoprzepustowemu możesz wybrać, na jakie odchylenie częstotliwości chcesz pozwolić, a także jak szybko chcesz zmienić wyjścia, tj. Jak ostre są krawędzie.
Działa to dobrze, nawet jeśli sygnał jest dość głośny.
źródło