Sei sulla pagina 1di 35

Cancellazione eco acustico

Roberto Patrizi

Professore:
Aurelio Uncini
Roberto Patrizi
Frosinone, 2 maggio 2009
e-mail: roberto_patrizi@virgilio.it

Tesina per il corso di:


Circuiti e algoritmi per l’elaborazione dei segnali
Prof. Aurelio Uncini

Composto in LATEX
INDICE

PREFAZIONE v

1 BASI 1
1.1 ALGORITMO LMS 1
1.1.1 Modello SISO 1
1.1.2 Algoritmo aggiornamento coefficienti 2
1.2 PROBLEMA DI NON UNICITÀ 4
1.3 METODI DI DECORRELAZIONE 5
1.4 ALGORITMO IPNLMS 5

2 I M P L E M E N TA Z I O N E 9
2.1 FILTER DESIGN 9
2.1.1 Comandi comuni 10
2.2 ROOMSIM 12
2.2.1 Descrizione del toolbox 12
2.2.2 Risposte impulsive 14
2.3 PREPARAZIONE DELLA SIMULAZIONE 16
2.3.1 Algoritmo LMS 18
2.4 IMPLEMENTAZIONE IPNLMS 19
2.5 PRESTAZIONI 21
2.5.1 Troncamento della risposta impulsiva 22
2.5.2 Inseguimento 23
2.5.3 Coerenza delle sorgenti 24

BIBLIOGRAFIA 27

i
ACRONIMI

INFOCOM Dipartimento di Scienza e Tecnica dell’Informazione e del-


la Comunicazione
Dipartimento della facoltà di Ingegneria Elettronica della Sa-
pienza situato in via Eudossiana 18 (Colle Oppio), Roma.

FA Filtro Adattativo
Filtro i cui coefficienti che vengono aggiornati ad ogni campione
elaborato.

SISO Single Input Single Output


Ingresso Singolo Uscita Singola. Sistemi monodimensionali
in cui si ha un segnale di uscita ed un ingresso.

MISO Multiple Input Single Output


Ingresso Multiplo Uscita Singola. Sistema con più ingressi
ed una sola uscita.

MIMO Multiple Input Multiple Output


Ingressi Multipli Uscite Multiple. Sistemi a più dimensioni
in cui si hanno molteplici segnali di uscita e di ingresso.

LMS Least Mean Square


Media Quadratica Minima. Algoritmo autoadattativo basato
sulla minimizzazione della funzione errore quadratica.

IPNLMS Improved Proportional LMS


Algoritmo LMS Proporzionale Migliorato. Algoritmo analo-
go al LMS adattato al caso multicanale, in cui la funzione costo
viene aggiornata con un peso variabile.

ARMA Auto Regressive Moving Average


Media Mobile Autoregressiva. Filtro per generare segnali di
tipo stocastico a partire da un rumore normale opportunamente
modellato dal filtro stesso.

MSE Mean Square Error


Errore Quadratico Medio. Criterio per l’individuazione de-
terministica della media dei quadrati di un segnale di errore.

SSE Sum of Squared Error


Somma degli Errori Quadratici. Criterio per l’individuazione
stocastica della media dei quadrati di un segnale di errore.

MCAEC Multichannel Acoustic Eco Canceller


Cancellatore Acustico d’Eco Multicanale. Algoritmo per
la rimozione tramite filtro adattativo del segnale che ritorna da-
gli altoparlanti al microfono.

MATLAB © Matlab ©
Matlab © è un programma della MathWorks © Inc, 1994-2009.

iii
iv Indice

FFT Fast Fourier Transform


Trasformata di Fourier Veloce. Algoritmo efficiente per il
calcolo numerico della trasformata di Fourier.

LTI Lineari Tempo Invarianti


Classe di sistemi descritti da un’equazione differenziale lineare a
coefficienti costanti della forma (2.1), che godono delle proprietà
di linearità (la funzione e tutte le sue differenze finite figurano
solo con esponente unitario o nullo) e permanenza (tutti i coeffi-
cienti sono costanti). Nei testi in lingua inglese tale proprietà è
definita come LSI, Linear Shift-Invariant.

FIR Finite Impulse Response


Risposta Impulsiva Finita. Filtri con risposta impulsiva di lun-
ghezza finita. Sono semplici da implementare, la stabilità è
immediata se i coefficienti del filtro sono limitati.

IIR Infinite Impulse Response


Risposta Impulsiva Infinita. Filtri con risposta impulsiva infi-
nita, che presentano un meccanismo di feedback per cui l’uscita
dipende dall’uscita stessa negli istanti precedenti.

ERLE Echo Return Loss Enhancement


Perdita del Ritorno d’Eco. Indice per la misurazione dell’at-
tenuazione dell’eco acustico di un filtro adattativo. È definito
come il rapporto fra la potenza istantanea del segnale desidera-
to d[n] e la potenza istantanea del segnale di errore residuo e[n]
che si ottiene dalla cancellazione.

SNR Signal to Noise Ratio


Rapporto Segnale Rumore. Rapporto in decibel tra il segnale
utile ed il disturbo.
P R E FA Z I O N E

In questo scritto è sviluppato un Multichannel Acoustic Eco Canceller


(MCAEC) con algoritmo Improved Proportional LMS (IPNLMS), cioé un
Filtro Adattativo (FA) in grado di attenuare, ed al limite di cancellare
del tutto, il percorso di ritorno tra altoparlanti e microfoni.
É possibile eliminare dal segnale registrato dal microfono (segnale
desiderato), il segnale emesso dagli altoparlanti, ricercando la risposta
impulsiva dell’ambiente. Tramite la risposta impulsiva è possibile si-
mulare il percorso tra l’ingresso (l’altoparlante) e l’uscita (microfono)
del sistema. Sottraendo dall’uscita del microfono, il segnale ricostrui-
to elettronicamente si ha la cancellazione dell’eco acustico. Vediamo in
questo studio di approfondire il problema descritto, e di realizzare un
sistema in grado di eliminarlo.
Il lavoro è svolto passo passo, a cominciare dai casi più semplici con
l’algoritmo Least Mean Square (LMS) fino ad arrivare all’implemen-
tazione definitiva, con molteplici analisi prestazionali. Gli algoritmi
sono simulati in linguaggio Matlab; sebbene attualmente sia in fase
di studio al dipartimento Dipartimento di Scienza e Tecnica dell’Infor-
mazione e della Comunicazione (InfoCom) della Sapienza un program-
ma basato sul linguaggio C per l’elaborazione online in tempo reale
dei segnali audio, allo stato attuale dei lavori non è ancora possibile
effettuare dei test realistici.
Una delle applicazioni più diffuse dei sistemi di cancellazione del-
l’eco, è la realizzazione di sistemi di teleconferenza. Attualmente i
sistemi più sviluppati per teleconferenze sono a singolo canale: si ha
un solo microfono ed un solo altoparlante. Il limite di un sistema a
singolo canale è l’assenza della spazialità della ripresa sonora, senza
la quale, non è possibile percepire la provenienza dei suoni. Nel caso
di videoconferenza, l’unico modo per capire chi sta parlando è quello
di osservare i movimenti delle labbra e la gestualità, che non è affatto
naturale.
La maggiore naturalezza permessa da un sistema multicanale con
almeno 2 altoparlanti, consente invece la ricostruzione spaziale della
scena sonora e l’individuazione della posizione della sorgente, renden-
do la comunicazione più istintiva e quindi meno affaticante, ciò spiega
la spinta verso la realizzazione di sistemi multicanale.
Quello che si vuole ottenere è un sistema che sia utilizzabile con
microfoni fissi (per la massima naturalezza di impiego e libertà di mo-
vimenti), che sia di semplice utilizzo, che non richieda alcuna fase di
configurazione, si potrebbe dire plug & play, e che sia sufficientemente
realistico da permettere la localizzazione delle sorgenti.
In un sistema di questo tipo, l’accoppiamento acustico tra l’altopar-
lanti e microfoni causerebbe fastidiosi echi dei suoni emessi e lunghi ri-
verberi, con il ritorno dei suoni tra gli ambienti messi in comunicazione
dal sistema. Nei casi peggiori, la presenza di un percorso ciclico chiuso
nella comunicazione full-duplex, per l’instaurarsi di una controreazio-
ne positiva, potrebbe portare il sistema all’instabilità, che si manifesta
sotto forma di fastidiosi fischi che impedirebbero la comunicazione.

v
vi PREFAZIONE

Il ruolo del Multichannel Acoustic Eco Canceller, è di aprire l’anello,


