STFT: Krótkookresowa Transformata Fouriera — szczegółowy przewodnik po STFT i jej zastosowaniach

Pre

STFT, czyli Short-Time Fourier Transform, to fundament analizy czasowo-częstotliwościowej w dziedzinie sygnałów. Dzięki niej możemy zobaczyć, jak składowe częstotliwościowe sygnału zmieniają się w czasie. W praktyce STFT pozwala zamienić surowy sygnał w dwuwymiarowy spektrogram, na którym oś pozioma reprezentuje czas, a oś pionowa – częstotliwość. W tym artykule omawiamy, czym dokładnie jest STFT, jak działa, jakie ma parametry, jakie ma zalety i ograniczenia oraz jak wykorzystać STFT w rzeczywistych zadaniach związanych z dźwiękiem, mową i muzyką.

Czym jest STFT? Definicja i intuicja

Transformata krótkookresowa Fouriera (STFT) to wariant klasycznej transformaty Fouriera, która normalnie daje pełny zestaw częstotliwości dla całego sygnału. W STFT sygnał jest najpierw dzielony na krótkie fragmenty (ramki), dla których wykonywana jest lokalna transformata Fouriera. Dzięki temu uzyskujemy widok na to, jak obecność poszczególnych częstotliwości zmienia się w czasie. To niezwykle przydatne narzędzie w analityce dźwięku, gdzie identyfikacja momentów, gdy pojawiają się konkretne tony, przesterowania, szumy czy artykulacja mowy, ma kluczowe znaczenie.

Najważniejsze pojęcia związane z STFT to: ramka (frame) o długości N próbek, okno (window) zastosowane do każdego fragmentu sygnału, przesunięcie ramki o krok hop (hop size) i wynikowa reprezentacja czas-częstotliwość, czyli spektrogram. W praktyce STFT generuje złożone wartości zespolone S(t, f), z których magnitudę i fazę możemy interpretuować odpowiednio jako obecność energii w danym połączeniu czasu i częstotliwości oraz fazowe przesunięcia sygnału.

Okna i ich wpływ na rozdzielczość czasową i częstotliwościową

Podstawowym składnikiem STFT jest okno, które decyduje o tym, ile informacji z oryginalnego sygnału trafia do każdej ramki. Wybór długości okna i samego kształtu okna ma kluczowe znaczenie dla rozdzielczości czasowej i częstotliwościowej. Krótsze okno prowadzi do lepszej rozdzielczości czasowej kosztem gorszej rozdzielczości częstotliwościowej, natomiast dłuższe okno daje lepszą rozdzielczość częstotliwościową, kosztem precyzji czasowej. Ten kompromis nazywa się zasadą nieoznacalności czasowo-częstotliwościowej i jest fundamentalny dla wszelkich analiz STFT.

Najczęściej stosowane typy okien to: okno prostokątne (rectangular), Hann (Hann), Hamming, Blackman i ich rozszerzenia (np. Blackman-Harris). Każde z nich ma inny profil odpowiedzi częstotliwościowej i charakterystykę wycieku (spectral leakage). Okna z wygładzeniem (tzw. wytłumione) ograniczają wyciek, ale jednocześnie pogarszają precyzyjność lokalną w czasie. W praktyce wybór okna zależy od rodzaju analizowanego sygnału i zamierzonej interpretacji spektrogramu.

Parametry analizy STFT

Długość okna N

Długość okna N definiuje liczbę próbek w każdej ramce. Jazda między krótkimi a długimi ramkami wpływa na rozdzielczość czasową i częstotliwościową w sposób odwrotny. Dla sygnałów o gwałtownych zmianach, takich jak pliki mowy czy krótkie uderzenia perkusyjne, krótsze okno może być korzystne. W przypadku muzyki z długo trwającymi tonami, dłuższe okna pomagają lepiej odseparować składowe częstotliwościowe. W praktyce często stosuje się długości ramki w zakresie kilkudziesięciu do kilkuset próbek, zależnie od próbkowania i zamierzeń analitycznych.

Krok przesunięcia hop size

Hop size to liczba próbek, o którą przesuwamy ramkę w każdej iteracji. Mniejszy hop size powoduje większą redundancję danych i gęstszy spektrogram, co z kolei ułatwia analizę zmian w czasie. Z drugiej strony, zbyt duży skok może prowadzić do utraty informacji i nadużyć, zwłaszcza przy wysokich częstotliwościach. Typowa praktyka to hop size równe połowie długości okna (50% overlap) lub nawet kwadratura 25% do 75% w zależności od wymagań obliczeniowych i jakości wizualnej spektrogramu.

Typy okien

Wybór typu okna wpływa na szerokość głównej linii transmisyjnej i na boczne skrzywienia w widmie. Okno Hann/Hanning i Hamming są popularne z powodów dobrej równowagi między maskowaniem a utrzymaniem sygnału. Blackman i Blackman-Harris oferują silniejszy tłumienie bocznych wstawek (sidelobes), co ogranicza wyciek, lecz może powodować nieco gorszą precyzję czasową. Dla sygnałów o wyRaźnych transjentach często wybiera się krótsze okna z oknami wygładzającymi, aby zminimalizować rozmycie czasowe.

