short time fast fourier transform

short time fast fourier transform

Se hai mai provato a isolare la nota di un violino in un'orchestra o a capire perché il motore della tua auto emette quel ticchettio strano solo a certi giri, sai che la matematica standard spesso fallisce. Ti hanno insegnato che la trasformata di Fourier è magica. Ti dicono che può scomporre qualsiasi cosa. Ma c'è un problema grosso. La versione classica ti dice "quali" frequenze ci sono, ma si dimentica di dirti "quando" accadono. È come avere la lista degli ingredienti di una torta senza avere la ricetta che ti spiega l’ordine in cui mescolarli. Per risolvere questo pasticcio serve la Short Time Fast Fourier Transform, uno strumento che non si limita a scattare una foto statica del suono o del segnale, ma gira un vero e proprio film.

Il punto è semplice. La maggior parte dei segnali che contano davvero nel mondo reale, dalla voce umana ai battiti cardiaci fino alle vibrazioni dei macchinari industriali, non sono stazionari. Cambiano. Cambiano in continuazione. Se prendi un intero brano musicale e applichi la trasformata classica, otterrai un ammasso di picchi che non ti dicono nulla sulla melodia. La tecnica di cui parliamo oggi invece seziona il segnale in piccoli pezzi, li analizza uno per uno e ricostruisce una mappa temporale. È la differenza che passa tra guardare uno spartito intero sovrapposto in un unico punto e leggere la musica riga dopo riga.

Il limite della visione globale

Per anni gli ingegneri si sono scontrati con il principio di indeterminazione applicato al segnale. Se vuoi una precisione pazzesca sulla frequenza, devi accettare di perdere la cognizione del tempo. Se invece vuoi sapere esattamente quando accade un picco, la tua risoluzione in frequenza va a farsi benedire. Questo metodo a finestre temporali cerca di trovare un compromesso accettabile. Non è perfetto, ma è ciò che ci permette di far funzionare il riconoscimento vocale sul tuo telefono o di pulire le registrazioni audio sporche dal rumore di fondo.

Il funzionamento pratico si basa su un concetto banale ma potente: la segmentazione. Prendi il segnale lungo, ci appoggi sopra una "finestra" (una funzione matematica che isola una porzione) e calcoli la trasformata su quel pezzetto. Poi sposti la finestra un po' più avanti e ripeti. Questo spostamento crea una serie di spettri locali che, messi insieme, formano quello che chiamiamo spettrogramma. È una rappresentazione visiva dove il tempo sta sull'asse orizzontale, la frequenza su quello verticale e l'intensità è data dal colore o dalla luminosità.

Come implementare correttamente la Short Time Fast Fourier Transform nei tuoi progetti

Quando decidi di sporcarti le mani con il codice o con software di analisi come MATLAB o Python, il primo errore che commetti è ignorare la forma della finestra. Non puoi semplicemente tagliare il segnale a pezzi netti. Se lo fai, crei dei bordi artificiali che introducono distorsioni pesanti, note come "leakage" spettrale. Devi usare finestre morbide, come la Hamming o la Hann, che sfumano l'inizio e la fine del segmento. Questo accorgimento tecnico cambia tutto. Senza di esso, i tuoi dati sembreranno pieni di rumore che in realtà non esiste.

La scelta della lunghezza della finestra

Questa è la parte dove molti esperti cadono. Quanto deve essere lunga la tua sezione di analisi? Se scegli una finestra molto corta, vedrai benissimo quando iniziano e finiscono i suoni. Ottima risoluzione temporale. Però, la tua capacità di distinguere due note vicine tra loro sparirà. Al contrario, con una finestra lunga, vedrai le frequenze con una precisione chirurgica, ma non saprai più dire se quel suono è durato un decimo di secondo o mezzo secondo.

Nella pratica industriale, specialmente in Italia dove la manutenzione predittiva sta crescendo molto nelle fabbriche meccaniche, si usa spesso una tecnica di sovrapposizione (overlap). Non sposti la finestra saltando da un blocco all'altro. La fai scorrere in modo che ogni nuovo segmento contenga il 50% o il 75% del precedente. Questo trucco serve a non perdere informazioni importanti che potrebbero cadere proprio sui bordi della finestra dove il segnale viene attenuato.

Gestire il compromesso tra tempo e frequenza

Non esiste una soluzione unica che vada bene per tutto. Se stai analizzando il battito di un martello, ti serve velocità. Se stai studiando il ronzio di un trasformatore elettrico a 50Hz, ti serve precisione in frequenza. Spesso consiglio di fare più passaggi con diverse lunghezze di finestra per vedere cosa emerge dai dati. È un lavoro di pazienza. Molti software moderni automatizzano questo processo, ma se non capisci cosa succede sotto il cofano, finirai per interpretare fischi per fiaschi.