bloccando i suoni che tornano dopo essere passati nell’altro ambien-
te di comunicazione. Attualmente sono diffusi sistemi Single Input
Single Output (SISO), con un solo microfono ed un solo altoparlante,
ottimizzati proprio per la cancellazione dell’eco. Un semplice filtro
LMS è in grado di soddisfare le specifiche.
In un sistema Multiple Input Multiple Output (MIMO) debbono esse-
re impiegati più altoparlanti e più microfoni, almeno 2 altoparlanti e 2
microfoni per ciascuno degli ambienti messi in contatto. Sebbene ap-
parentemente siano poco evidenti le complicazioni che incorrono nei
sistemi multicanale, queste rendono inefficaci i metodi applicabili al
caso SISO. Può accadere che canali riprodotti siano tra loro altamente
correlati, anzi, è esattamente ciò che avviene ad esempio per i segnali
di 2 microfoni in posizioni diverse nella stessa stanza con un unica
sorgente, per cui il sistema di equazioni associato al MCAEC diviene
singolare o quantomeno malposto.
Assicurare una rapida convergenze in queste condizioni richiede la
decorrelazione delle sorgenti, alterando i segnali riprodotti in qualche
modo, ad esempio con delle distorsioni non lineari, senza distrugge-
re però l’informazione che questi portano! Dalla qualità dei filtri di
decorrelazione dipende la fedeltà della percezione sonora: meno per-
cepibile è l’effetto, migliore è il filtro di decorrelazione (a parità di
decorrelazione ovviamente).
In questo testo vedremo quindi come affrontare e risolvere i pro-
blemi elencati. Nel primo capitolo saranno descritti gli algoritmi e
le problematiche annesse, in modo analitico. La bontà dei metodi di
decorrelazione è data in primo luogo dalla percezione soggettiva dei
segnali che produce, per cui si tratta di un’elemento empirico piut-
tosto che matematico del problema, la cui progettazione si avvicina
concettualmente all’arte.
Nel secondo capitolo verranno studiate le tecniche per la simula-
zione dei sistemi, che consentono un’analisi delle prestazioni degli
algoritmi. Gli algoritmi saranno implementati in Matlab, per cui si
introdurranno i concetti fondamentali del filter design toolbox.
1 BASI

In letteratura, sono molteplici gli algoritmi adattativi studiati, la cui


efficacia dipende dall’ambito di impiego.
Lo scopo di un filtro adattativo è la stima di una risposta impulsiva
reale h, ottenuta elaborando i campioni del segnale x man mano che
questi si rendono disponibili al sistema. In base all’algoritmo scelto per
questo compito, convergenza, capacità di inseguimento, complessità,
robustezza, possono essere molto differenti!
Un criterio di classificazione, è in base al tipo di segnale su cui opera-
no: esistono algoritmi deterministici ed algoritmi stocastici. L’algoritmo
LMS appartiene a questa seconda categoria. La differenza principale
tra le due classi di algoritmi è data dalla funzione costo, che nel caso
deterministico sarà del tipo Sum of Squared Error (SSE), mentre nel
caso stocastico l’errore si definisce come il valore atteso dei quadrati
della sequenza, cioè l’errore sarà del tipo Mean Square Error (MSE).

1.1 ALGORITMO LMS


Nel 1960 il prof. Bernard Widrow con il dottorando Marcian Edward -
Ted Hoff diedero vita all’algoritmo del gradiente stocastico o Least Mean
Square (LMS), uno degli algoritmi adattativi più diffusi, probabilmente
per la sua semplicità di implementazione e robustezza.
Il principio di base con il quale viene costruito il filtro, è la minimiz-
zazione dell’errore quadratico MSE: durante il percorso tra l’altoparlan-
te ed il microfono, il segnale sonoro viene riprodotto dall’altoparlante,
che introduce le prime distorsioni1 del segnale, poi sarà riflesso dalle
pareti dell’ambiente, che introducono ulteriori distorsioni, l’eco, infine
giunge al microfono che a sua volta sarà fonte di ulteriore distorsione,
sia per l’inserzione fisica del microfono stesso che altera il campo sono-
ro, sia per l’equalizzazione introdotta; in definitiva, si può considerare
una risposta impulsiva dell’ambiente, che porta dal segnale di ingres-
so, al segnale desiderato2 in uscita dal microfono. Se il filtro adattativo
riproduce esattamente la risposta impulsiva del sistema fisico, posso
creare un segnale elettronico identico al segnale desiderato, la loro diffe-
renza permette di togliere dall’uscita del microfono la parte di segnale
che proviene dagli altoparlanti.

1.1.1 Modello SISO

In un modello Single Input Single Output (SISO), ho un solo microfono


ed un solo altoparlante. Sia x [n] il segnale che pilota l’altoparlante, d[n]

1 Qui distorsioni è inteso come una qualsiasi alterazione del segnale, anche una
equalizzazione, riverbero o cammini multipli.
2 In uscita dal filtro vorrei avere lo stesso segnale che ho in uscita dal microfono, quindi
nella realizzazione del filtro il segnale di riferimento del microfono è indicato come
desiderato.

1
2 BASI

x₁ h₁
nl
w₁
y₁
e - d
min{Ĵ } S
-
y₂
x₂ w₂
nl h₂

Figura 1: Schema completo di un MCAEC. Per ciascun microfono occorre ripe-


tere gli elementi principali del filtro presentati su sfondo colorato. La
minimizzazione della funzione costo dipende dai P segnali in ingres-
so al sistema, ed agisce sui filtri adattati w. Se tali filtri rispecchiano
le risposte impulsive h dell’ambiente, i segnali y sono identici ai se-
gnali catturati dal microfono provenienti dagli altoparlanti, per cui
il segnale di errore ne sarà privo! Nell’ambiente di sinistra quindi
non ci sarà l’eco dei segnali x, ma soltanto i suoni provenienti dalla
sorgente S.

il segnale in uscita dal microfono. Stiamo considerando segnali cam-


pionati, un convertitore Digitale/Analogico a monte dell’altoparlante,
ed un convertitore Analogico/Digitale a valle del microfono completa-
no il sistema, in generale tali componenti non saranno ulteriormente
considerati poiché inessenziali ai fini della trattazione.
Il segnale desiderato si ottiene dalla relazione:

d [ n ] = h [ n ] ⊗ x [ n ] + b [ n ], (1.1)

in cui ovviamente h[n] è la risposta impulsiva del sistema, che com-


prende tutti gli elementi (lineari) che intervengono nel percorso tra
x [n] e d[n], mentre b[n] raccoglie tutti gli ulteriori segnali che non pro-
vengono dall’altoparlante, che possono essere intesi sia come rumore,
che come segnale, ad esempio una voce da trasmettere.

1.1.2 Algoritmo aggiornamento coefficienti

Gli algoritmi adattativi sono basati sulla minimizzazione di una fun-


zione costo J (w) che dipende indirettamente dal filtro adattato, tipica-
mente indicato con w. L’uscita y del filtro w quando in ingresso ho
il segnale x, dipende ovviamente dal filtro stesso. Se consideriamo
l’uscita desiderata o misurata d

d [ n ] = x [ n ] ⊗ h [ n ],

e la confrontiamo con l’uscita y stimata dal filtro adattativo w

y [ n ] = x [ n ] ⊗ w [ n ],

è possibile definire l’errore del filtro, banalmente, come la differenza


tra i due segnali

e [ n ] ≡ d [ n ] − y [ n ] = d [ n ] − x [ n ] ⊗ w [ n ], (1.2)
1.1 ALGORITMO LMS 3

in cui si è esplicitato solo il segnale stimato, poiché in generale d[n] è


un segnale noto del sistema, ad esempio il segnale proveniente da un
microfono.
L’algoritmo LMS ha il compito di stimare la risposta impulsiva h, e
di ricrearne una sua replica che comunemente è indicata con w. L’algo-
ritmo confronta il segnale desiderato d = x ⊗ h con il segnale ottenuto
dalla simulazione y = x ⊗ w, se questi segnali non sono uguali ho un
segnale di errore e[n] non nullo, dato dalla loro differenza.
Gli algoritmi adattativi si possono classificare in base alla funzio-
ne costo, che può essere di tipo deterministico, definita come Sum of
Squared Error (SSE):

J (w) ≡ ∑|e[n]|2 ,
o di tipo stocastico se la funzione costo è definita come Mean Square
Error (MSE)

J (w) ≡ ∑ E |e[n]|2 ,

(1.3)

come nel caso dell’algoritmo LMS.


