Elaborazione numerica dei segnali

 

Storicamente l’elaborazione numerica del segnale divenne possibile una decina di anni fa grazie all’utilizzo di processori speciali dedicati chiamati DSP (Digital Signal Processor). Quando vennero sviluppati, tra la fine degli anni ’80 e l’inizio degli anni ’90, questi chip resero possibile l’analisi in tempo reale, cioè mentre il segnale veniva campionato era nello stesso tempo elaborato e visualizzato sul display dello strumento per l’analisi spettrale. Al giorno d’oggi non c’è più bisogno di ricorrere a circuiti dedicati, tipo i DSP (parecchio costosi e tecnologicamente molto avanzati nei primi anni del loro utilizzo) perché basta un semplice Personal Computer.

 

Figura 1: Diagramma potenza di calcolo in funzione dell’anno di produzione

 

Se infatti osserviamo un diagramma qualitativo (Figura 1) che riporta la potenza di elaborazione in funzione dell’anno, a partire dal 1990 vediamo che la potenza dei DSP raddoppia ogni 5 anni mentre quella dei PC raddoppia ogni anno: il sorpasso lo si è avuto intorno al 1998. Oggi la velocità di un personal computer è molto superiore anche al più costoso DSP e quindi l’elaborazione numerica del segnale, in particolare del suono, viene svolta in maniera privilegiata su un calcolatore. Anche le Workstation Risc pur avendo dominato il settore tra il 1995 e il 1999 oggi sono ampiamente superate dai PC

 

Analisi in frequenza

 

L’elaborazione numerica del segnale tratta in particolare dell’analisi in frequenza, elaborazione il cui scopo è quello di ottenere lo spettro del segnale. Lo spettro è un diagramma che riporta in ordinata i decidel (dB) e in ascissa le frequenze (f).

Per ottenere lo spettro di un segnale bisogna compiere 3 passi:

·                      Campionamento

·                      Elaborazione FFT

·                      Post-Processing

 

Campionamento

 

Il campionamento consente di ottenere un segnale a tempo discreto, cioè una successione o sequenza x[n] di numeri rappresentabile con una funzione di variabile intera relativa avente valori reali o complessi,  partendo dal segnale elettrico analogico.

Campionare un generico segnale x(t) significa “estrarre” dal segnale stesso i valori che esso assume a istanti temporali equispaziati, cioè multipli di un intervallo T detto periodo di campionamento. Con questa operazione viene a crearsi una sequenza il cui valore n-esimo x[n] è il valore assunto dal segnale a tempo continuo all’istante nT:   x[n] = x(nT).

La frequenza di campionamento (sampling frequency)  e quindi la frequenza con cui viene letto l’ingresso analogico è pari a:

 

                       (1)

 

ed è misurata in Hz o in campioni/secondo. In Figura 2 è rappresentato un generico segnale analogico in funzione del tempo t, si può vedere come varii con continuità.  L in ordinata rappresenta il livello del segnale, che per i segnali acustici è solitamente espressa in decibel (dB).

 

Figura 2: Segnale analogico

 

La Figura 3 rappresenta il corrispettivo digitale del precedente segnale analogico: in questo caso si vede chiaramente che abbiamo a che fare con una sequenza discreta di valori e non più con un continuo, coi valori della sequenza che distano tra loro un tempo T pari al periodo di campionamento.

 

Figura 3: Segnale digitale

 

Una volta discretizzato il segnale nel tempo, che come abbiamo visto è molto semplice perché basta avere un CLOCK che scandisca gli istanti ai quali effettuare la lettura, bisogna discretizzarlo in ampiezza.

Per fare ciò il valore viene mandato in ingresso ad un circuito chiamato convertitore analogico – digitale (A/D) che produce in uscita una sequenza di bit. Per ogni campione dal convertitore vengono emessi un certo numero di bit che ne rappresentano la risoluzione. I valori tipici di risoluzione di un convertitore A/D sono 16, 20 o 24 bit. Ad esempio 16 è il numero di bit utilizzati dai lettori CD, 20 quelli utilizzati dalle schede audio e dai registratori digitali, 24 quelli utilizzati dai lettori DVD. Maggiore è la risoluzione più precisa sarà la discretizzazione; infatti attraverso questo dispositivo il segnale viene approssimato con un certo numero di gradini: 16 bit equivalgono a 65536 gradini, 20 bit a 1048576 gradini e 24 bit a 16777216 gradini. Il piccolo errore insito nella rappresentazione del numero reale su un numero finito di cifre rappresenta la quantizzazione.

