Jakiej metodyki użyć do rozróżnienia różnych (muzycznych?) Tonów

12

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:wprowadź opis zdjęcia tutaj

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 4f1f4

Drugi istnieje tylko dla , ale ma krótszą długość impulsu i większą częstotliwość powtarzania impulsu.f1

Wreszcie trzeci jest po prostu tonem na .f1

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 2f1f2f3f4f1f2f2

  • 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 4f1f2f3f4

Spacey
źródło
Jaki będzie twój wkład? 1 / Ciągły strumień, w którym chcesz segregować występowanie sygnału 1/2/3 (segmentacja + problem z klasyfikacją) lub 2 / pojedyncze próbki z tylko jednym rodzajem sygnału, który musisz zaklasyfikować do kategorii 1/2/3? Opisujesz kilka cech sygnałów: PRT sygnału 1; częstotliwość powtarzania sygnału 2; częstotliwość sygnału 3; wartości f1 / f2 / f3 / f4. Czy te parametry są znane z góry czy zmienne? Na koniec, jeśli twój sygnał wejściowy zawiera kilka wystąpień tych sygnałów do segmentu, jaki jest typowy czas trwania segmentu?
pikenety
Kolejne pytanie: z twoich rysunków wygląda na to, że masz do czynienia z czystymi tonami (bez harmonicznych i bez hałasu). Czy tak jest, czy dane są znacznie brudniejsze niż twoje rysunki?
pikenety
@pichenettes Dzięki, dodałem informacje, których potrzebujesz w edycji.
Spacey,
Będziemy wdzięczni za dalsze działania i rozwiązania tego pytania. Analiza zależy głównie od zmienności czasowej badanych dźwięków. jeśli są szybsze niż okno FFT, powiedzmy, że poniżej 256 próbek potrzebujesz spektrogramów wysokiej rozdzielczości. Im bardziej precyzyjny spektrogram, tym więcej można zobaczyć drobnych szczegółowych informacji w swoich dźwiękach. FFT jest prawdopodobnie w porządku, po tym pytaniu jest po prostu kwestia dodania operatorów logicznych do klasyfikacji dźwięków za pomocą prostych procedur analizy wzorców. analizować czas trwania impulsów, odległość między nimi, akordową naturę całości itd.
com
łatwo jest znaleźć główną harmoniczną, po prostu sprawdzając wartość szczytową każdej linii x, a następnie uzyskuje się wykres do analizy za pomocą programowania analizy sygnatur wzorców, który postępuje tak samo, jakbyśmy analizowali je retorycznie, po prostu narysuj reguły najlepszych wyróżników, których świadomie używasz podczas porównywania i klasyfikowania progresji liczbowych.
com

Odpowiedzi:

7

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)mk

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)mv(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ć ).MMM=50

Wyodrębnij następujące funkcje:

  • σf(k) jest standardowym odchyleniem sekwencji(f(m))m[kM,k+M],v(m)>τ
  • ( v ( m ) ) m [ k - M , k + M ]σv(k) jest standardowym odchyleniem sekwencji(v(m))m[kM,k+M]
  • ( e ( m ) ) m [ k - M , k + M ]σe(k) jest standardowym odchyleniem sekwencji(e(m))m[kM,k+M]

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.

fenenety
źródło
Pamiętaj, że możesz to zrobić również w stylu rozpoznawania mowy, jeśli chcesz wykorzystać HTK lub podobny ... Model akustyczny: 4 telefony P1, P2, P3, P4 (dźwięk w f1, dźwięk w f2, dźwięk w f3, dźwięk w f4 ) + 1 symbol S dla milczenia. 1 lub 2 gaussów na telefon. Model słowny W1 dla sygnału 1: (P1 S P2 S P3 S P4 S) +. Model słowny W2 dla sygnału 2: (P1 S) +. Model słowny W3 dla sygnału 3: (P1) +. Model zdania: (W1 | W2 | W3) *. Jedynym zastrzeżeniem jest to, że jeśli używasz zestawu narzędzi do rozpoznawania mowy, będziesz musiał dostosować jego fronton wyodrębniania funkcji, ponieważ MFCC mają zbyt niską rozdzielczość i są niezależne od wysokości dźwięku, aby rozróżnić f1 / f2 / f3 / f4.
pikenety
@pichenettes Dziękuję za feniksy, to bardzo dobra odpowiedź - mam jednak kilka następnych działań: 1) Co to jest „YIN”, o którym wspominasz, a co „DMF”? Nie mogę nic na nich znaleźć za pośrednictwem Google. 2) Czym dokładnie jest „pewność siebie” jako miara? 3) Wspomniałeś, że możesz użyć autokorelacji do znalezienia pewności wysokości tonu - autokorelacji czego, ramy czasowej lub STFT ramki? (Prawdopodobnie nie rozumiem tego, ponieważ nie wiem, co masz na myśli pewną wysokość dźwięku). (ciąg dalszy ...)
Spacey
@pichenettes (ciąg dalszy) 4) Jeśli chodzi o funkcje, które istnieją TYLKO NA OKNO, tak? Więc obliczasz trzy standardowe na okno, z (w tym przypadku) 101 ramek? W tym przypadku, kiedy przychodzi czas na trening, mój trójwymiarowy „punkt” został wykonany z 3 stopni na 101 RAMKACH, prawda? 5) W kroku 4, gdy masz numer 1,1,1,2,2 itd., Każda liczba odpowiada temu, jak sklasyfikowałeś to okno poprawnie? Pierwsza „1” była klasyfikacją okna złożonego z ramek od -50 do 50, a druga „1” z okna złożonego z ramek od -49 do 51, prawda? (Okno przesuwa się o 1 ramkę za każdym razem) ...
Spacey
@pichenettes 6) Na koniec powinienem wspomnieć, że należy to wykorzystać jako „alarm”, aby w razie obecności sygnału-1 lub sygnału-2 dostałem sygnał dźwiękowy, ale nic nie powinno się wyłączyć, jeśli nic tam nie ma - czy nie powinien istnieć jakiś próg do dopasowania, zanim zacznie się nawet próbować sklasyfikować, aby nie uzyskać fałszywie pozytywnych wyników na nic? (na przykład tylko szum tła). (Właśnie uczę się teraz o Naive Bayes Classifier, więc nie wiem, czy jest to wieloklasowy). 7) DZIĘKI ZA DROGĘ I DZIĘKI Z góry! TYSIĄC I JEDEN AKTUALIZACJE DLA CIEBIE! :-)
Spacey
1
1 / YIN to klasyczny algorytm wykrywania wysokości tonu dla sygnałów mowy i muzyki. recherche.ircam.fr/equipes/pcm/cheveign/pss/2002_JASA_YIN.pdf . DMF jest „funkcją różnicy wielkości”, wielkości obliczanej przez algorytmy takie jak YIN do oszacowania wysokości tonu. 2 / Algorytm wykrywania wysokości tonu, taki jak YIN, da oszacowanie częstotliwości podstawowej i „wynik ufności” wskazujący, jak prawdopodobne jest, że zwrócona wysokość tonu jest prawidłową odpowiedzią. W przypadku głośnych sygnałów lub sygnałów wykazujących kilka tonów będzie to niska wartość, na czystej fali sinusoidalnej będzie bardzo wysoka.
pikenety
3

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.

Hilmar
źródło
Myślałem o tej metodzie - czy dostrzegasz jakieś zalety tej metody (mieszanie i LPF) w porównaniu do pracy bezpośrednio w pass-pand za pomocą spektrogramu itp.?
Spacey