Minimizzare la funzione costo, vuol dire minimizzare la distanza3
tra il segnale desiderato ed il segnale stimato. É proprio dalla minimiz-
zazione della funzione costo che si ricava l’algoritmo di aggiornamento
dei coefficienti del filtro.
L’algoritmo LMS considera, analogamente alle tecniche ls, l’errore
quadratico istantaneo e2 [n] al posto della sua aspettazione. Per ciascu-
na iterazione calcolo l’errore in un instante n fissato che chiameremo
k, per cui la (1.3) si riduce ad una semplice

Ĵ (w) = e2 [k] (1.4)

stimata, come indicato dal simbolo di accento circonflesso (ˆ) sulla


funzione J.
Ogni iterazione i coefficienti del filtro w[n] vengono aggiornati, può
essere quindi conveniente indicare il filtro come un vettore usando
una lettera in neretto, ed aggiungere un pedice che indica l’iterazione
piuttosto che il coefficiente n-esimo. Indichiamo quindi il filtro all’i-
terazione k-esima con wk , in modo da poter scrivere l’espressione di
adattamento come:
1 
wk = wk−1 + µ −∇ Ĵ (w) , (1.5)
2
che a questo punto dovrebbe risultare ovvia, in cui µ è un coefficiente
costante detto passo di aggiornamento.
Il gradiente della funzione costo si calcola sostituendo alla funzione
costo la sua definizione con la (1.2), per cui

∂e[n] ∂ d[n] − x [n] ⊗ w[n]
∇ Ĵ (w) = 2e[n] = = −2e[n] x [n], (1.6)
∂w ∂w
poi applico l’approssimazione, o meglio, lo stimatore della (1.4), calco-
lando la (1.6) all’iterazione k-esima:

∇ Ĵ (w)|n=k = −2e[k] x [n].


p
p
3 In generale posso minimizzare una qualsiasi norma p cioè || x [n]|| ≡ ∑n x p [n]. La
norma 2 coincide con la distanza euclidea.
4 BASI

Sostituendo infine nella (1.5), si ottiene l’equazione di aggiornamen-


to dei coefficienti dell’algoritmo LMS:

wk = wk−1 + µe[k] xk ,

in cui il vettore xk contiene gli ultimi punti del segnale di ingresso, in


numero pari alla lunghezza del filtro adattativo w.

1.2 PROBLEMA DI NON UNICITÀ


L’algoritmo LMS in assenza di sorgenti nella stanza adatta i coefficien-
ti del filtro affinché il segnale registrato dal microfono sia identico al
segnale ricostruito elettronicamente dal filtro. L’operazione descritta
è lineare nel dominio della frequenza, in cui l’operazione di filtraggio,
che nel tempo corrisponde ad una convoluzione, si trasforma in un
semplice prodotto. La risposta impulsiva di una sala, così come il filtri
in grado di modellarne i canali acustici, possono essere considerati co-
me sistemi Lineari Tempo Invarianti (LTI), semplificando notevolmente
la trattazione e la realizzazione di filtri adattativi.
Il segnale che posso ottenere dal filtro adattativo è una qualunque
trasformazione lineare dell’ingresso. Una sorgente nella stanza (di-
versa dall’altoparlante), in generale, non sarà affatto correlata con il
segnale emesso dall’altoparlante, il filtro adattativo quindi può simula-
re l’effetto del canale acustico sul segnale emesso dall’altoparlante, ma
non può ricavare il segnale della sorgente indipendente. Quello che si
può ottenere è la cancellazione del solo segnale riprodotto, quello che
rimane è il solo segnale della sorgente indipendente.
Se il sistema è multicanale, può accadere che i segnali in ingresso
siano correlati, ad esempio generati da un’unica sorgente xs , filtra-
ta secondo le P risposte della stanza che chiameremo g p . Questi P
segnali correlati poi, attraverso un qualsiasi canale di comunicazio-
ne, raggiungono il secondo ambiente del Multichannel Acoustic Eco
Canceller (MCAEC).
I segnali da cancellare possono essere espressi dalla seguente:

x p = g p ⊗ xs , p = 1, 2, . . . , P,

convoluzione tra la risposta impulsiva g e l’unica sorgente xs .


Studiando la matrice di autocorrelazione R xx , che sarà data da:

R xx = E{ x [k] ⊗ x [k]} = GE{ xs ⊗ xs } G T = GR xs xs G T ,

in cui G è la matrice delle risposte impulsive e R xs xs è la matrice di


autocorrelazione della sorgente, si osserva che il rango della matrice
di autocorrelazione non può essere completo, ma si ha al massimo:

Rg{ R xx } = min Rg{ G }, Rg{ R xs xs }
Ker{ R xx } = PQ − Rg{ R xx },

in cui Ker e Rg indicano, rispettivamente, il nucleo ed il rango.


Il sistema considerato quindi, avrebbe dimensione inferiore al nume-
ro delle equazioni, per cui non esiste una soluzione unica del problema,
ed il MCAEC può non convergere alla risposta impulsiva dell’ambiente.
1.3 METODI DI DECORRELAZIONE 5

In generale, più i segnali x p sono correlati, peggiore è il condiziona-


mento della matrice di autocorrelazione, quindi la convergenza dell’al-
goritmo sarà sempre più lenta o non convergerà affatto. È possibile
aggirare questo ostacolo introducendo una distorsione non lineare che
non sia percettibile, ma sufficente a ridurre la correlazione dei segnali,
è quello che vedremo nella prossima sezione.

1.3 METODI DI DECORRELAZIONE


Esistono molteplici approcci per incrementare la decorrelazione dei se-
gnali coinvolti, principalmente basati sull’introduzione di qualche tipo
di non-linearità o distorsione. Un rettificatore può essere utilizzato a
tale scopo in modo tale che la trasformazione si possa esprimere come:

x p (n) + | x p (n)|
x 0p (n) = x p (n) + α . (1.7)
2
Risultati sperimentali mostrano che la percezione sonora è debolmente percezione sonora
affetta da tali distorsioni che vengono assimilate a suoni di seconda delle distorsioni
armonica. Inoltre si hanno degli effetti di mascheramento nel parlato.
Altri approcci sfruttano una rettificazione di semi-onda graduale
che risulta più appropriata per la musica, sebbene presenti maggior
complessità computazionale.
Un altro modo per ridurre la correlazione è quello di inserire rumore
opportunamente sagomato in modo da disturbare il meno possibile.
Infine un ulteriore tecnica consiste nell’utilizzare filtri tempo varianti
in modo da variare casualmente la posizione dei poli del filtro.

1.4 ALGORITMO IPNLMS


Quando le caratteristiche del filtro da costruire sono note si possono peculiarità della
migliorare gli algoritmi esistenti. Sappiamo infatti che l’eco ha un invi- risposta impulsiva
luppo esponenziale: la maggior parte dell’energia si trova nella prima
parte che contiene le prime riflessioni o early reflections , il resto della ri-
sposta impulsiva dato dalla radiazione diffusa o late reflections spesso
contiene meno energia della prima parte, sebbene sia molto più lunga!
In generale per tutti quei filtri sparse , cioè con energia concentrata in
una porzione piccola della risposta impulsiva, è possibile scalare il fat-
tore di aggiornamento dei coefficienti in proporzione ai coefficienti del
filtro. L’algoritmo che si ottiene è l’LMS Proporzionale e Normalizzato.
Come accennato nell’introduzione, in base all’algoritmo scelto si
possono avere performance molto diverse. Considerando l’algoritmo
LMS, le sue qualità sono la semplicità e la robustezza, il suo tallone
d’Achille è la velocità di convergenza, ed anche l’inseguimento di
conseguenza non è molto rapido.
Si osserva (cfr. figura 2 nella pagina seguente) che la rapidità di importanza del passo
convergenza dipende dal passo di aggiornamento dei coefficienti µ. di aggiornamento
sulla convergenza
La figura è stata ottenuta con l’algoritmo LMS, nel § 2.3.1 ne è riportata dell’algoritmo
l’implementazione in Matlab. In ingresso è presente rumore uniforme
bianco. Il passo più piccolo si ha per µ = 1/20 del massimo valore che
consente la convergenza (1.8), si ottiene la curva in blu. L’errore in dB,
6 BASI

Disallineamento Errore ERLE


0 0 250
200
−20 −50
150
−40 −100 100
50
−60 −150
0
−80 −200 −50
0 5 10 0 5 10 0 5 10

Figura 2: Dipendenza dell’algoritmo LMS dal passo di aggiornamento µ, pari


ad 1/20 (—), 1/10 (—) ed 1/5 (—) del massimo valore µ che consente
la convergenza (1.8).

vantaggi per µ decresce lentamente. così come il disallineamento (2.3). Al contrario


