Come fare lo spettrogramma di un segnale audio

L’analisi dello spettro fornisce una vasta gamma di informazioni sui segnali che possono essere utilizzati per le attività di rilevazione, classificazione e discriminazione. Poiché l’udito si basa su una decomposizione spettrale, l’analisi dello spettro audio, in particolare, fornisce una base importante per molte applicazioni di elaborazione del segnale audio. Lo spettrogramma di un segnale audio è una rappresentazione visiva di come lo spettro delle frequenze di un segnale audio varia nel tempo. Esso è fondamentale nello studio del linguaggio dell’uomo e degli animali, ma anche di altri fenomeni naturali.

L’analisi audio è l’estrazione di informazioni e significato dai segnali audio per analisi, classificazione, memorizzazione, recupero, sintesi, etc. I mezzi di osservazione e i metodi di interpretazione variano, poiché l’analisi audio può riferirsi all’orecchio umano e al modo in cui le persone interpretano il suono udibile sorgente, o potrebbe riferirsi all’utilizzo di tecnologie come un analizzatore audio per valutare altre qualità di una sorgente sonora come ampiezza, distorsione, risposta in frequenza e altro.

La forma più diffusa di analisi audio deriva dal senso dell’udito, un tipo di percezione sensoriale che si verifica in gran parte della fauna del pianeta. l’analisi audio è un processo fondamentale di molti esseri viventi. I suoni emessi dall’ambiente circostante o da altri esseri viventi forniscono input al meccanismo uditivo, per cui il cervello dell’ascoltatore può interpretare il suono e come deve rispondere. Esempi di funzioni includono il parlato, la risposta sorprendente, l’ascolto della musica e altro.

Spettrogramma, realizzato con il software Spek, di Deep Note, il marchio sonoro di THX, caratterizzato da un caratteristico crescendo sintetizzato di 30 voci che iniziano in un intervallo ristretto, da 200 a 400 Hz, e si spostano lentamente verso tonalità preselezionate che comprendono una diffusione di frequenza più ampia (circa tre ottave). È stato creato da James A. Moorer, un ex dipendente della divisione computer di Lucasfilm, alla fine del 1982.

Lo studio del sistema uditivo è stato fortemente incentrato sulla matematica e sull’analisi delle vibrazioni e dei suoni sinusoidali, per comprendere come l’orecchio umano elabora l’aria in movimento e la trasforma nella gamma di frequenza udibile, tra 20 e 20.000 Hz. L’orecchio è in grado di prendere una forma d’onda complessa ed elaborarla in diversi intervalli di frequenza grazie alle differenze nelle strutture del condotto uditivo, che sono sintonizzate su intervalli di frequenza specifici.

Uso e caratteristiche degli spettrogrammi audio

Uno spettrogramma è una rappresentazione visiva di come lo spettro delle frequenze di un segnale varia nel tempo. Quando sono applicati a un segnale audio, gli spettrogrammi sono talvolta chiamati sonografi o vocegrammi. Quando i dati sono rappresentati in un grafico 3D, possono essere chiamati “cascate”. Gli spettrogrammi sono ampiamente utilizzati nei settori della musica, della linguistica, del sonar, del radar, dell’elaborazione del parlato, in sismologia e in altri settori della scienza.

Spettrogramma di superficie 3D di una parte di un brano musicale.

Gli spettrogrammi di un segnale audio, ad esempio, possono essere utilizzati per identificare foneticamente le parole del parlato e per analizzare i vari “versi” degli animali. I primi spettrogrammi analogici sono stati applicati a una vasta gamma di aree tra cui lo studio dei cinguettii degli uccelli e applicate a tutti i suoni degli animali. L’uso odierno dello spettrogramma digitale è particolarmente utile per studiare la modulazione di frequenza (FM) in tale campo e l’armonizzazione sociale.

Un formato comune di uno spettrogramma è un grafico con due dimensioni geometriche: un asse (ad es. l’ascissa) rappresenta il tempo e l’altro asse rappresenta la frequenza; una terza dimensione indica l’ampiezza di una particolare frequenza in un determinato momento, ed è rappresentata dall’intensità o dal colore di ciascun punto dell’immagine. Uno spettrogramma è dunque rappresentato come una “mappa di calore”, cioè come un’immagine con l’intensità mostrata variando il colore o la luminosità.

Spettrogramma delle parole pronunciate “XIX secolo”, in inglese. Le frequenze vengono visualizzate aumentando l’asse verticale e il tempo sull’asse orizzontale. La legenda a destra mostra che l’intensità del colore aumenta con la densità.