Zero-padding

Zero-padding polega na dołożeniu zera na końcu sygnału przed obliczeniem STFT. Dzięki temu uzyskujemy większą gęstość częstotliwości w wyniku dyskretnych wartości częstotliwości, co może poprawić wygląd spektrogramu i umożliwić lepsze odzwierciedlenie częstotliwości niedostępnych dla wybranej długości okna. Zero-padding nie dodaje nowych informacji energetycznych, ale pomaga w interpretacji i renderowaniu wyników na wykresach.

Spektrogram, magnituda i faza: co dokładnie otrzymujemy

Po wykonaniu STFT dla każdego okna otrzymujemy złożone wartości S(t, f). Z tych wartości możemy uzyskać różne reprezentacje:

  • Magnitudę: |S(t, f)| – odpowiada energetycznemu natężeniu składowej częstotliwościowej w danym czasie.
  • Fazę: arg(S(t, f)) – informuje o przesunięciach fazowych między różnymi oknami oraz o wiernych fazach sygnału.
  • Spektrogram: wykres 2D zależny od czasu i częstotliwości, pokazujący magnitudę lub jej logarytmiczną wersję.

W praktyce wielu analityków koncentruje się na magnitudie spektrogramu (konieczne w rozpoznawaniu wzorców i identyfikacji dźwięków), ale faza odgrywa równie istotną rolę w odtwarzaniu sygnału i w zadaniach takich jak rekonstruacja sygnału po przekształceniu (np. w procesie vocodingu czy w algorytmie Griffin-Lim).

STFT a inne metody analizy czasu-częstotliwości

STFT jest jednym z najczęściej stosowanych narzędzi ze względu na prostotę, stabilność obliczeniową i intuicyjny wynik. Jednak warto znać alternatywy i konteksty, w których STFT ma przewagę, a także ograniczenia:

  • Transformata czasowo-częstotliwościowa vs wavelet: STFT używa stałej długości ramki, co daje stałą rozdzielczość czasową i częstotliwościową, podczas gdy wavelet dostarcza adaptacyjnej rozdzielczości zależnej od częstotliwości (lepsza rozdzielczość czasowa dla wyższych częstotliwości).
  • Czasowo-częstotliwościowe i inne metody: Wigner–Ville, scalogramy i inne transformacje, które mogą zapewnić lepszą integrację między czasem a częstotliwością przy różnych właściwościach sygnału, ale bywają trudniejsze w interpretacji i mogą generować interferencje między składowymi.
  • Spektralne metody oparte na oknach krótkich: STFT jest praktycznym kompromisem i potrafi dużo wyjaśnić na temat sygnałów audio bez nadmiernego skomplikowania obliczeń.

Zastosowania STFT w praktyce

Analiza dźwięku i muzyki

W muzyce i analizie dźwięku STFT służy do identyfikowania tonów, zależności między nutami a czasem, a także do wizualizacji zmienności harmonicznych w utworze. Spektrogram pozwala dostrzec perkusje, instrumentację, modulacje i techniki przetwarzania sygnału, takie jak equalizacja i kompresja, w kontekście czasu. W systemach mono i stereo STFT często wykorzystywany jest jako część pipeline’u do klasyfikacji muzycznej, identyfikacji gatunku lub do wizualizacji efektów w czasie rzeczywistym.

Przetwarzanie mowy i identyfikacja źródeł

W przetwarzaniu mowy STFT umożliwia ekstrakcję cech, takich jak MFCC (Mel-Frequency Cepstral Coefficients), które opierają się na magnitudach spektrogramu w skali mel. STFT także odgrywa rolę w analizie artykulacji, identyfikacji mówcy oraz w translacji mowy na tekst. Zastosowania obejmują systemy rozpoznawania mowy, syntezę i mapowanie cech mowy do modeli uczenia maszynowego.

Diagnostyka i monitorowanie systemów akustycznych

Stosując STFT, inżynierowie monitorują jakość dźwięku w instrumentach, głośnikach, systemach głośnikowych oraz w środowiskach przemysłowych. Wykrywanie anomalii, identyfikacja źródeł hałasu, czy też monitorowanie stanu urządzeń to typowe zastosowania. W praktyce STFT pomaga w rozróżnieniu migotania, szumów i transjentów, co jest kluczowe w diagnostyce awarii sprzętu audio.

STFT w praktyce: jak implementować