crescente . . . l’Echo Return Loss Enhancement (ERLE)4 cresce sia con il tempo sia con
il passo di aggiornamento µ, proprio ad indicare il tendere dell’uscita
del filtro adattato al segnale desiderato.
. . . e svantaggi Ovviamente, mostrati gli aspetti positivi di un passo di aggiorna-
mento più ampio, ci sono ottime ragioni per operare con un coefficien-
te µ molto piccolo, contrariamente a quanto appena detto, e sono:
• La convergenza dell’algoritmo LMS è dimostrata per processi gaus-
siani, stazionari, a media nulla e statisticamente indipendenti5 ! Si
ottiene la condizione di convergenza:
2
µ<  ; (1.8)
L E x2 [n]

• un coefficiente più elevato comporta un errore a regime più ele-


vato, in particolare l’errore MSE a regime sarà:
µ 2 2
Jr = Lσ σ , (1.9)
2 x b
l’errore dipende quindi dalle potenze dei segnali coinvolti nell’al-
goritmo, x2 e b2 .
soluzione bilanciata: Il primo accorgimento che porta ad un miglioramento della velocità
passo di di convergenza e riduce l’errore a regime, è di variare il passo di aggior-
aggiornamento µ
variabile
namento µ per ciascuna iterazione. Nelle prime iterazioni un passo di
aggiornamento più rapido velocizza la convergenza, successivamente
un passo più stretto permette di affinare la soluzione. L’algoritmo che
si ottiene in questo modo è detto LMS Normalizzato.
Perché allora non cambiare il coefficiente di aggiornamento, non so-
lo per ciascuna iterazione, ma anche per ciascun elemento del filtro
adattativo all’istante corrente? L’idea, vincente, ha originato l’algo-
passo di ritmo Proporzionale: per elementi di ampiezza elevata è possibile
aggiornamento adattare con un passo elevato, per gli elementi più piccoli del filtro
proporzionale ai
coefficienti del filtro
sarà più efficace un coefficiente di aggiornamento ad essi proporzionato.
L’algoritmo proporzionale converge bene quando la risposta è sparsa
o diffusa, cioè quando c’è molta disparità tra le ampiezze del filtro, co-
me avviene, ad esempio, tra la parte iniziale e finale di una risposta
impulsiva di una stanza.
4 La definizione (2.4) dell’Echo Return Loss Enhancement (ERLE) si trova al § 2.5 nella
pagina 21.
5 Le ipotesi elencate semplificano la dimostrazione, ma non sono del tutto vincolanti.
1.4 ALGORITMO IPNLMS 7

Tabella 1: Specifica algoritmo IPNLMS

Inizializzazione: h = 0| L × P
Parametri: 0<α≤1
−1 ≤ β ≤ −1
1−β
0 < δ  σs2
2L
ε>0
Errore: e(k ) = d − ∑ p w Tp (k − 1) x p
1−β |w p (k)|
Aggiornamento: g p (k) = + (1 + β )
2PL 2kw p (k )k1 + ε
α
µ(k) =
∑ p ∑n x2p (k) g p (k) + δ
w p ( k ) = w p ( k − 1) + µ ( k ) g p ( k ) x p e ( k )

Quando la risposta non è sparsa, la proporzionalità del passo di ag-


giornamento deteriora le caratteristiche del filtro adattato, ottenendo
un comportamento peggiore rispetto ad un filtro LMS normalizzato.
L’approccio che permette di superare queste limitazioni si ha usando
dei coefficienti che siano in parte pesati, ma che conservano hanno
una parte fissa. L’algoritmo ottenuto con questa miglioria (Improved)
prende il nome di Improved Proportional LMS (IPNLMS), ed attualmen-
te è l’algoritmo derivato dalla famiglia di filtri LMS che converge più
rapidamente e segue più accuratamente le variazioni della risposta
impulsiva, comunque sia fatta: omogenea o sparsa.
I parametri elencati, nell’ordine sono:

α Passo base. È il passo di aggiornamento dell’algoritmo LMS, punto


di partenza per trovare il passo di aggiornamento dell’IPNLMS.

β Parametro di stabilizzazione. Controlla la proporzionalità dell’al-


goritmo, rendendo l’algoritmo più o meno proporzionale. Per
β = 1 si annulla la parte costante del vettore di proporzionalità
g, rimane l’algoritmo LMS Normalizzato e Proporzionale, ma
non Improved. Tipicamente β ∈ [−0.5, 0].

δ Parametro di regolarizzazione. Corregge la parte costante del passo


di aggiornamento Normalizzato µ.

e Soglia. È una costante molto piccola che serve ad evitare divisioni


per zero nell’implementazione dell’algoritmo.
2 I M P L E M E N TA Z I O N E

In questa seconda parte andiamo ad analizzare le soluzioni adotta-


te per l’implementazione dell’algoritmo, in Matlab. Un toolbox per
il filtraggio adattativo è già presente in Matlab, e fa parte dal pac-
chetto filterdesign. Per prima cosa daremo quindi uno sguardo al
toolbox, poi analizzaremo il toolbox roomsim per la simulazione del-
le risposte impulsive, infine andremo ad analizzare più in dettaglio
l’implementazione dei nuovi algoritmi.

2.1 FILTER DESIGN


Come già accennato nell’introduzione, in Matlab (Versione 7.5) è pre-
sente un toolbox (in versione 4.2) chiamato filterdesign, per l’imple-
mentazione di filtri deterministici ed adattativi. L’algoritmo LMS con
la sua variante normalizzata sono pronti per l’uso, mancano però le
varianti più complesse fino alla IPNLMS, che perciò dovranno essere
implementate manualmente.
Il toolbox esistente è basato sul metodo di programmazione ad ogget-
ti, che permette di costruire i filtri adattativi come oggetti, ossia come
classe di dati strutturati che contengono tutte le informazioni relative al
filtro. Per ciascuna classe esiste uno specifico metodo che implementa
in modo opportuno, dipendente dalla classe, alcune elaborazioni per
l’oggetto considerato.
Chiariamo con un esempio. Supponiamo di essere interessati al fil-
traggio di un segnale. Per fare questa operazione esiste il comando
filter. Nel caso in cui il filtro sia statico, il metodo della convoluzione,
come noto, risolve il problema. Lo stesso comando filter può ope-
rare su una classe diversa, ad esempio se il filtro è di tipo adattativo
con algoritmo LMS, le operazioni richieste sono quelle elencate nel li-
stato 2.2 nella pagina 18. Nel gergo della programmazione ad oggetti
si dice che si ha un overloading dell’operatore, cioè si hanno diversi
metodi selezionati dal tipo di classe con la quale si sta operando.
In Matlab, il meccanismo di selezione del metodo appropriato, in
base alla classe, avviene in modo automatico, rispettando la semplice
regola della struttura delle directory: gli operatori per una data classe
devono trovarsi all’interno di una cartella con il nome formato dal
carattere @ seguito dal nome della classe (@nomeclasse).
È possibile anche annidare più classi, ad esempio per i filtri adat-
tativi esiste la classe genitore adaptfilt i cui metodi si trovano nella
cartella /@adaptfilt,1 al cui interno sono annidate le classi specifiche
a ciascun algoritmo. Quindi i file che implementano il filtro adattativo
con algoritmo LMS vanno collocati nella cartella /@adaptfilt/@LMS. Per
espandere il toolbox aggiungendo anche l’algoritmo IPNLMS i relativi

1 Tale cartella sarà posizionata nella sotto cartella /toolbox/filterdesign che solitamente
si trova nel percorso di installazione di Matlab.

9
10 IMPLEMENTAZIONE

file di implementazione andranno posti in una cartella /@adaptfilt/


@IPNLMS.
Tuttavia, in questo testo non si andrà ad espandere il toolbox di Ma-
tlab come descritto, ma ci è sembrato opportuno dare dei cenni di ba-
se per capire da subito come partire con il piede giusto per cominciare
a lavorare e per capire il lavoro svolto.

2.1.1 Comandi comuni


Sempre a titolo informativo, una breve descrizione dei comandi più
comuni permette di capire da subito gli algoritmi proposti, maggiori
informazioni ovviamente sono disponibili sulla guida di Matlab

adaptfilt.lms
Permette di generare dei filtri adattativi LMS o di altri tipi, specifican-
done il nome (scelto tra quelli disponibili per default) dopo il punto.
La sintassi è:
1 ha=adaptfilt.lms(L,stepsize,leakage,coeffs,states)

in cui i parametri sono:

L Lunghezza del filtro adattativo. È l’unico parametro che deve essere


impostato

STEPSIZE è il passo di adattamento µ, se omesso la funzione calcola


un valore opportuno.

LEAKAGE Ë un fattore di perdita compreso in [0, 1], agisce moltiplican-


do il filtro adattato corrente in ciascuna iterazione. Per default è
1, cioè non si ha leakage.