Anche gli studi di fonetica e sintesi vocale sono spesso facilitati dall’uso di spettrogrammi. Invertendo il processo di produzione di uno spettrogramma, è possibile creare un segnale il cui spettrogramma è un’immagine arbitraria. Questa tecnica può essere utilizzata per nascondere un’immagine in un brano audio ed è stata utilizzata da diversi artisti di musica elettronica. Infine, spettrogrammi fatti quasi in tempo reale vengono usati nel monitoraggio continuo delle stazioni sismiche.

Esistono molte varianti di formato: a volte gli assi verticale e orizzontale vengono commutati, quindi il tempo scorre su e giù; a volte si ha una trama a cascata in cui l’ampiezza è rappresentata dall’altezza di una superficie 3D anziché dal colore o dall’intensità. Inoltre, gli assi di frequenza e ampiezza possono essere lineari o logaritmici, a seconda dell’uso del grafico. L’audio è normalmente rappresentato con un asse di ampiezza logaritmica (in decibel o dB) e la frequenza lineare o logaritmica.

Spettrogramma delle vocalizzazioni dei delfini; cinguettio, clic e armonizzazione sono visibili rispettivamente come V invertite, linee verticali e striature orizzontali.

La dimensione e la forma della finestra di analisi possono essere variate. Una finestra più piccola (più corta) produrrà risultati più precisi nei tempi, a scapito della precisione della rappresentazione della frequenza. Una finestra più grande (più lunga) fornirà una rappresentazione di frequenza più precisa, a scapito della precisione nella rappresentazione dei tempi. Ciò per il principio di indeterminazione di Heisenberg secondo cui il prodotto della precisione in due variabili coniugate è maggiore o uguale a una costante.

Esempio: come studiare il canto degli uccelli

Quando si ascolta il canto degli uccelli, è immediatamente evidente che ogni canto ha una struttura ritmica distinta e talvolta persino melodica. I canti dei singoli uccelli in uno stormo suonano simili tra loro e differiscono da quelle degli altri stormi. Già nel 18° secolo, Barrington notò che i canti degli uccelli adottivi incrociati differivano dalla canzone tipica delle specie, suggerendo un ruolo per l’apprendimento vocale. Tuttavia, fino alla fine degli anni ’50, non vi era stato alcun modo oggettivo di confermare queste osservazioni mediante misurazioni fisiche delle canzoni stesse.

L’invenzione del cosiddetto “spettrografo sonoro” (che produce un sonogramma o spettrogramma vocale) presso i Bell Laboratories è stata una svolta significativa per lo studio quantitativo del comportamento vocale degli animali. Il sonogramma trasforma un flusso transitorio di suono in una semplice immagine visiva statica che rivela la struttura tempo-frequenza di ogni sillaba di un canto. Le immagini del sonogramma possono essere misurate, analizzate e confrontate tra loro.

Uno dei primi spettrografi sonori e il relativo schema di funzionamento.

Ciò consente al ricercatore di quantificare il grado di somiglianza tra i diversi brani ispezionando (o correlando in modo incrociato) i sonogrammi e classificando le sillabe dei brani in tipi distinti. Ogni brano viene quindi trattato come una stringa di simboli, corrispondente ai tipi di sillabe, ad es. a, b, c, d…, e la somiglianza dei brani viene stimata dalla proporzione dei tipi di sillabe condivisi attraverso i sonogrammi dei due brani. La procedura è ugualmente utile nel confrontare i canti di diversi uccelli e quelli dello stesso uccello in età diverse o dopo controllo e trattamenti sperimentali.

L’analisi spettrale è tutt’altro che intuitiva, ed ecco come vengono calcolati i sonogrammi. Quando si registra un uccello che canta, il microfono cattura piccole fluttuazioni della pressione dell’aria che chiamiamo onde sonore e le trasforma in una corrente elettrica, che potrebbe assomigliare a questa su un intervallo temporale di 20 millisecondi:

La trasformata di Fourier veloce (FFT) è un algoritmo per calcolare la struttura periodica nel segnale, ma rappresentandola con un insieme di onde sinusoidali, chiamate frequenze. Tracciando la potenza di ciascuna di quelle frequenze si ottiene lo spettro di potenza mostrato qui sotto. Ciascuno dei picchi nello spettro di potenza (a sinistra), corrisponde a un’onda sinusoidale (v. parte destra della figura):

Ora arriva la parte interessante: se prendiamo quelle singole onde e le sommiamo tutte fra loro, otterremo un’onda simile a quella originale del segnale di partenza. Cioè, esattamente come l’onda originale, lo spettro di potenza (compresa la fase, che di solito non è mostrata) costituisce una rappresentazione completa del suono. Possiamo guardare il dominio del tempo (forma d’onda) o il dominio della frequenza (lo spettro di potenza) e ciascuno riassume la sua struttura periodica.

