Jak skomentowałem poprzedni post, metoda analizy czasowo-częstotliwościowej znana jako „krótkoterminowa transformata Fouriera” jest równoważna z zestawem filtrów, analizującym twój sygnał x . Dla danego okna analizy w n , o rozmiarze N , filtr przy częstotliwości k / N wynosi:
h n = w - n e j 2 π n kXxwnNk/N
hn=w−nej2πnkN
Dla zwykłych okien analizy (Hann, Hamminga, a nawet prostokąta) odpowiada to filtrowi dolnoprzepustowemu z częstotliwością odcięcia około , która jest „przesunięta” do przedziału częstotliwości k1/Nk (dzięki złożonej modulacji wykładniczej) , co prowadzi do uzyskania filtra pasmowoprzepustowego.
W tym momencie, aby odpowiedzieć bezpośrednio na twoje obawy związane z odbiciem ludzkiej percepcji, niektórzy ludzie wyprowadzili [„transformację stałej Q” (CQT)] [Brown91]. Opiera się na tej samej zasadzie co FT, w interpretacji banku filtrów. Jednak centra nie są rozmieszczone liniowo, jak w przypadku „normalnego” FT, ale raczej log2 rozstawione. Skala jest następnie ściśle związane z Zachodniej muzycznej skali: Jeśli ktoś wybiera f k + 1 = 2 1 / 12 f k , to otrzymamy 12 częstotliwości na oktawę (dzwonek dzwoni :-)?) I pasma ustawione , na przykład, 2 : 1 / 12 - 1fkfk+1=21/12fk. Możesz także wybrać inne centra, które najlepiej odpowiadają Twoim potrzebom.21/12−12fk
Tu i ówdzie można znaleźć implementacje CQT, najnowsze, autorstwa prof. Klapuri, z dość przyzwoitą odwrotnością można znaleźć tutaj . Grupa Audio w Telecom ParisTech ma również implementację prof. Prado, ale jeszcze tego nie próbowałem.
[Brown91] J. Brown, „Obliczanie stałej transformacji spektralnej Q”, Journal of Acoustical Society of America, 1991, 89, 425-434
EDYCJA 20121014: niektóre odpowiedzi i komentarze do twoich pytań (bryhoyta).
Po prostu ogólne pomysły na własne komentarze do głównego pytania: Wygląda na to, że interesuje Cię wiele aplikacji, które moim zdaniem nie są dość trywialnymi problemami. „Modelowanie barwy” wydaje mi się bardziej związane z rozpoznawaniem mowy itp., Dla których rozdzielczość lub precyzja wysokości lub częstotliwości nie stanowi większego problemu (zastanów się, jak zwykle obliczane są MFCC).
Zastanów się także, ilu najlepszych badaczy ( F. Pachet i zespół repmus w IRCAM we Francji) , aby zacytować kilku) pracuje nad tematem automatycznej improwizacji i akompaniamentu: zadanie nie jest niemożliwe, ale wymaga wiedzy specjalistycznej w wielu obszarach. Podsumowując, typowy system musi naśladować ludzki układ słuchowy (przynajmniej), wdrażać percepcję dźwięku / muzyki / wysokości dźwięku / rytmu, znać teorię muzyki i podejmować decyzje na podstawie oszacowań wszystkich poprzednich kroków. Transformacja Fouriera lub dowolna reprezentacja sygnału to tylko jeden (mały) krok w kierunku celu końcowego - i potencjalnie, moim zdaniem, najlepiej rozumiany do tej pory.
To powiedziawszy, nadal istnieje możliwość, że wszyscy spoglądają daleko poza to, co się faktycznie dzieje, i że możesz to rozbić w prosty, a więc elegancki sposób! Nie zapomnij opublikować o tym, kiedy to się skończy! :-)
próbka 0,1 s przy 44 kHz wystarcza, aby pomieścić szeroki zakres częstotliwości
Fs/N=44100/4410=10Hz
FFT nie może tego wykryć dla niskich i wysokich częstotliwości, ale mówisz, że inne algorytmy mogą: jaki jest kompromis?
Krótka odpowiedź: przeczytaj moją pracę magisterską na temat oceny melodii!
Mówiąc nieco więcej: wiele algorytmów szacowania wysokości dźwięku wykracza poza ograniczenia FT, dzięki założeniom dotyczącym przetwarzanych dźwięków. Oczekujemy, że nuty z naturalnych dźwięków (ludzki głos, obój, saksofon, fortepian ...) będą bardziej złożone niż pojedyncze sinusoidy. Większość dźwięków jest mniej więcej harmoniczna, co oznacza, że można je modelować jako sumy sinusoid, których częstotliwość jest wielokrotnością częstotliwości podstawowej.
Przydatne jest zatem uwzględnienie tych harmonicznych przy szacowaniu wysokości tonu, ponieważ istnieją metody wykorzystujące funkcje detekcji, takie jak sumy widmowe, produkty widmowe lub funkcje autokorelacji. Ktoś niedawno zaczął pokrewny temat .
Jakie są kompromisy? Mówiąc dokładniej, jakiego poziomu dokładności częstotliwości mogę się spodziewać w rozsądnie krótkim oknie? (Rozumiem, że rozmiar okna w CQT jest zmienny - o ile?) Mówiąc dokładniej, jak blisko będę w stanie dotrzeć do mojego ok. cel 0,5% różnicy częstotliwości z oknem 0,005s?
Jak wcześniej wspomniano, przy oknie o wartości 0,005 s można spodziewać się czegoś w rodzaju „przecieku częstotliwości” 200 Hz. To naprawdę problem tylko wtedy, gdy masz 2 sinusoidy o częstotliwościach bliższych niż 200 Hz, tak że FT nie będzie w stanie pokazać, że są to 2 różne sinusoidy. Cóż, jesteśmy daleko od twojego 0,5% (nawiasem mówiąc, półton ma 6% częstotliwości!), A 0,005 s jest naprawdę trochę mały dla twojego celu. Jeśli jednak chcesz podawać oszacowanie co 0,005 s, nadal możesz przetwarzać dłuższe nakładające się klatki, jak zwykle w przetwarzaniu mowy / muzyki. Czy tego właśnie chcesz?
Nk=Fsfk(21/B−1)
BB=48fk=100Hzwymagają okien o długości około 0,7 s. Nic nie znaczy, że tracimy wtedy trochę rozdzielczości czasowej ... Ale jak wspomniano wcześniej, jest to problem tylko wtedy, gdy zapomnimy o strukturze dźwięku. Dodatkowo psychoakustyka uważa, że poniżej 500 Hz ludzie tak naprawdę nie odróżniają sinusoid: nawet ludzie są tam wyzwani. Oczywiście możemy mieć nadzieję, że nasze komputery radzą sobie lepiej niż my, ale tutaj mamy trudny problem!
Na koniec zauważ, że istnieją inne sposoby obliczania reprezentacji czasowo-częstotliwościowej dźwięku, rozważ na przykład banki filtrów gammatone. Zaletą wspomnianego wcześniej CQT jest to, że istnieje oprogramowanie zarówno dla transformacji, jak i jej odwrócenia. Osobiście nadal trzymam się STFT ze względu na jego prostotę i ponieważ do tej pory nigdy nie potrzebowałem lepszej rozdzielczości na niskich częstotliwościach, nawet do separacji źródła.
[Schoerkhuber2010] Schoerkhuber, C. i Klapuri, A., „Zestaw narzędzi do przekształcania Constant-Q do przetwarzania muzyki”, 7. Konferencja Sound and Music Computing, Barcelona, Hiszpania, 2010.