COEFFS Condizioni iniziali dei coefficienti del filtro. Per default è 0.

STATES Condizioni iniziali stati del filtro. Nulli per default.

Eseguendo il comando specificando la sola lunghezza L pari a 1024,


nel prompt di Matlab sono mostrate alcune delle informazioni carat-
teristiche per l’oggetto adaptfilt.lms appena creato:
1 Algorithm: ’Direct-Form FIR LMS Adaptive Filter’
2 FilterLength: 1024
3 StepSize: 0.1
4 Leakage: 1
5 PersistentMemory: false

tra le strutture di dati non mostrate, l’elemento più importante proba-


bilmente è coefficients, che contiene tutti i punti del filtro calcolato,
accessibili con il comando ha.coefficients.

filter
L’operazione di filtraggio avviene tramite il comando filter, che può
accettare semplici vettori o oggetti più complessi come il filtro adatta-
tivo creato precedentemente. Se ho un semplice vettore posso scrivere
1 y = filter(b,a,x);
2.1 FILTER DESIGN 11

per calcolare il filtro Infinite Impulse Response (IIR) con l’equazione

N M
∑ ak y[n − k ] = ∑ bk x [ n − k ] . (2.1)
k =0 k =0

Se ho un filtro adattativo invece, posso scrivere


1 [y,e] = filter(ha,x,d);

per calcolare sia l’uscita del filtro adattativo per l’ingresso x in riferi-
mento al segnale desiderato d, che l’errore e tra il segnale generato dal
filtro y ed il segnale desiderato d.

xcorr
Calcola la crosscorrelazione tra dei vettori x, y, o l’autocorrelazione se
un solo vettore viene passato alla funzione. La sintassi è
1 c = xcorr(x,y); % Correlazione
2 c = xcorr(x); % Autocorrelazione

mfilt
Crea un filtro multirate, permettendo di scegliere tra vari metodi, tra
cui cascata di filtri, interpolatori e decimatori. In particolare un sem-
plice decimatore Finite Impulse Response (FIR) si ottiene con la sintassi
1 hd = mfilt.firdecim(m)

con m fattore di decimazione.


Anche in questo caso, dopo aver creato il filtro, la decimazione vera
e propria si ottiene filtrando il segnale da decimare con l’istruzione
y = filter(hd,x).

norm
Una semplice istruzione per calcolare la norma di un vettore x modulo
p,
è
1 normap = norm(x,p);

File audio
Per operare con i file audio sono disponibili i comandi
1 x = wavread(file);

che assegna al vettore x il contenuto del file indicato dal vettore di tipo
stringa file, eventualmente passato come testo tra singoli apici e non
come variabile.
Il comando inverso, per salvare un vettore elaborato come file .wav è
1 wavwrite(x,path)

Per ascoltare un vettore è necessario per prima cosa creare un ogget-


to player
1 plx = audioplayer(x,fs)
12 IMPLEMENTAZIONE

Tabella 2: Principali cartelle del toolbox roomsim

Directory Contenuto
\cipic Risposte impulsive del capo
\Excel_setups File di impostazione in formato excel
\text_setups File di impostazione in formato testo
\sensor\types Risposte direzionali dei microfoni
\Impulse_response Risposte impulsive calcolate da roomsim

che necessita anche della frequenza di campionamento oltre che del


segnale, poi è possibile ascoltare l’oggetto player creato con l’istruzione
1 play(plx)

2.2 ROOMSIM
Il toolbox roomsim2 è un insieme di programmi Matlab per calcolare
la risposta impulsiva di un ambiente.
Non appena viene installato il toolbox, occorre aggiornare le directo-
ry Matlab, successivamente sarà possibile avviare l’interfaccia grafica
mostrata in figura 3a nella pagina successiva, digitando al prompt di
Matlab:
1 roomsim

purché sia impostata come directory di lavoro la directory radice di


roomsim.

2.2.1 Descrizione del toolbox


Le risposte impulsive si possono calcolare selezionando il pulsante Set
-up and Run the Room simulation. Nel menù successivo è possibile spe-
cificare il modo in cui sono passati a roomsim i parametri di input. Si è
scelto di impostare la simulazione tramite fogli excel, per cui occorre
selezioniare il pulsante Read from an Excel spreadsheet, come mostrato
in figura 3b a fronte.
Prima di proseguire, selezionando l’opportuno file excel, occorre
spendere alcune parole sui file che vengono copiati da roomsim. Al-
cune delle directory generate durante l’installazione di roomsim sono
elencate nella tabella 2. In particolare la cartella contenente i file excel
permette di impostare velocemente la simulazione, in base ad una serie
di parametri. Nella stessa cartella è disponibile il file absorption_table.
xls che mostra i valori tipici dei coefficienti di assorbimento in base al
materiale delle pareti.
Non appena si seleziona il file di setup ha inizio la simulazione, che
dopo pochi istanti mostra i grafici:

1. Reverberation time vs frequency

2. Absorption coefficients vs frequency


2 É possibile scaricare roomsim sul sito Matlab all’indirizzo http://www.mathworks.com/
matlabcentral/fileexchange/5184.
2.2 ROOMSIM 13

(a) (b)

Figura 3: Menù principali del programma roomsim

(a) (b)

Figura 4: Menù per l’impostazione delle unità di ascisse ed ordinate del


grafico della risposta impulsiva roomsim

3. Room receiver & source geometry

Per quanto riguarda la risposta impulsiva, mostrata nel 4° grafico, ci


sono ben 2 successivi menù (fig. 4) che permettono la personalizzazio-
ne delle ascisse ed ordinate.
Il 5° grafico rappresenta la Fast Fourier Transform (FFT) della ri-
sposta impulsiva, ma prima un’ulteriore finestra di dialogo chiede di
selezionare la lunghezza dell’algoritmo FFT.
La risposta impulsiva è calcolata con il metodo delle immagini, pro-
posto da Allen a Berkley. La soluzione dell’equazione delle onde vie-
ne ricavata in modo approssimato con i principi dell’ottica geometrica:
una parete piatta e rigida riflette il suono, che si propaga in linea retta.
Ogni volta che il suono viene riflesso, fino ad arrivare al microfono, è
possibile tracciare una linea retta fino ad una sorgente immagine posta
esternamente alla stanza. Il problema della ricerca degli infiniti per-
corsi dalla sorgente al microfono, può essere rovesciato, considerando
un solo percorso rettilineo ma moltiplicando il numero di sorgenti. Le
sorgenti si ottengono in modo molto semplice specchiando la stanza
su ciascuna parete, e reiterando il procedimento fino ad allontanarsi
oltre una certa distanza.
Il 6° grafico di roomsim mostra proprio le sorgenti immagini.3 Può

3 Sia il grafico delle sorgenti immagini che il successivo, possono essere omessi tramite
14 IMPLEMENTAZIONE

h11, ξ=0.53117 h12, ξ=0.50478


0.15

0.1

0.05

-0.05

h , ξ=0.51977 h , ξ=0.57511
21 22
0.15

0.1

0.05

-0.05
0 0.1 0.2 0.3 0 0.1 0.2 0.3

Figura 5: I grafici delle 4 risposte impulsive calcolate

essere difficile da decifrare, specialmente a prima vista, dato l’eleva-


to numero di punti coinvolti nel calcolo, ma fornisce a colpo d’occhio
un’idea dell’approssimazione applicata nel calcolo della risposta im-
pulsiva. Prima del grafico, come sempre, alcune finestre di dialogo
permettono di impostare alcuni parametri di visualizzazione.
Occorre tenere presente che il sistema delle immagini approssima la
risposta impulsiva, ma soffre di alcune limitazioni. In particolare in
ambito audio, le lunghezze d’onda sono spesso spesso elevate, soprat-
tutto alle basse frequenze com’è ovvio. Quando le lunghezze d’onda
sono più elevate delle dimensioni della parete subentrano fenomeni
di diffusione sonora o scattering, che vengono ignorati dall’algoritmo,
rendendo i risultati meno accurati.
Al termine delle elaborazioni, roomsim chiede di salvare i dati calco-
lati come unico file in formato .mat infine torna al menù iniziale. Nella
directory impulse response invece è possibile trovare il file della sola
risposta impulsiva, più comodo da utilizzare nelle simulazioni.
La risposta impulsiva di un ambiente in generale presenta delle ca-
ratteristiche ricorrenti, come un inviluppo esponenziale, picchi distinti
nella parte iniziale ed una coda molto lunga acusticamente più omoge-
nea. La lunghezza della coda necessita un’approssimazione in fase di
calcolo, difficilmente si potranno gestire tutti i campioni della risposta
reale, sarà necessario troncare la risposta stimata quando l’ampiezza
scende al di sotto di un certo valore, che per roomsim è pari a −45 dB.
L’approssimazione commessa dovrebbe essere accettabile, cioè tale da
non introdurre errori elevati!