Applicazioni reali che cambiano il mercato

Non stiamo parlando di teoria accademica fine a se stessa. Questa analisi è ciò che permette ai sistemi di monitoraggio strutturale di capire se un ponte sta cedendo prima che appaiano le crepe visibili. In Italia, dopo i fatti tragici degli scorsi anni, l'attenzione su queste tecnologie è altissima. Sensori accelerometrici montati sui piloni inviano dati che vengono elaborati proprio con queste trasformazioni temporali per identificare variazioni nelle frequenze di risonanza della struttura.

Il mondo della bioingegneria e della medicina

Pensa all'elettroencefalogramma (EEG). Il cervello non emette onde statiche. Le onde Alpha, Beta e Theta fluttuano costantemente a seconda che tu sia sveglio, stia dormendo o sia concentrato. Usare un'analisi statica qui sarebbe inutile. I ricercatori del CNR utilizzano varianti di questo algoritmo per mappare l'attività cerebrale in tempo reale durante i test clinici. Identificare un'anomalia ritmica che dura solo pochi millisecondi può fare la differenza tra una diagnosi corretta e una mancata.

C'è poi il settore della musica digitale. Ogni volta che cambi il tempo di una canzone senza cambiare la tonalità (il famoso "time-stretching"), stai usando questa logica. Il software scompone l'audio, allontana o avvicina i segmenti e poi ricostruisce il tutto cercando di non creare artefatti udibili. È un lavoro di chirurgia digitale che richiede una potenza di calcolo che solo le moderne CPU e GPU riescono a gestire agevolmente.

Difesa e sorveglianza sonar

I sottomarini non vedono, ascoltano. Il sonar passivo raccoglie una quantità di rumore oceanico spaventosa. Per distinguere l'elica di una nave mercantile da quella di una fregata militare, bisogna analizzare come le frequenze cambiano durante la rotazione delle pale. Questo tipo di firma acustica è dinamica per definizione. I tecnici della difesa passano ore a studiare spettrogrammi generati tramite la Short Time Fast Fourier Transform per catalogare le minacce. Senza la dimensione temporale, tutti i rumori del mare sembrerebbero solo un fruscio indistinto.

Errori comuni da evitare assolutamente

L'errore più banale è il "picket fence effect". Succede quando le frequenze del tuo segnale cadono proprio tra i cestini (bin) di frequenza della trasformata. Sembra che il segnale sparisca o si indebolisca. La soluzione non è solo aumentare il numero di punti della trasformata, ma usare lo zero-padding. Aggiungi degli zeri alla fine del tuo segmento di segnale prima di calcolare la funzione. Non aggiungi informazioni reali, ma rendi lo spettro più fluido e facile da leggere per l'occhio umano e per gli algoritmi di picco.

Confondere la risoluzione con la precisione

Molti pensano che avere tanti pixel sullo spettrogramma significhi avere dati migliori. Falso. La risoluzione è limitata dalla fisica, non dal software. Se la tua finestra è di 10 millisecondi, non potrai mai distinguere frequenze più vicine di 100 Hz, non importa quanto zoom fai sullo schermo. È una legge naturale, un po' come cercare di leggere una targa da una foto sfuocata aumentando solo la luminosità del monitor. Non funziona.

Un altro sbaglio frequente riguarda l'aliasing. Se il tuo segnale non è filtrato correttamente a monte, le frequenze alte "rimbalzano" e appaiono come frequenze basse fasulle. Prima di applicare qualsiasi algoritmo, devi essere certo che la tua frequenza di campionamento sia almeno il doppio della frequenza più alta presente nel segnale. Questo è il teorema di Nyquist-Shannon, la base di tutto il digitale. Se lo ignori, i tuoi risultati saranno pura fantasia.

Sottovalutare l'impatto computazionale

Sebbene la versione veloce dell'algoritmo sia ottimizzata, calcolarla migliaia di volte al secondo per flussi di dati ad alta velocità può mettere in ginocchio sistemi embedded poco potenti. Se stai lavorando su una scheda Arduino o un microcontrollore economico, devi ottimizzare il codice. Spesso si sceglie di non ricalcolare tutto da zero se lo spostamento della finestra è piccolo, usando algoritmi ricorsivi. È una questione di efficienza energetica e di calore. In applicazioni spaziali o su droni, ogni ciclo di clock risparmiato è batteria guadagnata.

