Elaborazione numerica dei segnali

 

L’elaborazione numerica dei segnali o Digital Signal Processing (DSP) è una tecnologia relativamente giovane, divenuta possibile una decina di anni fa grazie all’utilizzazione di appositi processori chiamati appunto DSP. Essi rendevano possibile l’analisi di un dato segnale in “diretta”, ovverosia mentre il segnale veniva campionato, il processore provvedeva anche alla sua elaborazione e alla sua visualizzazione sul display dello strumento utilizzato per l’analisi dello spettro. Attualmente l’impiego di questi processori dedicati è utilizzato altrove, soprattutto per il fatto che, ormai, basta un semplice PC.

 

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

 

Osservando infatti il diagramma in Figura 1 possiamo notare come la potenza di calcolo dei personal computer raddoppi ogni anno, a differenza di quella dei circuiti dedicati DSP che raddoppiano circa ogni 5 anni. Il sorpasso è avvenuto nel 1998 e al momento un personal computer ha una potenza di calcolo superiore di 20-50 volte anche del più costoso DSP. Per quel che riguarda le Workstation RISC, esse hanno dominato il settore tra il 1995 e il 1999, ma anche loro oggigiorno devono cedere il passo ai 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.        

Esso è una rappresentazione grafica su un piano cartesiano avente in ascissa la frequenza f ed in ordinata una grandezza che quantifichi l’ampiezza del suono espressa in decibel (dB)

I passi da compiere per ottenere lo spettro di un segnale sono 3:

·        Campionamento

·        Elaborazione con 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 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).

L’operazione di campionamento viene simbolicamente effettuata da un dispositivo, il campionatore, indicato con una sorta di  interruttore che si chiude per un intervallo di durata infinitesima. La cadenza con cui l’interruttore si chiude è pari a:

                             (1)

 

e prende il nome frequenza di campionamento (sampling frequency), misurata in Hz o in campioni/secondo. Prima dell'avvento del digitale il campionamento era ottenuto tramite filtri analogici passivi, la cui curva di risposta in frequenza approssimava con curve gaussiane lo spettro delle odierne bande, e  in cui veniva fatto passare il segnale. 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: Piano 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: Piano digitale

 

 

Il convertitore A/D è comandato da un segnale di clock (temporizzazione) alla frequenza  di campionamento. Il campionatore ideale estrae in corrispondenza di ogni impulso di clock il valore del segnale in ingresso all'istante di campionamento, che è in generale un numero reale con infinite cifre decimali. Diversamente dal campionatore ideale, il convertitore A/D rende invece una rappresentazione finita di questo numero reale (segnale numerico), e precisamente in aritmetica binaria su un numero finite di cifre (bit), variabile da 8 a 24. Il piccolo errore insito nella rappresentazione del numero reale su un numero finito di cifre rappresenta la seconda operazione del convertitore: la quantizzazione. Di fatto quindi il convertitore effettua una doppia operazione di "discretizzazione": la prima sull'asse dei tempi, dove determina gli istanti in cui si deve considerare il segnale; la seconda sull'asse delle ampiezze dove il segnale viene approssimato al "quanto" più vicino in base alla risoluzione in bit del convertitore.

I convertitori A/D sono caratterizzati da due parametri fondamentali:

·       Numero di livelli discreti con cui può essere descritta l'ampiezza del segnale.

·       Periodo di campionamento.

 

I convertitori tipici sono a 16 bit (il numero di bit utilizzato dai lettori CD) corrispondenti ad una frequenza di campionamento di 44.1 kHz, mentre il numero di bit utilizzato dalle schede audio è in genere di 20 che eleva la frequenza di campionamento a 48 kHz. I 16 bit impongono che il valore del segnale debba appartenere all'intervallo che va da -32767 a +32767. Su un simile intervallo l'errore di quantizzazione commesso dal convertitore non è trascurabile, di fatto quindi si introduce un rumore che fa dello standard audio a 16 bit uno standard di basso livello. Per questo motivo nelle applicazioni professionali e nei lettori DVD si utilizzano convertitori che hanno 24 bit di livelli possibili in ampiezza e frequenza di campionamento a 96 kHz. In questo caso l'errore  assoluto di quantizzazione è lo stesso, ma distribuito su un intervallo di possibili valori delle ampiezze maggiore, e quindi il rumore introdotto è  molto inferiore. Infatti con la risoluzione a 24 bit il rapporto fra segnale e rumore è molto elevato, pari a 196 dB.

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.

 

 

Figura 4: Segnale campionato

 

Ricapitolando 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”.

Alla fine del campionamento ho un vettore numerico che entra nel computer memorizzato in celle di memoria e che divido in blocchi di n-punti (Figura 5) dal momento che l’algoritmo che dovrò applicare agirà su un numero n di punti. Successivamente, di ogni blocco verrà calcolato lo spettro.

 

Figura 5: Vettore di dati in celle di memoria

 

 

 

 

Elaborazione con 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

 

Per analizzare un segnale audio con l’ausilio di un PC utilizzeremo un analizzatore di spettro software come SpectraRTA scaricabile facilmente da sito internet www.soundtechnology.com.

 Con SpectraRTA (Real Time Analizer) è possibile analizzare lo spettro di un suono in tempo reale poiché il programma mostra i valori in ingresso direttamente sullo schermo senza dover registrare il suono prima per elaborarlo poi. Questo applicativo permette di calcolare 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. 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

 

 

 

 

Bibliografia essenziale

 

Marco Luise, Giorgio M. Vitetta, Teoria dei segnali, McGraw-Hill 1999

 

V. Oppenheim, R. W. Schafer, Discrete-time signal processing, Prentice-Hall, 1989

 

J.S.Orfanidis, Introduction to signal processing, Prentice Hall, 1996