Implementacja STFT może odbywać się na wiele sposobów, zależnie od platformy i języka programowania. Poniżej ogólne wytyczne krok po kroku, które można zastosować w Pythonie, MATLAB-ie czy Octave:

  • Wybierz długość okna N i typ okna. Zastanów się nad charakterem sygnału i pożądaną rozdzielczością czasową i częstotliwościową.
  • Określ krok hop size. Najczęściej 50% długości okna to bezpieczny punkt wyjścia, ale dla szybkich transjentów można iść do krótszych skoków.
  • Podziel sygnał na ramki, stosując wybrane okno do każdej ramki (mulitiplikacja okna i fragmentu sygnału).
  • Oblicz transformację Fouriera dla każdej ramki, uzyskując S(t, f).
  • Wyznacz magnitudę i fazę. Zwykle prezentuje się logarytmiczną magnitudę dla spektrogramu.
  • Zinterpretuj wynik lub użyj go w kolejnych etapach, takich jak rekonstruacja sygnału (np. poprzez Griffin-Lim) lub ekstrakcja cech do ML.

W popularnych bibliotekach istnieją gotowe funkcje do obliczania STFT. W Pythonie biblioteka librosa oferuje funkcje stft i istft (odtworzenie sygnału) oraz wiele narzędzi do wizualizacji spektrogramów. SciPy także zapewnia funkcje do szybkiej implementacji, a w MATLAB-ie i Octave STFT jest równie powszechnie używane.

Najczęstsze błędy i dobre praktyki

Unikanie zjawiska wycieku (spectral leakage)

Jednym z najczęstszych błędów jest źle dobrane okno, które nie tłumi bocznych lobów widma. Aby zminimalizować wyciek, warto używać okien z wygładzaniem lub odpowiednich proporcji długości okna do charakterystyki sygnału. Dodatkowo warto unikać zbyt krótkich okien przy sygnałach o wyraźnych wyższych częstotliwościach.

Znaczenie centrowania okna

W przypadku sygnałów o transjentach niezwykle ważne jest odpowiednie centrowanie okna wokół punktów aktywności. Błędy w centrowaniu mogą prowadzić do fałszywych interpretacji i zniekształceń w spektrogramie. Zwykle okno jest przesuwane z naprzemiennym nałożeniem (overlap) i w miarę możliwości centrowane na czasie, aby minimalizować te problemy.

Interpretacjaczęstotliwości a aliasing

W STFT, aby uniknąć aliasingu, trzeba respektować zasady próbkowania i ograniczenia wynikające z długości okna. Zbyt niska częstotliwość próbkowania lub zbyt długa ramka może prowadzić do sztucznego zlewania i błędnych interpretacji nt. obecności wysokich tonów. Dodatkowo przy obróbkach rzeczywistych sygnałów audio należy pamiętać o właściwej skali częstotliwości – częstotliwości mierzonych w Hz, a nie w indeksach binarnych bez kontekstu.

Przyszłe kierunki i trendy w STFT

Chociaż STFT pozostaje klasycznym narzędziem, rozwijane są kierunki, które poszerzają jego zastosowania i integrują STFT z nowymi technologiami:

  • Real-time i niskolatencyjne wersje STFT dla aplikacji live i interaktywnych systemów dźwiękowych.
  • Automatyczne dopasowywanie okna, adaptacyjne okna i dynamiczna optymalizacja parametru, by uzyskać lepszy kompromis między czasem a częstotliwością w zadaniach konkretnych sygnałów.
  • Wykorzystanie STFT w połączeniu z uczeniem maszynowym i deep learning, gdzie spektrogramowy input trafia do modeli klasyfikacyjnych, rozpoznawania mowy, identyfikacji gatunków muzycznych, detekcji anomalii i rekonstrukcji sygnału.
  • Połączenie STFT z technikami odwrotnego przetwarzania (inverse STFT) i algorytmami rekonstruującymi sygnał z magnitudy i fazy, co jest kluczowe w syntezie i w vocodingu.

Podsumowanie: STFT jako fundament analizy czasu-częstotliwości

STFT stanowi solidny, praktyczny i dobrze zrozumiały fundament w analizie sygnałów audio i mowy. Dzięki możliwościom kontrolowania długości okna, typu okna oraz kroku przesunięcia otrzymujemy elastyczny i zrozumiały spektrogram, który pozwala obserwować, jak energia częstotliwościowa rozkłada się w czasie. W praktyce STFT znajduje zastosowanie w analizie muzyki, w mowie i w diagnostyce akustycznej, a także jako element w pipeline’ach rozpoznawania dźwięków i w systemach wizualizacji dźwięku. Zrozumienie, jak parametry STFT wpływają na wynik, pozwala projektować lepsze algorytmy i uzyskiwać bardziej wiarygodne i użyteczne wyniki.

W miarę rozwoju technologii i pojawiania się nowych danych audio, STFT pozostaje ważnym narzędziem do eksploracji sygnałów, a także punktem wyjścia do bardziej zaawansowanych metod analitycznych. Dla każdego specjalisty od dźwięku, inżyniera dźwięku, naukowca danych czy studentów zajmujących się przetwarzaniem sygnałów, STFT to narzędzie, które warto mieć w arsenale – zarówno ze względu na prostotę, jak i na głębię analitycznych możliwości, jakie oferuje.