Dal teorema di Shannon (o di Nyquist) si ha che:

 

                       (2)

 

dove fmax   rappresenta la frequenza massima contenuta nel segnale, ed è anche conosciuta come frequenza di Nyquist,  mentre  fc  è la frequenza  di campionamento. Questo affinché un segnale dopo il campionamento possa nuovamente essere ritrasformato in analogico. Ad esempio un segnale con frequenze fino a 20000 Hz dovrà essere campionato con una frequenza pari o superiore a 40000 Hz.

Le frequenze di campionamento più utilizzate sono 44,1 kHz per i lettori CD,    48 kHz per i registratori digitali, 96 kHz per i lettori DVD.

 

Figura 4: Segnale campionato

 

Riassumendo la larghezza dei gradini del segnale campionato (Figura 4) è data dall’intervallo di campionamento nel tempo mentre l’altezza dei gradini è data dalla risoluzione del convertitore A/D.

E’ chiaro che se si aumenta la risoluzione sull’asse delle ampiezze con un convertitore A/D migliore, si deve aumentare anche la risoluzione sull’asse dei tempi. Ad esempio non ha senso avere una risoluzione di 24 bit sottocampionata nel dominio del tempo (44,1 kHz). Quando i gradini non sono proporzionati tra loro si creano gli “artefatti vivi”.

In uscita dal convertitore il suono è rappresentato da un vettore di numeri che vengono memorizzati in celle di memoria (Figura 5).

 

Figura 5: Vettore di dati in celle di memoria

 

Di questo stream di dati si dovrà effettuare l’elaborazione per poter visualizzare lo spettro del segnale. La prima cosa da fare è suddividere l’intero flusso di dati in blocchi di N punti perché l’algoritmo che si applicherà agisce su un numero N di punti e quindi per ogni blocco verrà calcolato lo spettro.

 

Elaborazione FFT

 

L’algoritmo matematico che calcola lo spettro a partire dai campioni quantizzati si chiama FFT (Fast Fourier Transform). Esso opera sugli N campioni reali nel tempo in ingresso trasformandoli in N/2+1 campioni complessi in frequenza con spaziatura costante, ciascuno costituito da una parte reale e da una parte immaginaria: l’algoritmo quindi produce un andamento lineare sull’asse delle frequenze. Una rappresentazione di questo tipo attribuisce la stessa importanza a tutte le frequenze sia basse che alte.

 

 

Figura 6: Schema di algoritmo FFT

 

Il primo elemento che si ottiene ha valore reale e rappresenta il valore medio del segnale, cioè la sua componente continua, ed è chiaramente una componente a frequenza nulla. Il secondo elemento, ha frequenza:

 

                      (3)

 

con T il periodo di campionamento. Le frequenze successive sono:

 

                      (4)

 

con i=1,2,3...N/2 dove l'ultima frequenza è quella di Nyquist.

Dal punto di vista del calcolo della trasformata, l'algoritmo FFT è più efficace se nella sua esecuzione si utilizza parte reale e parte immaginaria invece che ampiezza e fase, e se in termine di numeri viene scelto N come un esponente di 2, ad esempio     N = 4096. Applicando l’algoritmo a questo numero di campioni si ottengono 2048 linee spettrale; in realtà se ne dovrebbero ottenere 2049 (N/2+1) considerando la componente continua del segnale, ma se si è svolto correttamente il campionamento la componente continua di un segnale acustico  è nulla.

Utilizzando una frequenza di campionamento di 48 kHz si ha un campo di frequenze che va da 0 a un massimo di 24 kHz (frequenza di Nyquist). La risoluzione sarà quindi pari a:

 

              (5)

 

Si ottiene così uno spettro in banda stretta.

 

Post-Processing

 

Ottenuto lo spettro in banda stretta si applica il post-processing, cioè un’elaborazione successiva alla realizzazione dello spettro che permette di cambiare l’asse delle frequenze da lineare in terzi di ottava e nel tempo produce una costante di tempo Fast o Slow in modo da non avere tanti spettri, ognuno senza memoria del passato, ma di mediarli nel tempo e di visualizzare le bande che variano in maniera più graduale, più morbida.

 

Analisi in terzi di ottava

 

