
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.