Strona głównaArtykułyAkustyka

Przemiana Fouriera i Dźwięk

Każdy dźwięk jest superpozycją czystych tonów – przemiana Fouriera ujawnia, które z nich, a FFT sprawia, że jest wystarczająco szybka do uruchomienia na żywo.

mysimulator teamZaktualizowano — czerwiec 2026≈ 10 min czytania▶ Otwórz symulację

Funkcje sinusoidalne i domena częstotliwości

Czysty ton o częstotliwości f jest funkcją sinusoidalną, x(t) = A·cos(2πft+φ). Transformata Fouriera rozkłada dowolny sygnał na dokładnie złożone wyznaczniki eksponencjalne, które go składają:

X(f) = ∫ x(t)·e^(-i2πft) dt // analiza: sygnał → spektrum x(t) = ∫ X(f)·e^(+i2πft) df // synteza: spektrum → sygnał |X(f)|² = gęstość mocy w częstotliwości f

Próbki cyfrowej audio tego ciągłego sygnału z podaną stałą częstotliwością f_s – 44,100 Hz dla CD. Zgodnie z twierdzeniem Nyquista-Shannona, ograniczony pasmowo sygnał można idealnie odtworzyć z próbek pobranych szybciej niż podwójna jego najwyższa częstotliwość; przy 44,1 kHz obejmuje to częstotliwości do 22,050 Hz, pokrywając całą zakres słyszalną.

X(f) = ∫ x(t)·e^(−i2πft) dt          // analysis: signal → spectrum
x(t) = ∫ X(f)·e^(+i2πft) df          // synthesis: spectrum → signal
|X(f)|² = power spectral density at frequency f
demo na żywo · powiązana symulacja● LIVE

Rozdzielna Transformata Dwukierunkowa

Dany N próbek x[0]…x[N−1], DFT produkuje N wartości złożonych w dzymiennej domenie częstotliwości, gdzie bin k odpowiada fizycznej częstotliwości f_k = k·f_s/N:

X[k] = Σ_(n=0)^(N-1) x[n]·e^(−i2πkn/N),  k = 0…N−1
// computed directly: O(N²) — unusably slow for N ≥ 4096

Kołtunowy algorytm FFT Cooleya i Tukeya

Kluczowa sztuczka (Cooley & Tukey, 1965; również odkryta przez Gauss’a w 1805 roku) polega na podzieleniu długości DFT o długości N na dwie DFT o długości N/2 dla próbek parzystych i nieparzystych indeksów, a następnie ich ponownym połączeniu przy użyciu "czynnika twiddlowego":

X[k] = E[k] + W_N^k · O[k] X[k+N/2] = E[k] − W_N^k · O[k] E[k] = DFT próbek parzystych indeksów, O[k] = DFT próbek nieparzystych indeksów W_N^k = e^(−i2πk/N) // czynnik twiddlowy Zastosowany rekurencyjnie w log₂N etapach kombinacji "motylkowych" o rozmiarze N/2, kosztuje O(N log₂N) zamiast O(N²) – co daje przyspieszenie 682-krotne przy N = 4096. W praktyce wejściowe jest najpierw odwrócone bitowo, a następnie ten sam rdzeń motylkowy działa etapami.

X[k]       = E[k] + W_N^k · O[k]
X[k+N/2]   = E[k] − W_N^k · O[k]
  E[k] = DFT of even-indexed samples,  O[k] = DFT of odd-indexed samples
  W_N^k = e^(−i2πk/N)                  // twiddle factor

Okienkowanie i spektrogram

DFT (przemiana dyskreta Fouriera) implikuje, że analizowany blok jest okresowy; nagle odcięty blok odpowiada mnożeniu przez okno prostokątne, którego spektrum to szeroka sinca, powodująca wyciek energii do sąsiednich binów. Okienkowanie za pomocą stopniowanego okna (np. Hann, Hamminga, Blackmana-Harris) tłumi ten wyciek kosztem nieco szerszych głównych pasm obrzynkowych. Przesuwanie zwindowowanej DFT w oknach nakładających się na siebie po sygnale daje transformatę krótkotrwałą Fouriera; jej wykres magnitudo jako funkcja czasu-częstotliwości-intensywności generuje spektrogram, gdzie nuty muzyczne pojawiają się jako poziome linie, a formanty mowy jako pionowe pasmo.

Od binów do rzeczywistych zastosowań

Detekcja tonów w rozpoznaje podstawową częstotliwość z największą amplitudą; kompresja audio (MP3, AAC) usuwa składniki częstotliwościowe, które ludzkie ucho nie jest w stanie usłyszeć dzięki maskowaniu psychoakustycznemu; spektrogram melowy – zniekształcający oś częstotliwości, aby dopasować do ludzkiego postrzegania tonów – jest standardowym reprezentacją wejściową dla modeli mowy takich jak Whisper. Wszystko to prowadzi się do tej samej sieci motylkowej Cooley’ego-Tukeya.

Frequently asked questions

Dlaczego potrzebujemy FFT zamiast bezpośrednio obliczać DFT?

Bezpośrednia formuła DFT kosztuje O(N²) mnożeń, co staje się niewykonalne powyżej kilku tysięcy próbek. Transformata Fouriera Szybka (Cooley-Tukey) rekurencyjnie dzieli DFT o długości N na dwie DFT o długości N/2, obniżając koszt do O(N log N) – co daje przyspieszenie 682× przy N = 4096 – poprzez obliczanie dokładnie tych samych liczb, tylko znacznie bardziej efektywnie.

Dlaczego DFT sygnału rzeczywistego musi być najpierw okienkowany?

Zastosowanie DFT do surowego, nagle obciętego bloku jest matematycznie równoważne pomnożeniu sygnału przez prostokątne okno, którego spektrum to szeroka funkcja sinc, która wycieka energię z silnych tonów do sąsiednich bin. Gładki stopień, taki jak Hann lub Hamming, redukuje ten wyciek, kosztem nieco szerszego głównego lobu.

Jaki jest kompromis w wyborze rozmiaru bloku FFT N?

Większy N daje dokładniejszą rozdzielczość częstotliwości (fs/N Hz na binę), ale gorszą rozdzielczość czasową, ponieważ cały blok jest traktowany jako pojedynczy moment w czasie. Analiza mowy zazwyczaj używa N = 512–2048 (11–46 ms przy 44,1 kHz); wykrywanie nut muzycznych często wykorzystuje N = 4096 dla ostrzejszych bin częstotliwości.

Wypróbuj na żywo

Wszystko powyżej działa bezpośrednio w Twojej przeglądarce — otwórz the simulation i zmieniaj parametry podczas działania. Nic nie jest instalowane ani przesyłane na serwer, cały model działa w jednej karcie.

▶ Otwórz symulację the simulation

Co znalazłeś?

Dodaj kroki odtworzenia (opcjonalnie)