2.2.2 Risposte impulsive


Se consideriamo 2 sorgenti e 2 microfoni, le possibili risposte impul-
sive sono 4. Consideriamo quindi una stanza con dimensioni di 5.10
× 4.25 × 3.4 m. La maggior parte dei parametri sono comuni a tutte

opportune impostazioni del file excel di setup, tuttavia sono fornite in questa parte
alcune informazioni di interesse.
2.2 ROOMSIM 15

Tabella 3: Parametri generali di impostazione del toolbox roomsim

Valore Nome Descrizione


32 000.00 Fs Frequenza di campionamento
40.00 humidity Percentuale di umidità relativa
20.00 TEMP Temperatura in °C
−1 order Limite massimo di riflessioni (automatico)
8192 H_length Lunghezza risposta impulsiva (4 × 2048)
H_11 H_filename Nome del file della risposta impulsiva

Schema stanza
y

R₂ h₁₂
2 S₁
R₁ h₁₁
h₂₁ h₂₂
1
S₂

0
0 1 2 3 4 5 x

Figura 6: Pianta dell’ambiente simulato, per il calcolo delle risposte impulsive.


Con S sono indicate le sorgenti, con R i sensori

le simulazioni, In particolare sono stati applicati i parametri elencati


nella tabella 3.
La frequenza di lavoro adottata, adeguata all’elaborazione vocale
che ha una banda più stretta della musica, è di 8 KHz, ma roomsim ri-
chiede un numero maggiore di punti per poter calcolare la risposta
impulsiva. La simulazione avviene quindi a 32 KHz, frequenza qua-
drupla rispetto alla frequenza operativa, per decimare poi i campioni di
un fattore 4.
I coefficienti di riflessione sono gli stessi del file setup_6_surfaces
fornito con roomsim. Le simulazioni sono state effettuate con un solo
sensore di tipo omnidirezionale, soltanto la posizione delle sorgenti
e dei sensori cambiano. Con 4 simulazioni sono state ottenute le 4
risposte impulsive h pq di figura 5 a fronte tra la sorgente p-esima ed
il sensore q-esimo, come riportato nella figura 6. I dati dei sensori e
delle sorgenti sono indicati nella tabella 4 nella pagina seguente.

Risposta impulsiva sparsa

L’ambiente simulato è molto riverberante, le risposte impulsive infatti


non sono molto sparse, al contrario, si presentano dense. Compreso il
concetto intuitivo di distribuzione sparsa, proviamo darne una defini-
zione formale che sia in grado di associare un numero al segnale che
quantifichi il fenomeno. Tale definizione dovrebbe essere:
16 IMPLEMENTAZIONE

Tabella 4: Specifica dei parametri delle 4 simulazioni

Sensori Microfoni
1 2 1 2
x 1 1 4 3
y 2 2.25 2 1
z 1.2 1.2 1.2 1.2

• invariante rispetto al prodotto per una costante non nulla;

• indipendente dall’ordine dei coefficienti della risposta impulsiva


e dipendente dalla loro ampiezza relativa;

• limitata, l’indice di densità o diffusione dovrebbe essere un nu-


mero compreso in un intervallo finito.

Per rispettare le linee di principio elencate, è stata proposta la se-


guente definizione dell’indice di densità,

k h k1
 
L
ξ (h) ≡ √ 1− √ , (2.2)
L− L L k h k2

che gode proprio delle proprietà descritte, in particolare in formule

0 ≤ ξh ≤ 1,
∀ a 6= 0, ξ ( ah) = ξ (h).

L’estremo superiore si ha per la funzione di dirac che è la distribu-


zione sparsa per eccellenza, quindi ξ (δ) = 1, al contrario la densità di
una distribuzione uniforme di infiniti elementi identici è indicata con
ξ (u) = 0.
La resa acustica delle risposte impulsive presentate in figura 5 nella
pagina 14 è piuttosto riverberante, indice di densità elevata di una
coda che decade lentamente. L’indice di densità per queste risposte è
indicato sopra ciascuna di esse, ed è poco al di sopra di 0.5, con lievi
differenze. La risposta più densa è la h12 , mentre la risposta tipicamente
utilizzata quando non diversamente specificato è la h11 .
Un’ulteriore risposta impulsiva è stata calcolata per ottenere un ri-
sultato con un indice ξ ancora maggiore. Per questo, è stata fatta
una simulazione tra la sorgente 2 ed il ricevitore 1 cambiando sola-
mente i coefficienti di assorbimento dell’ambiente. Per le pareti so-
no stati usati i coefficienti di assorbimento medi delle mattonelle, pa-
vimento e soffitto sono stati considerati in legno. I coefficienti so-
no elencati nel file absorption_table, rispettivamente con il nome
di acoustic_tile_average e platform_floor_wooden. Tali valori so-
no riportati nella tabella 5 a fronte, mentre il grafico della risposta
impulsiva è mostrato in figura 7.

2.3 PREPARAZIONE DELLA SIMULAZIONE


Per preparare la simulazione occorre il segnale proveniente da uno dei
microfoni. Una prima simulazione con un semplice algoritmo LMS
2.3 PREPARAZIONE DELLA SIMULAZIONE 17

Risposta impulsiva, ξ=0.632


0.1

0.08

0.06

0.04

0.02

-0.02

-0.04
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35

Figura 7: Risposta impulsiva con un coefficiente di densità più elevato.

Tabella 5: Coefficienti di assorbimento usati per la simulazione della risposta


impulsiva mostrata in figura 7

frequenza (Hz) 125 250 500 1000 2000 4000


piastrelle 0.10 0.30 0.80 0.85 0.75 0.65
legno 0.40 0.30 0.20 0.20 0.15 0.10

può servire per capire se la simulazione è stata impostata correttamen-


te.
Sono stati presi 2 file .wav a 8 KHz, il primo di una voce maschile
(malespeech.wav), il secondo una voce femminile (femalespeech.wav). La
voce femminile coincide con la sorgente 1 e si suppone sia originata da
un altoparlante, la voce maschile è posta nella sorgente 2, entrambe in
riferimento allo schema in figura 6 nella pagina 15. Ciò è ottenuto in
pratica associando le opportune risposte impulsive! In questo modo è
stato ottenuto un segnale che simula il suono catturato da un ipotetico
microfono posto nella posizione R1, salvato nel file micrec.wav.
1 % Carico le risposte impulsive (e la frequenza di campionamento Fs)
2 load([path,’\Matlab\ImpulseResponse\H_11_S1’]);
3 h11=data;
4 load([path,’\Matlab\ImpulseResponse\H_21_S1’]);
5 h21=data; clear data;
6 % Decimo le risposte impulsive di 4 volte, da 32KHz a 8KHz
7 hm = mfilt.firdecim(4); % Filtro di decimazione di un fattore 4,
8 h11 = filter(hm,h11); % Risposta decimata
9 h21 = filter(hm,h21);
10 Fs=Fs /4; clear hm; % Aggiorno Fs e cancello hm
11

12 x = wavread([path,’\Matlab\Sound\femalespeech’]); % Segnale speaker


13 b = wavread([path,’\Matlab\Sound\malespeech’]); % Segnale oratore
14 x(10*Fs +1:length(x))=[]; % Tronco i segnali dopo 10 secondi
15 b(10*Fs +1:length(b))=[];
16 d= conv(x,h11); % Segnale x con eco
17 b= conv(b,h21);
18 d= d+b; d=d./max(d); % Segnale microfono normalizato
18 IMPLEMENTAZIONE

19

20 %wavwrite(d,[path,’\Matlab\Sound\micrec’])

Listato 2.1: Comandi Matlab per generare il segnale registrato del microfono.

Il codice è mostrato nel listato 2.1, ci sono poche cose da aggiungere:


• il comando load carica 2 variabili dette data e Fs, rispettivamente
la risposta impulsiva del filtro e la frequenza di campionamento;
• il segnale d catturato dal microfono è dato dalla somma dei 2
ingressi filtrati ciascuno secondo il proprio percorso. Il segnale x
dell’altoparlante non viene sovrascritto al contrario del segnale b
che corrisponde alla voce maschile. Entrambi sono troncati dopo
10 s, in questo modo è possibile sommarli per calcolare l’uscita
del microfono, che è stata normalizzata tra −1 e 1.

2.3.1 Algoritmo LMS