Prospettive future e l'integrazione con il deep learning

Oggi non ci limitiamo più a guardare lo spettrogramma con gli occhi. Lo diamo in pasto alle reti neurali convoluzionali (CNN). Poiché lo spettrogramma è essenzialmente un'immagine, le IA che sono bravissime a riconoscere gatti e cani diventano imbattibili nel riconoscere guasti meccanici o parole specifiche. Questa unione tra elaborazione del segnale classica e intelligenza artificiale sta rivoluzionando il settore.

Le aziende che producono elettrodomestici, ad esempio, usano questi modelli per testare i compressori dei frigoriferi a fine linea di montaggio. Un microfono ascolta il rumore, calcola la scomposizione temporale e l'IA decide in un secondo se il pezzo è buono o se ha un cuscinetto difettoso. È molto più affidabile dell'orecchio umano, che si stanca dopo otto ore di turno in fabbrica.

La sfida dei segnali non lineari

Nonostante la sua utilità, questa tecnica fatica quando i segnali cambiano troppo velocemente all'interno della singola finestra. Per eventi impulsivi, come un'esplosione o un urto secco, le trasformate wavelet sono spesso preferite perché permettono di avere finestre di dimensioni variabili. Tuttavia, per l'80% delle applicazioni ingegneristiche comuni, restare sulla strada maestra della scomposizione a finestre fisse è la scelta più saggia e meno complessa da implementare.

La stabilità degli algoritmi è ormai garantita da decenni di test. Se prendi librerie standard come SciPy in Python, hai a disposizione strumenti testati da milioni di utenti. Non c'è bisogno di reinventare la ruota, ma devi sapere quale ruota scegliere per il tuo carro.

Guida pratica per iniziare a lavorare sui segnali

Se vuoi passare dalla teoria alla pratica, non serve un laboratorio della NASA. Ti basta il tuo computer e un po' di curiosità. Ecco i passi che farei io se dovessi ricominciare da zero domani mattina.

  1. Scarica una registrazione audio pulita, magari un file WAV di un pianoforte. I file compressi come gli MP3 a volte introducono artefatti che possono confonderti all'inizio.
  2. Usa un ambiente di programmazione come Jupyter Notebook. Visualizzare i grafici immediatamente mentre cambi i parametri è vitale per capire cosa succede.
  3. Sperimenta con la lunghezza del segmento (nperseg). Prova a impostarlo a 256, poi a 1024, poi a 4096. Guarda come cambia lo spettrogramma. Noterai che con 4096 le linee delle note sono sottili e precise, ma l'inizio della nota sembra "sfumato" nel tempo.
  4. Cambia il tipo di finestra. Passa da una rettangolare a una di Blackman-Harris. Osserva come il rumore di fondo tra le note diminuisce drasticamente.
  5. Prova ad analizzare segnali reali. Registra il rumore del tuo ventilatore o della tua tastiera mentre scrivi. Cerca di identificare le frequenze dominanti.

Non scoraggiarti se all'inizio vedi solo macchie di colore senza senso. L'occhio deve allenarsi a leggere gli spettrogrammi proprio come l'orecchio si allena a distinguere gli strumenti. È un'abilità che si acquisisce con l'esperienza. Una volta che avrai imparato a vedere il tempo e la frequenza insieme, non potrai più tornare indietro alla vecchia visione statica.

Il settore dell'analisi dei segnali è in continua espansione. Con l'aumento dei sensori IoT in ogni oggetto che ci circonda, la richiesta di esperti che sappiano interpretare questi dati è altissima. Che si tratti di migliorare la qualità delle chiamate Zoom o di salvare vite umane monitorando la stabilità di una diga, la capacità di scomporre la realtà nei suoi componenti fondamentali rimane una delle competenze più preziose che un tecnico possa avere oggi.

Alla fine della fiera, la matematica è solo uno strumento. Quello che conta è la tua capacità di guardare oltre il rumore e trovare il segnale che conta. E con gli strumenti giusti, quel segnale è lì, pronto per essere letto. Non serve essere un genio della fisica, serve solo il metodo giusto e la voglia di scavare sotto la superficie dei dati grezzi. Spero che questa panoramica ti abbia dato la spinta necessaria per smettere di leggere e iniziare a calcolare. Buon divertimento con i tuoi dati.

💡 Potrebbe interessarti: ok google che giorno
GB

Giuseppe Barbieri

Giuseppe Barbieri ha collaborato con diverse redazioni online, costruendo un percorso centrato su affidabilità e qualità informativa.