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
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.
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
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
).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
Figura 12: Spettro del rumore rosa in banda stretta
Figura 13: Spettro del rumore bianco
Figura 14: Spettro del rumore bianco in terzi di ottava
La dipendenza dalle frequenze della (6) è espressa dalla seguente relazione:
Figura 15: Segnale sinusoidale campionato
e quindi il livello acustico istantaneo (List) associato a questa pressione:
Figura 16: Andamento del livello acustico istantaneo in funzione del n° di campione
Figura 17: Sinusoide discontinua
Figura 18: Spettro di una sinusoide discontinua
Figura 19: Pesatura dei campioni
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
Figura 22: Finestra di Hanning applicata al segnale sinusoidale
Figura 23: Sovrapposizione di finestre
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