Se l’algoritmo Least Mean Square (LMS) funziona, dovrebbe essere in
grado di di ricostruire la risposta impulsiva h11 confrontando il segna-
le x ed il segnale ricevuto dal microfono. Il segnale y mi aspetto che
vada a coincidere con il segnale ricevuto dal microfono se x fosse l’u-
nica sorgente nella stanza. L’errore, vale a dire il segnale ricevuto dal
microfono meno la parte relativa ad x, dovrebbe essere il solo segnale
proveniente dalla sorgente 2, cioè la sola voce maschile.
1 for n=1:niter,
2 X(2:L) = X(1:L-1); % parte di x traslata ed in ordine inverso
3 X(1) = x(n); % aggiungo il campione corrente
4 y(n) = W*X; % calcola ed assegna l’uscita corrente
5 e(n) = d(n) - y(n); % calcola l’errore corrente
6 W = W + mu*e(n)*X’; % aggiorna i coefficienti del filtro
7 misa(n) = 20* log10(norm( (h(1:L)-W’),2 ) ./ norm(h(1:L),2));
8 end

Listato 2.2: Implementazione in Matlab dell’algoritmo LMS

Dall’algoritmo 2.2 si ottiene proprio, ben distinguibile, la voce ma-


schile, con un lieve rumore di fondo, appena percepibile, dell’altra
voce. Il principale problema è la bassa velocità di convergenza, per cui
per ottenere il file malespeech_SISO_LMS-2nd_iter sono state necessarie
2 iterazioni, la prima permette di calcolare i coefficienti dell’algoritmo,
la seconda permette di ottenere un output pulito.
L’algoritmo necessita di essere inizializzato, vanno preallocati i vet-
tori coinvolti nel ciclo principale, e devono essere calcolati i parametri
necessari all’esecuzione. L’inizializzazione avviene tramite il codice:
1 % INIZIALIZZAZIONE dei coefficienti del filtro LMS
2

3 L=2048; % Lunghezza FA
4 Sx=size(x);
5 niter = max(Sx); % numero di iterazioni
6 y = zeros(niter,1); % creo un vettore di uscita di elem nulli
7 e = y; % creo il vettore errore di elem nulli
8 X = zeros(L,P); % L elem di x usati in ogni iterazione
9 clear Sx;
10

11 W = X’; % inizializzo il filtro adattativo W


2.4 IMPLEMENTAZIONE IPNLMS 19

12 mu=2/(L * max(var(x)) )/10;


13 misa=zeros(L,P);

Listato 2.3: Implementazione in Matlab dell’algoritmo LMS

Per l’elaborazione principale dell’algoritmo, viene usato un vettore


X(n) che contiene gli ultimi L punti di x, in ordine decrescente. Il 1°
elemento infatti, contiene il campione corrente, col crescere dell’indice
n si hanno i capioni precedenti. In questo modo, il prodotto riga × co-
lonna (linea 16) corrisponde al calcolo della convoluzione per il solo
punto corrente.

2.4 IMPLEMENTAZIONE IPNLMS


L’algoritmo IPNLMS è stato implementato considerando il caso più rea-
listico di P ingressi ed una sola uscita, lo stesso algoritmo riassunto
nella tabella 1 nella pagina 7. I nomi di alcuni parametri sono stati
cambiati per adattarli a Matlab, il codice risultante è nel listato 2.4.
1 for n=1:niter,
2 X(2:L,:) = X(1:L-1,:);% parte di x traslata ed in ordine inverso
3 X(1,:) = x(n,:); % aggiungo il campione corrente
4 X2 = X.^2; % valore quadratico dei segnali
5 for m=1:P,
6 g(m,:)=g0+((1+b)*abs(W(m,:)))/(2*norm(W(m,:),1)+t);%vett scal
7 y(n)=y(n)+W(m,:)*X(:,m); % uscita
8 mu = alp / ( (g(m,:)*X2(:,m)) +delta);% cost d’aggiornamento
9 end
10 e(n) = d(n) - y(n); % errore
11 for m=1:P,
12 W(m,:)=W(m,:)+mu*e(n)* g(m,:).*(X(:,m))’; % aggiorna i coeff
13 misa(n,m) = 20* log10(...
14 norm( (h(1:L,m)- (W(m,:))’ ) ,2 ) ./ norm(h(1:L,m),2) ...
15 );
16 end
17 end
18 beep

Listato 2.4: Implementazione in Matlab dell’algoritmo IPNLMS

Gli ultimi L campioni del vettore x sono memorizzati nella matri-


ce X, in cui ciascuna colonna corrisponde ad un segnale in ingresso
differente. Il prodotto tra il segnale ed il relativo filtro adattato viene
effettuato con un ciclo interno, per ciascun ingresso.
Anche in questo caso l’algoritmo deve essere inizializzato, i parame-
tri da impostare sono molti di più, il codice che svolge questo compito
è il seguente:
1 niter = max(Sx); % numero di iterazioni
2 clear Sx;
3 y = zeros(niter,1); % creo un vettore di uscita di elem nulli
4 X = zeros(L,P); % L elem di x usati in ogni iterazione
5 e = y; % creo il vettore errore di elem nulli
6 W = X’; % inizializzo il filtro adattativo W
7

8 % Preallocazione variabili
9 mu = e;
10 misa = zeros(L,P);
20 IMPLEMENTAZIONE

ERLE
60

50

40

30

(dB)
20

10

−10
0 1 2 3 4 5
tempo(sec)

Figura 8: Prestazioni dell’IPNLMS al variare di β e della risposta impulsiva. In


particolare beta = −0.5 per le curve in blu (—) e verde (—), le altre
due curve si ottengono per β = 0.5. Le curve blu (—) e rossa (—)
approssimano la risposta impulsiva h12 , per la quale ξ (h12 ) = 0.502,
le curve verde (—) e magenta (—) sono calcolate con hs , ξ (hs ) =
0.632

11 g = zeros(P,L);
12

13 % Parametri specifici IPNLMS


14 t = 0.001; %t = 5 * eps; % soglia (treshold), evita divisioni per 0
15 alp = 0.3; %
16 b = -0.5; % parametro di stabilizzazione
17 delta0 = 10 * mean((var(x)))^2;
18 delta = delta0*(1-b)/(2*L); % parametro regolarizzazione

Listato 2.5: Implementazione in Matlab dell’algoritmo IPNLMS

Le lettere greche sono sostituite dalle equivalenti lettere romane,


tranne δ che è chiamato delta, poiché d rappresenta il segnale desi-
derato.

Confronto con gli algoritmi più semplici


Si è discusso nel § 1.4 nella pagina 5 su come l’algoritmo IPNLMS
costituisca un miglioramento rispetto alle altre varianti dell’LMS.
Consideriamo quindi rumore bianco uniforme in ingresso del filtro
adattativo, ed andiamo a vedere l’andamento temporale dell’ERLE4 nei
primi 5 secondi, nel caso in cui la risposta impulsiva da approssima-
re sia più o meno sparsa. Consideriamo in primo luogo la risposta
impulsiva h12 mostrata in figura 5 nella pagina 14, piuttosto densa
poiché l’indice di dispersione ξ (h12 ) ≈ 0.502. I parametri tipicamente
utilizzati sono:

• α = 0.3;

• β = −0.5;
4 Per la definizione dell’ERLE si veda il § 2.5 nella pagina successiva
2.5 PRESTAZIONI 21

MISA
10

−10

−20
(dB)

−30

−40

−50

−60
0 1 2 3 4 5
tempo(sec)

Figura 9: Disallineamento. Stesso test della figura 8 ma con misura del


disallineamento invece dell’ERLE

• e = 0.001;

• δ = 10σx2 .

Per β = −0.5, si ha un buon compromesso tra proporzionalità e pas-


so costante, mentre valori di β più elevati rendono l’algoritmo sempre
più proporzionale. Per β = 0.5 l’IPNLMS si può considerare esclusiva-
mente proporzionale, perdendo di fatto la migliorata capacità di conver-
genza per risposte non sparse. In definitiva per β = 0.5 e per risposte
dense l’algoritmo dovrebbe convergere più lentamente.
In figura 8 sono riportati i valori dell’ERLE ottenuti in simulazione, i
parametri per ciascuna curva sono i seguenti:

— Parametri standard. L’algoritmo converge rapidamente anche per


risposte dense;

— β = 0.5. Approssimazione dell’algoritmo PNLMS non migliorato.


L”algoritmo non si comporta bene con le risposte dense, infatti è
il più lento tra gli algoritmi presentati;

— Risposta sparsa con parametri standard. Gli algoritmi convergono


più rapidamente sulle risposte sparse, in particolare l’IPNLMS si
dimostra particolarmente efficiente, ho la risposta migliore;

— Risposta sparsa con β = 0.5. Anche in questo caso le prestazioni