Vediamo ora come è possibile analizzare un segnale audio attraverso un personal computer, con l’ausilio di specifici software. Per l’analisi in terzi di ottava si utilizza un programma di nome SpectraRTA  (www.soundtechnology.com).

SpectraRTA calcola direttamente lo spettro a banda percentuale costante di 1/1 ottava, 1/3 di ottava, 1/6 di ottava, 1/12 di ottava o 1/24 di ottava. Il funzionamento del programma è da intendersi in “Real-time mode”, ossia non è possibile registrare e quindi post-elaborare i dati. Consente inoltre l’uso di un generatore di segnali che per mezzo della scheda audio del PC genera diversi segnali di prova quali ad esempio rumore bianco, rumore rosa, sinusoidi sovrapposte, sinusoidi sweep. Il programma implementa funzioni avanzate quali il calcolo della distorsione armonica totale, della distorsione di intermodulazione, del rapporto segnale rumore, della ricerca del ritardo tra i canali e della visualizzazione della fase stereo.

Attraverso questo programma viene prima svolta un’analisi in tempo reale della voce catturata dal microfono del PC. La scheda audio che utilizziamo lavora a         48 kHz con una risoluzione di 20 bit, più che sufficienti a rappresentare in maniera perfetta il suono.

 

Figura 7: Spettro della voce

 

I valori in decibel visualizzati sull’asse delle ascisse non sono i decibel acustici, ma sono chiamati dBr, cioè decibel relativi; infatti lo zero corrisponde al fondo scala della scheda audio. Per visualizzare i decibel acustici il sistema deve essere calibrato attraverso l’uso di un generatore di segnale con livello noto.

Come si può osservare da questa prova (Figura 7), la voce umana è dominata da un campo di frequenze medie (200 Hz – 4000Hz).

Ora utilizzando il generatore di segnali presente nel programma, generiamo un particolare suono chiamato “rumore rosa” (pink noise): questo è un suono che ha la stessa energia a tutte le frequenze e più precisamente la stessa energia in ogni banda in terzi di ottava. Per essere analizzato il segnale viene prelevato direttamente dall’uscita della scheda audio senza passare attraverso il microfono (Figura 8).

 

Figura 8: Spettro del rumore rosa

 

Dall’analisi del segnale si nota come lo spettro del rumore rosa sia uno spettro pressoché piatto. Mediando con un tempo infinito si osserverebbe un ulteriore livellamento. Il fatto che non sia perfettamente piatto dipende dalla scheda audio del PC, che non è uno strumento professionale.

 Svolgo ora la stessa misura inserendo da programma la curva di ponderazione A (Figura 9). La ponderazione A è un tipo di equalizzazione che esalta le frequenze maggiormente percepite dall’uomo e taglia quelle meno udibili (basse frequenze).

 

Figura 9: Spettro del rumore rosa ponderato A

 

Si nota come la curva di ponderazione A abbia ridotto notevolmente le basse frequenze e lievemente amplificato le alte frequenze.

Una prova interessante può essere il confronto tra l’analisi dello spettro della voce senza alcun filtraggio e l’analisi con l’inserimento della ponderazione A. La Figura 10a e la Figura 10b rappresentano questo confronto.

 

Figura 10a: Spettro della voce senza filtraggio

 

Figura 10b: Spettro della voce ponderato A

 

 

 

 

 

 

Analisi in banda stretta

 

L’analisi vista fino ad ora attraverso il programma SpectraRTA è un’analisi in terzi di ottava. Per svolgere invece un’analisi in banda stretta del segnale audio abbiamo bisogno di un altro programma di nome SpectraLAB  (www.soundtechnology.com).

A differenza di SpectraRTA, il programma SpectraLAB prevede tre modi di funzionamento: “Real Time”, “Recorder” e “Post Process”. Nel modo “Real Time” viene svolta un’analisi in tempo reale del segnale acquisito dalla scheda audio, mostrandone i risultati sullo schermo. In questa modalità non viene memorizzato nulla su disco e non è possibile quindi eseguire analisi successive sullo stesso segnale. Nel modo “Recorder”, oltre ad eseguire l’analisi, il programma memorizza sull’hard disc il segnale audio acquisito. In questo modo di funzionamento è possibile anche riascoltare un segnale preventivamente memorizzato, rianalizzarlo ed eventualmente compiere filtraggi digitali. Nel modo “Post Process” è consentito rielaborare un segnale registrato, con caratteristiche di dettaglio di analisi particolarmente avanzate. Sono inoltre disponibili diverse interessanti utilities quali ad esempio il marker (che consente di etichettare le frequenze di particolare interesse), il trigger (che consente di sincronizzare l’acquisizione al verificarsi di determinate condizioni), il calcolo della distorsione armonica totale, ecc. Inoltre SpectraLAB non si limita solo a fornire lo spettro di quanto acquisito, ma visualizza anche la forma d’onda audio nel tempo (come un oscilloscopio), su un sonogramma e un waterfall (che esamineremo più avanti).