Il calcolo dello spettro di potenza funziona meglio quando il segnale è periodico e stazionario, motivo per cui nel suono di solito ha senso usare finestre di breve durata, ad esempio 5-20 ms. Per guardare un’intera canto, dobbiamo riassumere gli spettri di potenza di molte finestre temporali di piccole dimensioni. Ecco come si fa in pratica: prendi lo spettro di potenza di una finestra, diciamo dai primi 20 ms del brano, capovolgilo e sostituisci il grafico con una barra colorata:

Ora ripeti questa procedura per finestre temporali sovrapposte, ovvero 1-20 ms, 2-21 ms, 3-22, etc. e impila le barre dei colori una accanto all’altra. Il risultato potrebbe essere simile a quanto mostrato nella figura seguente. Questo è il famoso sonogramma! È un insieme di strisce verticali, ognuna delle quali rappresenta lo spettro di potenza di una determinata finestra temporale del suono o canto.

Calcolo dello spettrogramma: la trasformata di Fourier

Un spettrogramma può essere calcolato dal segnale nel tempo usando la trasformata di Fourier. A un livello elevato, la trasformata di Fourier è una funzione matematica che trasforma un segnale dal dominio del tempo al dominio della frequenza. Questa è una trasformazione molto potente, che ci dà la capacità di comprendere le frequenze all’interno di un segnale. Ad esempio, puoi prendere un segnale audio e rilevare suoni o toni al suo interno usando la trasformata di Fourier.

Come esempio di ciò che fa la trasformata di Fourier, guarda i due grafici seguenti. Il grafico a sinistra rappresenta un segnale complesso nel dominio del tempo, come quello che potrebbe produrre un microfono. Questo segnale è in realtà la somma di due onde sinusoidali. È possibile vedere un’onda sinusoidale a bassa frequenza con alta intensità che dà al segnale la sua forma generale su e giù. Tuttavia, al segnale viene aggiunta un’onda sinusoidale a frequenza più elevata con un’intensità inferiore, in modo che abbia piccoli bordi irregolari che sporgono quando sale e scende.

Una figura che mostra cosa fa una trasformata di Fourier.

Il grafico a destra è il risultato dell’esecuzione di una trasformata di Fourier sul segnale a sinistra. Puoi vedere l’output della trasformata di Fourier come un istogramma, o grafico a barre, dell’intensità di ciascuna frequenza. È subito evidente che due frequenze – i due picchi nel grafico – hanno intensità molto più forti delle altre. Queste frequenze rappresentano effettivamente le frequenze delle due onde sinusoidali che hanno generato il segnale. L’output della trasformata di Fourier non è altro che una vista nel dominio della frequenza del segnale originale nel dominio del tempo.

Segnali complessi fatti dalla somma delle onde sinusoidali sono tutti intorno a te! In effetti, tutti i segnali nel mondo reale possono essere rappresentati come la somma delle onde sinusoidali. La trasformata di Fourier ci dà un’idea di quali frequenze sinusoidali compongono un segnale. È possibile applicare la conoscenza del dominio della frequenza dato dalla trasformata di Fourier in modi molto utili, come: elaborazione audio, rilevamento di toni o frequenze specifici, etc.

Oggi esistono software (e librerie) per rendere relativamente semplice l’esecuzione di una trasformata di Fourier su un moderno computer o su un microcontrollore. In pratica vedrai che esistono perfino delle app che effettuano la “Trasformata di Fourier veloce”, o FFT: la FFT è un algoritmo che implementa una rapida trasformata di Fourier di dati discreti o reali. Puoi applicare i software, le librerie per microcontrollore o le app per smartphone /tablet per applicare la trasformata di Fourier ai segnali audio. A quel punto, non è difficile passare dallo spettro in frequenza così ottenuto a uno spettrogramma.

La app “Sound Spectrum Pro” per Android, che mostra la FFT di un segnale audio.

Ci sono due parametri importanti da tenere a mente con la FFT: il numero di bin della frequenza di uscita dell’FFT e la frequenza di campionamento, ovvero la quantità di tempo tra ciascun valore nell’input. La seconda ha un impatto sulle frequenze che possono essere misurate dalla FFT. Il teorema di campionamento di Nyquist impone che per una data frequenza di campionamento solo le frequenze fino a metà della frequenza di campionamento possano essere misurate accuratamente. Tienilo a mente poiché la frequenza di campionamento influirà sulle frequenze che puoi misurare con la FFT.

Spesso vogliamo visualizzare il suono come uno spettro che si evolve nel tempo, ovvero come uno spettrogramma, meglio se dell’intensità sonora. Sappiamo che questo è ciò che il cervello “vede” quando sentiamo il suono. Ci sono anche persone che possono “leggere” uno spettrogramma del discorso. Lo spettrogramma classico, sviluppato presso i Bell Telephone Laboratories durante la Seconda guerra mondiale, è stato usato per decenni per visualizzare lo spettro del suono a breve termine. Esso si ottiene iterando nel tempo il calcolo della FFT e, oggi, colorando poi lo spettrogramma in base all’intensità.

