Transformacja FFT dźwięku.

0

Witam.
Czy mógłby ktoś mi wyjaśnić na czym polega użycie FFT w rysowaniu spektrum z dźwięku. Ogólnie co się dzieje z dźwiękiem aż stanie się spektrum i pokazać przykładowe implementacje takiego algorytmu. Z góry dzięki.

0

Pobiera się cyklicznie określoną liczbę kolejnych próbek dźwięku, im więcej, tym dłuższy czas obliczeń, ale większa szczegółowość widma.
Następnie taki fragment można zmienić za pomocą funkcji okna, np. okno prostokątne, trójkątne, Hamminga, Gaussa. Wartości próbek dźwięku mnoży się przez kolejne współczynniki w oknie. Z tak przetworzonego fragmentu oblicza się FFT, który ma o połowę mniej współczynników (druga połowa współczynników zawiera te same wartości). Na koniec prezentuje się wykres tej transformaty. Cały proces powtarza się przy każdym wyświetlaniu (odświeżaniu) widma.

Wzory różnych okien są tutaj: https://pl.wikipedia.org/wiki/Okno_czasowe

1

Ja dodam dlaczego stosuje się okno czasowe.

Otóż transformacja Fouriera jest dokładna, ale jeśli zastosuje się ją do całego sygnału, a jeszcze lepiej nieskończonego.
Jeśli chcemy mieć widmo chwilowe, tniemy sygnał na kawałki. Ale powstaje problem: każdy taki kawałek się nagle zaczyna i nagle kończy, co powoduje śmieci na wykresie, bo ten nagły początek i koniec wyglądają jak dodatkowe częstotliwości.
Żeby ten efekt zniwelować, wycisza się stopniowo początek i koniec odcinka sygnału (fade-in i fade-out).

0

Ok. Dzięki. A jakieś przykładowe implementacje algorytmu, który by to obsłużył?

0

Przykładowy algorytm oparty o liczenie "motylków"
Radix2: https://pl.wikipedia.org/wiki/Algorytm_Cooleya-Tukeya
Możesz też poszukać Radix4.

Szybka biblioteka do FFT:
http://www.fftw.org/
Istnieje też wraper do Javy jfftw i kilku innych języków.

A do okna dodam jeszcze, że o ile prostokątne implementuje się najłatwiej, to jest ono najmniej dokładne więc w większości przypadków nie bardzo ma sens.
Żeby łatwiej było zapamiętać, to okno możesz traktować jako maskę filtru splotowego dla sygnału.

0

Dzięki wielkie za wszystkie odpowiedzi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1