Vediamo come appare l’analisi spettrale del suono della voce in questo programma dalla Figura 11.

 

Figura 11: Analisi nella frequenza (sopra) e nel tempo (sotto) di un segnale vocale

 

Per vedere la differenza tra l’analisi in banda stretta e l’analisi in terzi d’ottava ripetiamo la prova del rumore rosa, grazie al generatore di segnali interno al programma.

 

Figura 12: Spettro del rumore rosa in banda stretta

 

Dalla Figura 12 si nota che lo spettro non è più piatto, ma scende lentamente all’aumentare delle frequenze e più precisamente cala di 3 dB per ogni ottava. Questo perché ogni ottava è larga il doppio della precedente e cattura il doppio dell’energia e come abbiamo visto con il campionamento in terzi di ottava lo spettro deve risultare piatto; quindi passando all’analisi in banda stretta le alte frequenze del rumore rosa hanno un livello minore delle basse frequenze. Comunque anche in SpectraLAB è possibile, una volta acquisito il segnale, visualizzare un’analisi in terzi di ottava attraverso un post-processing.

Ripetiamo la prova utilizzando un altro segnale chiamato “rumore bianco” (white noise) che è definito come quel rumore che ha uno spettro con lo stesso livello a tutte le frequenze in banda stretta: in proporzione quindi il rumore bianco ha molta più energia alte frequenze del rumore rosa.

 

Figura 13: Spettro del rumore bianco

 

 

Andando a visualizzare l’analisi in terzi di ottava del rumore bianco (Figura 14) si vede come lo spettro sia una rampa crescente: cresce di 3 dB ogni ottava per le stesse motivazioni viste per il rumore rosa.

 

Figura 14: Spettro del rumore bianco in terzi di ottava

 

Teorema di Fourier

 

L’enunciato di questo teorema afferma che qualunque suono periodico è sempre rappresentabile come sovrapposizione di un opportuno numero d'onde sinusoidali (toni puri) di determinate ampiezze, frequenze e fasi:

 

                             (6)

 

La dipendenza dalle frequenze della (6) è espressa dalla seguente relazione:

 

                                                       (7)

 

Per ogni indice i c’è una ampiezza, una frequenza e una fase. Con un numero sufficientemente grande di sinusoidi è possibile rappresentare qualsiasi segnale purché periodico; questo vuol dire che se si suddivide il flusso di dati proveniente dal convertitore A/D e si prende un blocco di N campioni, la periodicità implica che il blocco successivo e il blocco precedente devono essere perfettamente uguali.            Il problema è che in genere i segnali non sono periodici. I problemi possono insorgere anche per un segnale periodico. Per esempio si ponga in ingresso al campionatore una sinusoide a 1000 Hz di frequenza.

 

Figura 15: Segnale sinusoidale campionato

 

In Figura 15 sull’asse delle ordinate è rappresentato il valore tradotto dal convertitore A/D a 16 bit (escursione massima da –32768 a 32768, che corrisponde ad un fondo scala elettrico di 100 mV con un microfono di sensibilità 50 mV/Pa), mentre sull’asse delle ascisse sono rappresentati il numero di campioni. Andiamo a calcolare la pressione istantanea (pist) di ogni campione (x):

 

                          (8)

 

e quindi il livello acustico istantaneo (List) associato a questa pressione:

 

                                 (9)

 

Andando a rappresentare il livello acustico istantaneo in funzione del numero di campioni si ottiene la Figura 16.

 

 

Figura 16: Andamento del livello acustico istantaneo in funzione del n° di campione

 