sono peggiori dell’IPNLMS, ma migliori del caso precedente.

Come si osserva le prestazioni migliori si hanno per risposte sparse, in


generale l’algoritmo IPNLMS converge più rapidamente.

2.5 PRESTAZIONI
Per finire vediamo come si comportano gli algoritmi presentati, quali
sono cioè le prestazioni.
22 IMPLEMENTAZIONE

ERLE MISA
50 10

40 0

30 −10

20 −20

(dB)

(dB)
10 −30

0 −40

−10 −50
0 2 4 0 2 4
tempo(sec) tempo(sec)

Figura 10: Effetto del troncamento della risposta impulsiva sulle capacità di
adattamento del filtro.

Una possibile misura della bontà dell’algoritmo si ottiene semplice-


mente dalla funzione errore: esprimendone il valore in dB è possibile
apprezzarne la convergenza anche quando scende al di sotto di un
millesimo del valore iniziale.
Gli algoritmi adattativi, solitamente devono trovare in qualche mo-
do una risposta impulsiva di un sistema, cercando di ricavarne l’an-
damento, con la migliore accuratezza possibile, nel più breve tempo
possibile. Una stima della bontà di un filtro adattativo si può quindi
ottenere dal confronto della risposta impulsiva stimata con la risposta
impulsiva reale, solitamente normalizzato rispetto alla risposta impul-
siva ed espresso in dB. Quello che si ottiene è il disalineamento che in
formule si scrive
k h − W k2
∆h ≡ 20 log10 (2.3)
k h k2

Un parametro specifico per la cancellazione dell’eco, cioè per i Mul-


tichannel Acoustic Eco Canceller (MCAEC) si può definire considerando
il segnale desiderato e l’errore, in particolare dal rapporto delle loro
potenze in dB,

Pd Ed2 [n]
η ≡ 10 log10 = 10 log10 2 , (2.4)
Pe Ee [n]

si ottiene l’Echo Return Loss Enhancement (ERLE). Si può considerare


l’ERLE come l’analogo del rapporto segnale rumore (Signal to Noise
Ratio, SNR). Rispetto al disallineamento, l’ERLE si occupa dell’uscita del
filtro, piuttosto che dell’ingresso, fornice quindi una stima più accurata
della resa del filtro.

2.5.1 Troncamento della risposta impulsiva


Le risposte impulsive tipicamente presentano lunghe code, della du-
rata spesso superiore a qualche secondo. Tuttavia i primi coefficienti
sono più significativi, poiché hanno un’ampiezza maggiore, mentre gli
ultimi sono sempre più prossimi allo zero.
Per semplificare l’elaborazione e ridurre il numero di operazioni ne-
cessarie ad ogni ciclo, la lunghezza del filtro adattato, spesso è inferio-
re alla reale lunghezza del filtro da ricavare. Vediamo come influisce
2.5 PRESTAZIONI 23

Segnale desiderato
0.8

0.6

0.4

0.2

−0.2

−0.4

−0.6

−0.8
0 1 2 3 4 5 6 7 8 9 10
tempo(sec)

Figura 11: Andamento del segnale desiderato per via della variazione della ri-
sposta impulsiva dell’ambiente. Ciascun colore indica una risposta
impulsiva.

questa approssimazione sulle capacità di adattamento del filtro, os-


servando il grafico in figura 10 nella pagina precedente, che mostra
proprio l’andamento dell’ERLE e del disallineamento al variare della
lunghezza del filtro adattato w.
La prima esecuzione dell’algoritmo mostra l’adattamento nel caso in
cui la lunghezza del filtro adattato coincide con quella della risposta
impulsiva considerata, cioè per L = 2048. Successivamente è stata
dimezzata la lunghezza del filtro adattato, portato prima a L = 1024
(curva rossa —), poi a L = 512 (curva verde —).
Più il filtro adattato è breve, peggiore è l’approssimazione della ri-
sposta impulsiva, e maggiore è l’errore in uscita dal filtro. In questa
simulazione è stata usata la risposta impulsiva h21 .

2.5.2 Inseguimento
Un’altra proprietà delle risposte impulsive, è la variabilità. In genera-
le i parametri di una sala non saranno mai costanti, basta aprire una
finestra o una porta per variare considerevolmente l’acustica dell’am-
biente, su cui agiscono anche molti altri fattori, come la presenza di
persone in movimento, flussi d’aria e variazioni di temperatura.
La simulazione della variazione della risposta impulsiva della stanza
è stata sostituita con la variazione del percorso, sono state quindi con-
siderate le risposte impulsive h12 , hs ed h11 , con coefficienti di densità
rispettivamente di 0.505, 0.632 e 0.531.
Il segnale desiderato è stato ottenuto a partire da un segnale tipo
rumore bianco uniforme, variando la risposta impulsiva della sala ogni
3 secondi. Il segnale desiderato così generato per le simulazioni è
mostrato in figura 11.
Per ciascun segmento di segnale l’algoritmo è in grado di ricava-
re la risposta impulsiva, ma ciascuna variazione della risposta impul-
siva comporta un nuovo periodo di inseguimento durante il quale
l’algoritmo non è in grado di cancellare l’eco.
24 IMPLEMENTAZIONE

ERLE
35

30

25

20

15

(dB) 10

−5
0 1 2 3 4 5 6 7 8 9
tempo(sec)

Figura 12: Inseguimento della risposta impulsiva che cambia ogni 3 secondi.
Nell’ordine le risposte impulsive sono h12 , hs e h11 , rispettivamente
con indice di densità ξ pari a 0.505, 0.632 e 0.531.

La curva mostrata in figura 12 è da ritenersi pessimistica, poiché


sebbene in realtà la risposta impulsiva possa variare molto rapidamen-
te, la variazione istantanea applicata nelle simulazioni è solo frutto di
un’astrazione matematica.

2.5.3 Coerenza delle sorgenti

Come ultima simulazione, si consideri un sistema i cui segnali in in-


gresso mostrano un diverso grado di correlazione. Tali segnali possono
essere generati a partire da un rumore bianco uniforme ω, con un’ope-
razione non lineare, il valore assoluto ad esempio si presta bene allo
scopo.
Due segnali non correlati possono essere dunque ricavati dal modu-
lo,

ω + |ω |
x1 =
2
ω − |ω |
x2 =
2

come somma o come differenza.


Tali segnali avranno un’ampiezza positiva pari all’ampiezza di ω,
mentre il limite inferiore sarà l’asse delle ascisse.
Per avere una correlazione variabile è possibile sommare lo stesso
segnale di rumore bianco di partenza ω, un opportuno peso κ permette
di variare la correlazione. Eliminando il valor medio κ/2 si ottiene

ω + |ω | κ
x1 = ω + κ −
2 2
ω − |ω | κ
x2 = ω + κ − ,
2 2
2.5 PRESTAZIONI 25

ERLE
50

40

30

20
(dB)

10

−10
0 1 2 3 4 5
tempo(sec)

Figura 13: Echo Return Loss Enhancement (ERLE) per un sistema MISO a 2
ingressi con correlazione variabile, per vari livelli di correlazione.
L’equazione degli ingressi è la (2.5), i valori del parametro di cor-
relazione κ sono rispettivamente κ = 5 (—), κ = 2 (—), κ = 1 (—),
κ = 0(—)

Disallineamento

0
−2
−4
(dB)

−6
−8
−10

0 1 2 3 4 0 1 2 3 4
tempo(sec)

Figura 14: Misura del disallineamento al variare della correlazione degli


ingressi per un algoritmo IPNLMS MISO

e normalizzando infine i segnali si ottiene la seguente

ω + |ω | κ
 
1
x1 = ω + κ − κ (2.5)
2 2 2 +1
ω − |ω | κ
 
1
x2 = ω + κ + , κ (2.6)
2 2 2 +1

espressione di due segnali normalizzati, con correlazione variabile in


base al parametro κ, di ampiezza compresa tra −1 e 1.
BIBLIOGRAFIA

[1] Benesty, J., Gänsler, T., Huang, Y. A. e Rupp, M. (2004), «Adap-


tive algorithms for MIMO acoustic echo cancellation», in «Audio
signal processing for next generation multimedia communication
systems», p. 120–147, Kluwer academic.

[2] Huang, Y., Benesty, J. e Chen, J. (2006), Acoustic MIMO signal


processing, Springer.

[3] Uncini, A. (2006), Audio digitale, McGraw-Hill, Milano.

[4] Uncini, A. (2008), «Filtraggio adattativo e circuiti intelligen-


ti aggiornato», Appunti del corso di circuiti e algoritmi per
l’elaborazione dei segnali.

27

Potrebbero piacerti anche