Un software gratuito che calcola la FFT di un segnale (acquisito ad esempio tramite la scheda audio del PC), e scaricabile da acustika.org.

La creazione di uno spettrogramma mediante Trasformata di Fourier Veloce (FFT) è un processo digitale. I dati campionati digitalmente, nel dominio del tempo, vengono suddivisi in blocchi, che di solito si sovrappongono e viene calcolata la trasformata di Fourier per determinare l’entità dello spettro di frequenza per ciascun blocco. Ogni blocco corrisponde quindi a una linea verticale nell’immagine: è una misurazione della grandezza rispetto alla frequenza per un momento specifico nel tempo. Questi spettri vengono poi “affiancati” per formare l’immagine o una superficie tridimensionale.

Hardware e software per creare uno spettrogramma

Gli analizzatori audio hardware sono stati il principale mezzo di analisi del segnale dall’invenzione del primo analizzatore audio, realizzato da Hewlett-Packard, HP200A. Gli analizzatori hardware sono generalmente utilizzati nella progettazione, nel collaudo e nella fabbricazione di prodotti di livello professionale e di consumo. Man mano che la tecnologia informatica progrediva, il software integrato si faceva strada in questi sistemi hardware e in seguito ci sarebbero stati strumenti di analisi audio che non richiedevano alcun componente hardware salvo il computer che eseguiva il software.

Due analizzatori di spettro audio degli anni Settanta, prodotti dalla HP.

Si noti che l’orecchio è una specie di analizzatore di Fourier. Cioè, il suono si diffonde lungo l’orecchio interno in base alla frequenza, proprio come un prisma separa la luce in vari colori. Di conseguenza, l’udito nel cervello si basa su una sorta di “analisi dello spettro a breve termine” del suono. Quando il contenuto di frequenza di un suono è diverso da quello di un altro suono, e i due suoni vengono mescolati (aggiunti) insieme, i suoni vengono ampiamente separati dal processo uditivo.

Questo ci consente di “mescolare” mentalmente i suoni, permettendoci di concentrarci su un suono nel mix, escludendo tutti gli altri. Questo è difficile da fare al computer. Inoltre, le risonanze formanti che distinguono le vocali del linguaggio sono separate nel nervo uditivo, facilitando in tal modo il riconoscimento delle vocali da parte del cervello. Infine, per l’uomo e per gli animali i suoni periodici risultano essere più udibili rispetto ai suoni casuali nella stessa banda di frequenza.

Il software Praat, utile per l’analisi della voce, e in particolare di suoni e parole del parlato. 

I software analizzatori audio vengono regolarmente utilizzati in varie fasi della produzione musicale, come l’audio dal vivo, il missaggio e il mastering. Questi prodotti tendono ad impiegare algoritmi ed elaborazione Fast Fourier Transform (FFT) per fornire una rappresentazione visiva del segnale analizzato. I tipi di display e informazioni includono spettro di frequenza, campo stereo, campo surround, spettrogramma e altro. Inoltre, esistono anche software specifici che fanno principalmente spettrogrammi, come ad esempio Spectrogram.

Anche solo limitandosi ai software gratuiti e open source che possono essere utilizzati da ingegneri del suono, produttori di audio e coloro che sono coinvolti nella registrazione e riproduzione del suono, l’elenco sarebbe lungo. Qui ci limitiamo a menzionare tre programmi gratuiti per l’analisi del suono, che quindi fanno non solo spettrogrammi ma molto altro: Sonic Visualizer, WaveSurfer (anche registrazione ed editing), Praat (per l’analisi fonetica del discorso).

Una schermata del software “Sonic Visualizer”.

A ciò si aggiunge, naturalmente, il software italiano gratuito Visual Analyser, che funge da analizzatore di spettro, oscilloscopio e altra strumentazione da laboratorio (ne abbiamo parlato qui). Inoltre, sempre per quanto riguarda i programmi “made in Italy”, segnaliamo FFT Analyzer, un altro analizzatore di spettro FFT che potete scaricare gratuitamente dal sito acustika.org, dove trovate pure due software di oscilloscopio e generatore di funzioni, che al solito funzionano usando la scheda audio del PC.

Uno spettrografo sonoro (o Sound Spectrograph) è un esempio di un programma per computer che tenta di fornire una rappresentazione visiva dello spettro delle frequenze di un segnale al suo variare. Uno spettrografo sonoro viene usato per registrare queste onde sotto forma di un grafico che può essere confrontato con i grafici di altri individui e differenziato. Sebbene i grafici vocali (o le impronte vocali) siano stati utilizzati nei procedimenti giudiziari, l’accuratezza di questa tecnica nell’identificazione delle persone è è oggetto di controversie tra gli esperti di linguaggio.