Il livello medio è di 94 dB (pari ad una pressione di 1 Pa) mentre il livello massimo è di 97 dB; la differenza tra valore istantaneo e valore medio è detta “fattore di cresta”. Come si vede nell’esempio, il fattore di cresta di una sinusoide è di 3 dB.  Il fattore di cresta è importante per la scelta del convertitore A/D perché il valore istantaneo non deve eccedere il valore massimo di fondo scala (in questo caso il fondo scala è di 100 dB) altrimenti si ha una saturazione del sistema che porta ad una distorsione della forma d’onda.

Analizziamo ora il problema legato alla periodicità del segnale. Se il campionamento è iniziato per caso in corrispondenza di un passaggio per lo zero, non è detto che anche al termine del periodo si abbia un campione che sia uno zero crossing. Quindi tra una finestra che contiene N campioni e la successiva la forma d’onda è discontinua.

 

Figura 17: Sinusoide discontinua

 

Intermini di analisi di frequenza questa discontinuità produce uno spettro bianco, cioè uno spettro piatto che si sovrappone a quello della sinusoide. In Figura 18 si può vedere l’analisi di Fourier di una sinusoide discontinua confrontata con l’analisi di una sinusoide pura (una sola riga spettrale).

 

Figura 18: Spettro di una sinusoide discontinua

 

Questo fenomeno che distribuisce energia su tutto lo spettro prende il nome di “fenomeno di Leakege”. Una soluzione sarebbe quella di campionare il segnale con un numero di campioni tali da terminare esattamente ogni finestra in uno zero crossing, ma non è possibile sapere a priori la lunghezza del periodo.

Il vero problema è che il suono è una grandezza non periodica e per poter sfruttare l’analisi di Fourier bisogna renderlo tale. Per fare ciò è necessario portare progressivamente a zero i campioni alle estremità della finestra applicando una ponderazione (pesatura dei campioni). Chiamando w questa ponderazione, un esempio è rappresentato dalla Figura 19, dove w è una funzione “a campana”.

 

Figura 19: Pesatura dei campioni

 

La forma d’onda più semplice con cui andare a pesare i campioni è quella del “mezzo seno” (finestra di Hanning) che è rappresentata in Figura 20.

 

Figura 20: Finestra di Hanning

 

Una schematizzazione di come opera la Hanning sui campioni del segnale è data dalla Figura 21. 

 

Figura 21: Finestra di Hanning applicata allo stream di dati

 

Applicando la finestra di Hanning al segnale sonoro in ingresso si ha che quest’ultimo viene forzato ad andare a zero (Figura 22).

 

Figura 22: Finestra di Hanning applicata al segnale sinusoidale

 

In questo modo si riesce a rendere periodico il segnale e a ridurre il fenomeno del Leakege. Viene però introdotto un grosso problema: tutto ciò che accade nell’intorno del passaggio da una finestra alla successiva viene ignorato dal sistema perché moltiplicato per un coefficiente praticamente nullo. Quindi se tra due finestre consecutive si verifica un evento importante ai fini dell’analisi, questo evento viene perso.

Per ovviare a questo problema non si lavora con finestre consecutive, ma con finestre sovrapposte (overlapp di finestre) e la sovrapposizione deve essere di almeno il 50 % (Figura 23). In questo modo si ottiene una finestra che ha peso 1 là dove prima si aveva peso 0. Per le misure aventi valore legale si vuole la certezza che tutti i campioni abbiano lo stesso peso e si dimostra matematicamente che per avere ciò è necessario utilizzare un overlapp del 75 %.

 

Figura 23: Sovrapposizione di finestre

 

Visualizzazione di spettri variabili nel tempo

 

Se si vuole analizzare un fenomeno che evolve nel tempo e avere una rappresentazione di tutti gli spettri ad istanti successivi si deve svolgere un’analisi “multispettring”. Esistono due tecniche di rappresentazione di un’analisi multispettring:

 

·                      Waterfall:  gli spettri vengono visualizzati uno dopo l’altro lungo una terza dimensione (è un diagramma 3-D). Questa è una tecnica di visualizzazione molto efficace soprattutto per analizzare i transitori (avviamento di un motore, una macchina in fase di accelerazione, ecc).

 

Figura 24: Waterfall

 

·                      Sonogramma:  è un diagramma bidimensionale dove in ascissa è riportato il tempo, in ordinata la frequenza, mentre l’altezza dei picchi è rappresentata da una scala cromatica. Il sonogramma è molto utilizzato nell’analisi della voce, la cosiddetta “impronta vocale”.

 

Figura 25: Sonogramma