# Codifica numerica del segnale audio/Capitolo 5

../Capitolo 4 ../Capitolo 6 IncludiIntestazione 17 marzo 2021 75% Da definire
Codifica numerica del segnale audio Daniele Sereno/Pietro Valocchi 1996 CC BY-SA 3.0 GFDL Indice:Codifica numerica del segnale audio.djvu //it.wikisource.org/w/index.php?title=Codifica_numerica_del_segnale_audio/Capitolo_5&oldid=- 20210317181848 //it.wikisource.org/w/index.php?title=Codifica_numerica_del_segnale_audio/Capitolo_5&oldid=- 20210317181848
5
CODIFICA NUMERICA
DI FORMA D’ONDA CON MEMORIA
Nella quantizzazione uniforme precedentemente descritta, la caratteristica di quantizzazione utilizzata è fissa nel tempo ed opera sui singoli campioni senza tener conto dell’andamento del segnale. Una simile tecnica di codifica viene indicata come “codifica di forma d’onda senza memoria” o “quantizzazione istantanea”. L’ampiezza dei quanti utilizzati deriva da limiti di saturazione dimensionati per la massima dinamica del segnale, anche se essa può risultare nel tempo notevolmente inferiore.
Nel LogPCM, pur rimanendo sempre nell'ambito delle codifiche di forma d’onda senza memoria, la situazione è leggermente differente. Infatti, grazie all'approssimazione a tratti della caratteristica logaritmica, è possibile pensare la codifica LogPCM come una quantizzazione uniforme ottenuta utilizzando quella che, in un gruppo di sette distinte caratteristiche, fornisce un limite di saturazione adeguato alla dinamica del segnale (fig. 5.1). L’informazione relativa alla caratteristica utilizzata è trasmessa insieme alla quantizzazione all'interno del segmento.
In tal modo gli estremi di saturazione del quantizzatore vengono continuamente adattati alla dinamica corrente del segnale. Trasmettere ad ogni campione l’informazione relativa alla dinamica, però, equivale implicitamente ad ipotizzare che nel passaggio da un campione al successivo, l’ampiezza possa variare arbitrariamente. Nell'ipotesi di campioni correlati, però, ciò non accade ed il passo di quantizzazione può essere aggiornato con una frequenza inferiore [p. 126 Fig. 5.1 - Approssimazione tramite quantizzazione uniforme del LogPCM. in funzione del valore efficace dell’ingresso (fig. 5.2). Ciò permette di evitare la trasmissione dell’informazione sul segmento, riducendo il numero di bit per ogni campione richiesti dalla codifica. D’altra parte è richiesto che nella codifica si abbia memoria dell’andamento del segnale, per cui la quantizzazione adattati va rientra nella famiglia delle “codifiche di forma d’onda con memoria.”
Fig. 5.2 - Quantizzazione adattativa. [p. 127 Il problema è quindi quello di identificare quale caratteristica uniforme adottare (e cioè definire il numero di quanti) e fissare la legge con la quale adattare l’ampiezza del quanto (e quindi cambiare tipo di caratteristica). La definizione del numero di quanti può essere eseguita in funzione del rumore di quantizzazione ammissibile. Volendo mantenere le prestazioni ottenute da un codificatore LogPCM, è necessario determinare il numero di bit utilizzati da questo nella quantizzazione uniforme all'interno di ciascun segmento.
Grazie al bit di segno ed ai quattro bit di mantissa, nel LogPCM si identifica uno tra i 16 possibili quanti presenti nell'intervallo di ampiezze compreso tra il limite di saturazione e metà della dinamica di ciascun quantizzatore. Per coprire l’intera dinamica è, quindi, necessario aggiungere un solo bit alla codifica. Il numero di bit richiesto per un quantizzatore uniforme che produca lo stesso rumore di quantizzazione del LogPCM è, quindi, pari a 6.
Per quanto riguarda ]’aggiornamento del passo di quantizzazione e quindi la variazione del tipo di caratteristica, questo si può pensare come ottenuto dalla cascata di un amplificatore con controllo automatico di guadagno e di un quantizzatore uniforme con livelli di saturazione (e, di conseguenza, ampiezze dei quanti) fissi. Per l’aggiornamento del passo di quantizzazione, approssimando l’energia a breve termine con la varianza del segnale e considerando un guadagno proporzionale alla varianza stessa, si può adottare una legge del tipo
| ${\begin{cases}\Delta (n)=\sigma _{x}(n)\ \Delta _{0}\\q(n)={\frac {x(n)}{\Delta (n)}}\end{cases}}$ | (5.1) |
dove q(n) sono le uscite del quantizzatore e Ao è una costante tale che i valori di A(n) varino tra minimi e massimi pari a quelli utilizzati nel LogPCM. Anche in questo caso, come nel LogPCM, è preferibile realizzare un sistema digitale. Per tale motivo P algoritmo di adattamento dell’ampiezza del quanto viene posto a valle di una conversione A/D eseguita tramite una quantizzazione uniforme che, nel segnale telefonico, è su 12 bit. Di conseguenza, anche se l’algoritmo di aggiornamento porta a valori reali del A(n), il passo di quantizzazione da adottare non può che essere un multiplo (secondo potenze di due) del quanto utilizzato nella quantizzazione uniforme. La riquantizzazione, quindi, si traduce in eventuali traslazioni di una finestra di 6 [p. 128 bit sulla codifica d’ingresso, con perdita di bit meno significativi (variazione dell’ampiezza del quanto) o più significativi (variazione del limite di saturazione (fig. 5.3).
Fig. 5.3 - Conversione tra quantizzazione uniforme ed adattativa.
Il problema, quindi, è quello della stima a x del valore efficace del segnale a partire da un numero finito di campioni. Si possono seguire due metodi (fig. 5.4). Nel primo (quantizzazione adattativa in avanti o “forward”: AQF) il calcolo del valore efficace viene eseguito sul blocco di campioni da codificare. Il blocco deve essere di dimensioni tali da mantenere l’ipotesi di stazionarietà della sorgente. Nel secondo metodo (quantizzazione adattativa all'indietro o “backward”: AQB) il valore efficace viene calcolato campione per campione in funzione dei campioni più recenti.
Con l’adattamento in avanti, considerando blocchi di N campioni, la stima della varianza può essere ottenuta come
| ${\hat {\sigma }}_{x}^{2}(n)={\frac {1}{N}}\sum _{m=0}^{N-1}x^{2}(n+m)$ | (5.2) |
Il passo di quantizzazione che ne deriva viene utilizzato per la codifica e deve essere trasmesso al destinatario per la decodifica. Anche se questo metodo ha una buona efficienza, presenta lo svantaggio di dover trasmettere (sia pur con una banda ridotta, ma con il rischio di errori) il passo di quantizzazione. Inoltre, la necessità di accumulare un buffer di campioni, introduce un ritardo ineliminabile di codifica, che può produrre effetti indesiderati (es.: eco) in applicazioni in tempo reale.
Con l’adattamento all'indietro, invece, le grandezze su cui calcolare il quanto sono disponibili sia al trasmittente che al destinatario; in questo modo [p. 129 Fig. 5.4 - Quantizzazione adattativa in avanti e all'indietro.
non è richiesta la trasmissione di nessuna informazione aggiuntiva. D’altra parte, il calcolo del valore efficace sui campioni già codificati può non risultare, ovviamente, ottimale per la codifica della rimanente parte del segnale, tanto più che l’uscita del codificatore è deteriorato dal rumore di quantizzazione. I risultati ottenibili con l’adattamento all'indietro sono, quindi, tipicamente peggiori di quelli ottenuti con l’adattamento in avanti.
Rimanendo nell'adattamento all'indietro, per il calcolo della a x è necessario, innanzitutto, definire il blocco di campioni da utilizzare. Se questo blocco venisse definito tramite una finestra rettangolare del tipo
| ${\hat {\sigma }}_{x}^{2}(n)={\frac {1}{N}}\sum _{m=1}^{N}x^{2}(n-m)$ | (5.3) |
si assegnerebbe uno stesso peso sia ai campioni più lontani che quelli più recenti del segnale. Utilizzando, invece, una finestra esponenziale
| ${\hat {\sigma }}_{x}^{2}(n)=(1-\alpha )\sum _{m=1}^{\infty }\alpha ^{m-1}x^{2}(n-m);\ 0<\alpha <1$ | (5.4) |
${\hat {\sigma }}_{x}$
* ${\hat {\sigma }}_{x}^{2}(n)=(1-\alpha )x^{2}(n-1)+\alpha \left\{(1-\alpha )\sum _{k=1}^{\infty }\alpha ^{k-2}x^{2}[n-k-1]\right\}$
| ${\hat {\sigma }}_{x}^{2}(n)=(1-\alpha )x^{2}(n-1)+\alpha {\hat {\sigma }}_{x}^{2}(n-1)$ | (5.5) |
Al variare di α cambiano le caratteristiche del quantizzatore (fig. 5.5). Considerando un campionamento a 8 kHz, per a = 0.99 vengono utilizzati circa 100 campioni del segnale, corrispondenti a 12.5 ms: tali sistemi vengono quindi definiti sillabici. Per a = 0.9 la finestra include un numero di campioni inferiore a dieci, corrispondenti a lms, per cui il sistema viene detto istantaneo. I sistemi sillabici, mediando su di un numero maggiore di campioni, non permettono di seguire la dinamica istantanea del segnale, ma risultano poco sensibili agli errori di trasmissione. I sistemi istantanei, invece, permettono di seguire meglio l’andamento della forma d’onda del segnale, ma risultano meno robusti nei confronti degli errori. Inoltre, nei sistemi istantanei, il passo di quantizzazione viene rapidamente ridotto nelle pause del segnale. Ciò si traduce nel rischio di saturazione alla successiva ripresa di attività della sorgente.
L’adattamento all'indietro può essere ulteriormente semplificato. Dato che $\Delta (n)={\hat {\sigma }}_{x}^{2}(n)\Delta _{0}$, se si calcola il rapporto tra due quanti successivi utilizzando la relazione ricorsiva precedentemente trovata per la ${\hat {\sigma }}_{x}$, si ottiene
| ${\frac {\Delta (n)}{\Delta (n-1)}}={\sqrt {\frac {{\hat {\sigma }}_{x}^{2}(n)}{{\hat {\sigma }}_{x}^{2}(n-1)}}}={\sqrt {\alpha +{\frac {1-\alpha }{{\hat {\sigma }}_{x}^{2}(n-1)}}q^{2}(n-1)}}$ | (5.6) |
Questa relazione può essere interpretata come un moltiplicatore M, funzione della precedente uscita del quantizzatore, della varianza del segnale e dell’esponente a, in grado di fornire il quanto corrente a partire dal precedente
| $\Delta (n)=M[|q(n-1)|,{\hat {\sigma }}_{x}^{2}(n),\alpha ]\Delta (n-1)$ | (5.7) |
L’espressione del moltiplicatore può essere semplificata, scollegandola dall'utilizzo di una finestra esponenziale, ma adottando dei moltiplicatori M costanti, funzioni della sola uscita corrente del quantizzatore (fig. 5.6). La legge di aggiornamento del passo di quantizzazione diventa del tipo
| $\Delta (n)=M[|q(n-1)|]\Delta (n-1)$ | (5.8) |
La memoria dell’algoritmo in questo modo è ridotta ad un solo campione. Le tecniche per l’individuazione della funzione M(q) ottima per l’aggiornamento del passo di quantizzazione sono state a lungo analizzate [Jay76], ma i risultati mostrano che il valore adottati per la M non sembrano essere critici [Rab78] (fig. 5.7). Risulta importante, invece, che l’aumento del passo di quantizzazione sia energico man mano che il valore efficace del segnale si avvicina alla soglia di saturazione, mentre la sua riduzione in corrispondenza dei livelli più bassi di segnale può essere molto più graduale.
Una possibile scelta per i moltiplicatori di un quantizzatore adattativo ad otto livelli è riportata in tabella [ITU-T G.721]
| | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
| M$_i$ | 4.482 | 1.585 | 1.283 | 1.142 | 1.070 | 1.037 | 1.006 | 0.984 |
Tab. 5.1 - Moltiplicatori per quantizzazione adattativa.
[p. 133 Fig. 5.7 - Area di variazione per moltiplicatori.
Si noti come il A venga ridotto solamente nel caso in cui il segnale cada nel primo quanto e che la riduzione è del 1.6 %. Nel caso in cui il segnale abbia raggiunto il quanto più elevato e quindi si rischi di entrare in saturazione, il quanto stesso viene aumentato più del 300 %.
Dato che con l’adozione di moltiplicatori costanti si perde il decadimento esponenziale della memoria del codificatore, torna il problema della propagazione di errori di trasmissione. È possibile rendere più robusto un quantizzatore adattativo che utilizzi dei moltiplicatori costanti agli errori di trasmissione, reintroducendo un decadimento esponenziale (robust adaptation) con una legge di aggiornamento del tipo
| $\Delta (n)=M[|q(n-1)|]\Delta ^{1-\beta }(n-1)$ | (5.9) |
dove il coefficiente β (tipicamente pari a 1/32 o 1/64) smorza il contributo dei precedenti passi di quantizzazione (potenzialmente errati).
L’errore di codifica per un quantizzatore istantaneo, fissato il numero di bit, è legato al valore V degli estremi del quantizzatore. Questo, a sua volta, è funzione della dinamica del segnale. Riducendo tale dinamica, quindi, sarebbe possibile ridurre il rumore di quantizzazione o, a parità di questo, ridurre il numero di bit utilizzati nella codifica. Per procedere su tale strada si osserva qualitativamente che campioni adiacenti del segnale hanno ampiezze che si discostano tipicamente meno della massima dinamica del segnale: normalmente non si passa, cioè, dal massimo valore positivo al massimo negativo nell'intervallo di tempo che trascorre tra un campione e l’altro. Se questa ipotesi fosse vera, la codifica della differenza tra campioni adiacenti
| $d(n)=x(n)-x(n-1)$ | (5.10) |
porterebbe alla voluta riduzione di dinamica. Trasmettendo tale differenza, a partire da una condizione iniziale di x(0) ad esempio nulla, il segnale potrebbe essere ricostruito a destinazione sommando la differenza ricevuta dal trasmittente all'ampiezza del campione precedentemente ricostruito
| $x(n)=d(n)+x(n-1)$ | (5.11) |
Per procedere su tale strada è necessario verificare che la dinamica del segnale differenza sia inferiore a quella del segnale. Una grandezza dalla quale stimare la rapidità di variazione dell’ampiezza dei campioni del segnale (supposto stazionario) è l’autocorrelazione, definita come
| $R(n)=E\left\{x(i)x(i+n)\right\}=\sum _{j=-\infty }{\infty }x(i)x(i+n)p[x(i).x(i+n)]$ | (5.12) |
dove E rappresenta l’operatore “valore atteso” e l’argomento sono copie traslate del segnale. Questa funzione, ha il suo massimo (unico) nell'origine, che è pari alla potenza del segnale
| $R(0)=E\left\{x(i)x(i)\right\}=E\left\{x^{2}(i)\right\}$ | (5.13) |
II segnale vocale, ad esempio, è un segnale che soddisfa tale condizione. Se si osserva, infatti, l’andamento della funzione di autocorrelazione a lungo termine per un segnale vocale filtrato in banda telefonica (fig. 5.8) si nota come essa abbia un andamento gradatamente decrescente, per cui la codifica della differenza delle ampiezze di campioni adiacenti risulterebbe vantaggiosa, nel senso della riduzione della dinamica.
La dinamica del segnale d’errore, però, può essere ulteriormente ridotta (fig. 5.9). L’andamento regolare della funzione di auto-correlazione, infatti, è indice della non indipendenza tra campioni del segnale. Per segnali puramente casuali a media nulla, infatti, la funzione di autocorrelazione risulterebbe essere una delta, dato che solo facendo perfettamente coincidere due copie del segnale, tutti i campioni contribuirebbero in maniera concorde nel prodotto (quindi R(0) ≠ 0), mentre negli altri casi, essendo ciascun campione indipendente dagli altri, la risultante tenderebbe ad annullarsi. Qualsiasi forma della funzione di autocorrelazione differente dalla delta, quindi, evidenzia che i campioni sono frutto di una qualche legge di generazione.
Nel caso della voce, in particolare, essendo i campioni tutti prodotti dalla stessa sorgente tramite la propagazione dell’eccitazione nel cavo orale, è immaginabile che essi siano legati dall'andamento della risposta impulsiva di quest’ultimo. Nota la legge che lega i campioni di un segnale, è possibile ricavare una loro stima a partire dal valore dei campioni che li hanno preceduti. Maggiore è l’accuratezza della stima, minore sarà l’ampiezza del segnale d’errore, che è l’obiettivo che ci si era prefissi. Le tecniche per ottenere la stima del segnale (predizione) sono trattate nei seguenti paragrafi.
Il problema della stima di un segnale tramite predizione lineare rientra nel problema più generale del filtraggio adattativo, nel quale, dato un ingresso v(n), si vuol determinare la struttura di un modello discreto di una sorgente in [p. 136 Fig. 5.8 - Funzione di autocorrelazione per segnale filtrato passa banda.
grado di produrre un’uscita desiderata u(n). Considerando segnali non deterministici, il problema è, quindi, quello di trovare un sistema in grado di generare il processo correlato u(n) a partire da un processo scorrelato v(n). Ciò è la controparte di quanto avviene per segnali deterministici con l’analisi di Fourier, nella quale un qualsiasi segnale è descritto in termini di segnali elementari sinusoidali. Nel definire il modello della sorgente, una scelta comune è quella di considerare il segnale u(n) come un processo Auto Regressivo (AR) di ordine q (fig. 5.10). Questo è l’uscita di un sistema discreto di tipo IIR, con legame ingresso/uscita esprimibile come
| $u(n)=v(n)-\sum _{k=1}^{q}w_{k}\ u(n-k)$ | (5.14) |
La sua funzione di trasferimento a soli poli è pari a
| $H(z)={\frac {1}{1+\sum _{k=1}^{q}w_{k}\ z^{-k}}}$ | (5.15) |
e, dato l’ingresso a spettro piatto, lo spettro dell’uscita presenta dei massimi relativi in corrispondenza alla pulsazione dei poli della H(z). L’ampiezza e la banda di tali massimi risultano funzione del modulo dei poli stessi [Appendice A.l]. Approssimare il processo correlato da analizzare con un processo AR, e quindi lineare, è essenzialmente dovuto all'esistenza di efficienti algoritmi per la soluzione del problema del filtraggio. Inoltre, per la decomposizione di Wold [Hay86], si può dimostrare che ogni processo stocastico discreto stazionario x(n) può essere scomposto nella somma di due processi scorrelati u(n) ed s(n) dove s(n) è un processo predicibile e u(n) è processo lineare (FIR con un numero infinito di termini)
| $u(n)=v(n)+\sum _{k=1}^{\infty }b_{k}\ v(n-k)$ | (5.16) |
L’ingresso v(n) del FIR è sempre considerato rumore bianco. Trasformando il processo FIR in un’equivalente processo IIR (stessa risposta impulsiva) e trascurando la componente deterministica s(n), qualsiasi x(n) può essere approssimato da un processo AR.
Dato un processo AR, è possibile fissarne i coefficienti in modo tale che generi un segnale con una funzione di autocorrelazione voluta (fig. 5.11). Questo può essere facilmente provato calcolando l’autocorrelazione di un processo AR. Dall'equazione di definizione, riscritta come
| $v(n)=\sum _{k=0}^{q}w_{k}\ u(n-k);w_{0}=1$ | (5.17) |
moltiplicando entrambi i membri per i campioni u(n i) dell’uscita ed applicando l’operatore valore atteso E
* $E\left\{v(n)u(n-i)\right\}=E\left\{\sum _{k=0}^{q}w_{k}u(n-k)u(n-i)\right\};\ i>0$
| $E\left\{v(n)u(n-i)\right\}=\sum _{k=0}^{q}w_{k}E\left\{u(n-k)u(n-i)\right\};\ i>0$ | (5.18) |
Al secondo termine si ha l’auto-correlazione R$_{uu}$ di u(n). Il primo termine è nullo in quanto u(n - i) utilizza campioni dell’ingresso precedenti al campione v(n). Essendo quest’ultimo rumore bianco, v(n) e gli u(n-i) risultano tra loro scorrelati. Si ottiene quindi
| $\sum _{k=0}^{q}w_{k}R_{uu}(n-k)=0;\ {\begin{cases}n=1,2,\dots ,q\\w_{0}=1\end{cases}}$ | (5.19) |
Esplicitando tale relazione si ottiene
| $R_{uu}(n)=\eta _{1}R_{uu}(n-1)+\eta _{2}R_{uu}(n-2)+\ldots +\eta _{q}R_{uu}(n-q);\ \eta =-w$ | (5.20) |
Considerando l’indice n nell'intervallo [1, q], tale equazione può essere espressa in forma matriciale
| ${\begin{bmatrix}R_{uu}(0)&R_{uu}(1)&\ldots &R_{uu}(q-1)\\R_{uu}(1)&R_{uu}(0)&\ldots &R_{uu}(q-2)\\\ldots &\ldots &\ldots &\ldots \\R_{uu}(q-1)&R_{uu}(q-2)&\ldots &R_{uu}(0)\end{bmatrix}}{\begin{bmatrix}\eta _{1}\\\eta _{2}\\\ldots \\\eta _{q}\end{bmatrix}}={\begin{bmatrix}R_{uu}(1)\\R_{uu}(2)\\\ldots \\R_{uu}(q)\end{bmatrix}}$ | (5.21) |
ottenendo l’equazione di Yule-Walker
| $R_{uu}\eta =r_{uu}$ | (5.22) |
Nel seguito i vettori verranno identificati in grassetto con lettere minuscole, mentre le matrici in grassetto con lettere maiuscole. Per determinare i coefficienti di un processo con autocorrelazione fissata, quindi, basta risolvere tale equazione per η
| $\eta =R_{uu}^{-1}r_{uu}$ | (5.23) |
e sostituire i desiderati valori della R$_{uu}$ [Appendice A]. Nella codifica, però, non si è interessati a generare processi con determinate caratteristiche medie (es.: autocorrelazione), ma si vuole generare un processo identico al segnale da [p. 140 codificare. Per risolvere tale problema, è necessario introdurre il conceto di predizione.
La predizione lineare è un caso particolare di filtraggio nel quale il segnale desiderato coincide con l’ingresso traslato nel tempo. L’obiettivo è la determinazione della struttura di un sistema (predittore) che, in funzione di campioni disponibili del segnale, riesca a stimare il valore di campioni incogniti (fig. 5.12). In particolare, un predittore in avanti di ordine “p” stima il campione x del segnale all'istante “n” in funzione dei precedenti “p” campioni dello stesso. A tal fine si utilizza un sistema FIR con legame ingresso uscita lineare del tipo
| ${\hat {x}}(n)=\sum _{k=1}^{p}\alpha _{k}\ x(n-k)$ | (5.24) |
la cui funzione di trasferimento è
| ${\hat {P}}(z)=\sum _{k=1}^{p}\alpha _{k}\ z^{-k}$ | (5.25) |
ed i coefficienti aie sono le incognite da determinare. Anche in questo caso, l’uso di un sistema lineare è motivato da aspetti algoritmici. In forma matriciale, l’equazione del predittore diventa
| ${\hat {x}}(n)={\begin{bmatrix}\alpha _{1}&\alpha _{2}&\ldots &\alpha _{p}\end{bmatrix}}{\begin{bmatrix}x(n-1)\\x(n-2)\\\ldots \\x(n-p)\end{bmatrix}}=\alpha ^{T}x(n-1)$ | (5.26) |
dove i vettori
| $\alpha ^{T}={\begin{bmatrix}\alpha _{1}&\alpha _{2}&\ldots &\alpha _{p}\end{bmatrix}};\ x^{T}(n-1)={\begin{bmatrix}x(n-1)&x(n-2)&\ldots &x(n-p)\end{bmatrix}}$ | (5.27) |
rappresentano il vettore dei coefficienti del predittore (di dimensioni pari a p) e l’ingresso dello stesso, ottenuto prelevando p elementi precedenti il campione x(n) dal vettore x(n) del segnale
| $x^{T}(n)={\begin{bmatrix}x(n)&x(n-1)&\ldots &x(n-p)\end{bmatrix}}$ | (5.28) |
L’esponente “T” indica l’operazione di trasposizione. La struttura del predittore è, ovviamente, legata a quella del processo AR che vuole stimare, come mostrato nel seguito. Dati il segnale e la sua stima, è possibile definire il vettore e(n) dei campioni della funzione d’errore (residuo), i cui elementi sono ottenuti come
| $e(n)=x(n)-{\hat {x}}(n)=x(n)-\sum _{k=1}^{p}\alpha _{k}\ x(n-k)=x(n)-\alpha ^{T}x(n-1)$ | (5.29) |
Dal punto di vista della predizione, l’errore è una funzione dei coefficienti incogniti a k della quale si vuole determinare il minimo. Per determinare i parametri del predittore che minimizzino l’errore, è necessario scegliere un opportuno criterio di ottimizzazione. Quello più comunemente adottato è la minimizzazione dell’errore quadratico medio (Mean-Square value of the estimation Error: MSB), definito come la varianza del segnale d’errore
* $\epsilon (\alpha )=E\{e(n)^{2}\}=E\left\{[x(n)-{\hat {x}}(n)]^{2}\right\}=\left\{\left[x(n)-\sum _{k=1}^{p}\alpha _{k}\ x(n-k)\right]^{2}\right\}$
| $\epsilon (\alpha )=E\{x(n)^{2}\}-2E\left\{\sum _{k=1}^{p}\alpha _{k}\ x(n-k)\right\}+E\left\{\left[\sum _{k=1}^{p}\alpha _{k}\ x(n-k)\right]^{2}\right\}$ | (5.30) |
| $R(n)=E\left\{x(i)x(i+n)\right\}=\sum _{i=-\infty }^{\infty }x(i)x(i+n)p[x(i),x(i+n)]$ | (5.31) |
l'equazione precedente, in forma matriciale, diventa
| $\epsilon (\alpha )=\sigma _{x}^{2}-2\alpha ^{T}r+\alpha ^{T}R\alpha$ | (5.32) |
dove σ$_x$$^2$ = R(0) rappresenta la varianza del segnale e
| $R={\begin{bmatrix}R(0)&R(1)&R(2)&\ldots &R(p-1)\\R(1)&R(0)&R(1)&\ldots &R(p-2)\\R(2)&R(1)&R(0)&\ldots &R(p-3)\\\ldots &\ldots &\ldots &\ldots &\ldots \\R(p-1)&R(p-2)&R(p-3)&\ldots &R(0)\end{bmatrix}};\ r={\begin{bmatrix}R(1)\\R(2)\\R(3)\\\ldots \\R(p)\end{bmatrix}}$ | (5.33) |
sono, rispettivamente, la matrice R di autocorrelazione dell’ingresso x(n-l) (che coincide con quella di x(n)) ed il vettore di cross-correlazione tra l’ingresso x(n-l) e l’uscita desiderata x(n). Se R è una matrice definita positiva (cioè y$^T$ R$_y$ > 0, con y vettore arbitrario), ipotesi verificata in pratica, l’MSE è una funzione quadratica in α$_k$ ed il suo minimo è unico (fig. 5.13). Esso si ottiene annullando contemporaneamente le derivate parziali dell’MSE rispetto al coefficiente generico α$_i$
* ${\frac {\partial \epsilon }{\partial \alpha _{i}}}=2E\left\{\left[x(n)-\sum _{k=1}^{p}\alpha _{k}x(n-k)\right]x(n-i)\right\}$
* $=2E\left[\sum _{k=1}^{p}E\left\{\alpha _{k}x(n-k)x(n-i)\right\}-E\left\{x(n)x(n-i)\right\}\right]$
* $=2\left[\sum _{k=1}^{p}\alpha _{k}R(k-i)-R(i)\right]$
| $=2\left\{\sum _{k=1}^{p}\alpha _{k}\sum _{n=-\infty }^{\infty }x(n-k)x(n-i)p[x(n-k),x(n-i)]-\sum _{n=-\infty }^{\infty }x(n)x(n-i)p[x(n),x(n-i)]\right\}$ | (5.34) |
Fig. 5.13 - Superficie dell’errore di predizione per predittore del 2° ordine.
Considerando il sistema di p equazioni ottenute facendo variare l’indice 1 ≤ i ≤ p, si ottiene l’espressione del gradiente della funzione d’errore
| $\nabla \epsilon (\alpha )=2(R\alpha -r)$ | (5.35) |
Per ottenerne il minimo è necessario imporre l’annullamento del gradiente. La relazione matriciale ottenuta in tal modo
| $R\alpha =r$ | (5.36) |
è detta equazione normale (o di Wiener-Hopf discreta). La soluzione di questo sistema
| $\alpha _{ott}=R^{-1}r$ | (5.37) |
Es.: per il segnale telefonico, i valori medi normalizzati per l’autocorrelazione a lungo termine possono essere approssimati come R(0) = 1, R(l) = 0.85, R(2) = 0.55, R(3) = 0.25. Per un predittore del terzo ordine, i coefficienti ottimi che ne derivano sono pari a
| ${\begin{bmatrix}\alpha _{1}\\\alpha _{2}\\\alpha _{3}\end{bmatrix}}={\begin{bmatrix}R(0)&R(l)&R(2)\\R(1)&R(0)&R(1)\\R(2)&R(1)&R(0)\end{bmatrix}}^{-1}{\begin{bmatrix}R(1)\\R(2)\\R(3)\end{bmatrix}}={\begin{bmatrix}1&0.85&0.55\\0.85&1&0.85\\0.55&0.85&1\end{bmatrix}}^{-1}{\begin{bmatrix}0.85\\0.55\\0.25\end{bmatrix}}={\begin{bmatrix}1.45\\-0.79\\0.12\end{bmatrix}}$ | (5.38) |
Sostituendo l’equazione di Wiener-Hopf nell'espressione generale dell’errore, si ricava il suo minimo ε$_{min}$
* $\epsilon (\alpha )=\sigma ^{2}-2\alpha ^{T}r+\alpha ^{T}R\alpha =\sigma ^{2}-\alpha ^{T}r+\alpha ^{T}(R\alpha -r)$
| $\epsilon _{min}=\sigma ^{2}-2\alpha _{ott}^{T}r=R(0)-\sum _{k=1}^{p}\alpha _{k}^{ott}r(k)$ | (5.39) |
Esplicitando nell'espressione dell’errore il legame con il suo minimo
* $\epsilon (\alpha )=\sigma ^{2}-2\alpha ^{T}r+\alpha ^{T}R\alpha =\sigma _{min}^{2}+\alpha _{ott}^{T}r-\alpha ^{T}r-r^{T}\alpha +\alpha ^{T}R\alpha$
* $=\epsilon _{min}+\alpha _{ott}^{T}R\alpha _{ott}+\alpha ^{T}R\alpha _{ott}+\alpha _{ott}^{T}R\alpha +\alpha ^{T}R\alpha$
* $=\epsilon _{min}+(\alpha ^{T}R-\alpha _{ott}^{T}R)(\alpha -\alpha _{ott})$
| $\epsilon (\alpha )=\epsilon _{min}+(\alpha -\alpha _{ott})^{T}R(\alpha -\alpha _{ott})$ | (5.40) |
Questa relazione può essere semplificata introducendo il vettore di errore dei coefficienti del predittore
| $c=(\alpha -\alpha _{ott})$ | (5.41) |
La sostituzione di questa variabile dell'espressione della superficie d’errore, equivale a traslare l'origine degli assi in corrispondenza del suo minimo, ottenendo [p. 145
| $\epsilon (\alpha )=\epsilon _{min}+c^{T}Rc$ | (5.42) |
Infine, se si orientano gli assi secondo gli autovettori della matrice R, si ottiene la rappresentazione in forma canonica della superficie d’errore. Per far questo è necessario scomporre la matrice di autocorrelazione R in funzione della matrice diagonale Λ dei suoi autovalori e della matrice Q dei suoi autovettori
| $R=Q\ \Lambda \ Q^{T}c$ | (5.43) |
Operando il cambiamento di coordinate
| $c\to \nu =Q^{T}c$ | (5.44) |
e noto che Q$^{-1}$ = Q$^T$, si ottiene, infine, la forma canonica
* $\epsilon (\alpha )=\epsilon _{min}+c^{T}Rc=\epsilon _{min}+Q\ \Lambda \ Q^{T}c$
| $\epsilon (\nu )=\epsilon _{min}+\nu ^{T}\Lambda \ \nu$ | (5.45) |
Si osserva che la superficie d’errore è legata con legge quadratica allo scostamento dei coefficienti del predatore dagli ottimi tramite la matrice R. La convessità del paraboloide è funzione dei suoi autovalori, mentre il loro rapporto ne determina l’eccentricità.
Es.: si consideri la superficie d’errore per un predittore del secondo ordine nel caso di un segnale casuale con a unitaria.
Gli autovalori della R si ottengono annullando il determinante
| $\Delta (R-\lambda I)=\Delta \left({\begin{bmatrix}R(0)-\lambda &R(1)\\R(1)&R(0)-\lambda \end{bmatrix}}\right)=[R(0)-\lambda ]^{2}-R(1)^{2}$ | (5.46) |
ottenendo
| $\lambda _{1,2}=R(0)\pm R(1)$ | (5.47) |
Per un segnale casuale, la funzione di autocorrelazione è una delta (R$_{xx}$ = [1 0 0 ...]). Di conseguenza gli autovalori risultando coincidenti ed unitari e la superficie risulta essere un paraboloide a sezione circolare (fig. 5.14). Inoltre, per quanto riguarda i coefficienti ottimi del predittore si ottiene [p. 146
| $\alpha _{ott}=R^{-1}r={\begin{bmatrix}1&0\\0&1\end{bmatrix}}{\begin{bmatrix}0\\0\end{bmatrix}}={\begin{bmatrix}0\\0\end{bmatrix}}$ | (5.48) |
per cui la predizione (ovviamente) non è possibile. Infine, il minimo della funzione d’errore
| $\epsilon _{min}=\sigma ^{2}-\alpha _{ott}^{T}r=1$ | (5.49) |
coincide con la varianza del segnale. L’errore di predizione, dunque, ha una dinamica maggiore o uguale (nel caso di predizione ottima) a quella del segnale.
Se si considera, invece, un segnale con la stessa varianza, ma con funzione di autocorrelazione R$_{xx}$ = [ 1 0.75 0.25 ... ], si ottiene
* $\lambda _{1,2}={\begin{bmatrix}0.25\\1.75\end{bmatrix}}$
* $\alpha _{ott}={\begin{bmatrix}1&0.75\\0.75&1\end{bmatrix}}^{-1}{\begin{bmatrix}0.75\\0.25\end{bmatrix}}={\begin{bmatrix}1.29\\-0.71\end{bmatrix}}$
| $\epsilon _{min}=1-{\begin{bmatrix}1.29\\0.71\end{bmatrix}}^{T}{\begin{bmatrix}0.75\\0.25\end{bmatrix}}=0.21$ | (5.50) |
In tal caso, mantenendo fisso R(0) = G x = 1, la superficie d’errore presenta una sezione ellittica ed il suo minimo risulta inferiore alla varianza del segnale. Nel caso di predizione ottima, quindi, l’errore ha una dinamica inferiore a quella del segnale, per cui la sua codifica può avvenire con un numero inferiore di bit. Se si considera, infine, un segnale con una matrice di autocorrelazione caratterizzata da un rapporto tra autovalori identico a quello appena considerato (λ$_1$/λ$_2$ = 1/7), ma con un valore assoluto doppio del precedente
| ${\begin{cases}{\frac {\lambda _{1}}{\lambda _{2}}}={\frac {R(0)-R(1)}{R(0)+R(1)}}={\frac {1}{7}}\\\lambda _{1}=R(0)-R(1)=2\times 0.25\end{cases}}\to {\begin{cases}\lambda _{1}=0.5\\\lambda _{2}=3.25\end{cases}}$ | (5.51) |
si ottiene la funzione di auto-correlazione R$_{xx}$ = [ 2 1.5 ... ]. Imponendo anche la coincidenza sulla posizione del minimo si ottiene [p. 147 Fig. 5.14 - Superficie del funzionale d’errore.
| $r=R\alpha _{ott}={\begin{bmatrix}2&1.5\\1.5&2\end{bmatrix}}{\begin{bmatrix}1.29\\-0.71\end{bmatrix}}={\begin{bmatrix}1.5\\0.5\end{bmatrix}}$ | (5.52) |
Con tali valori per la funzione di autocorrelazione (R$_{xx}$ = [ 2 1.5 0.5 ... ]), la superficie d’errore è un paraboloide con la stessa eccentricità di quella ottenuta nel caso precedente (stesso rapporto tra autovalori), ma con una minore concavità (fig. 5.15). Calcolando il suo minimo
| $\epsilon _{min}=2-{\begin{bmatrix}1.29\\0.71\end{bmatrix}}^{T}{\begin{bmatrix}1.5\\0.5\end{bmatrix}}=0.42$ | (5.53) |
si nota come il suo rapporto con la varianza del segnale R(0) risulta identico al caso precedente. [p. 148 Fig. 5.15 - Superficie del funzionale d’errore.
Volendo analizzare le caratteristiche del segnale d’errore ottenuto nel caso di adattamento ottimo, è opportuno riscrivere l’equazione normale nella forma
| $E\{x(n)x^{T}(n)\}\alpha _{ott}=E\{x(n)x^{T}(n-1)\}$ | (5.54) |
dalla quale si ottiene
| $E\{x(n)[x^{T}(n-1)-x^{T}(n)a_{ott}]\}=0$ | (5.55) |
Il termine tra parentesi quadre rappresenta il vettore dei campioni dell’errore di predizione e(n) (da non confondere con l’errore quadratico ε che è uno scalare), per cui
| $E\{x(n)e_{ott}^{T}(n)\}=0$ | (5.56) |
Tale relazione indica che, nel caso di predizione ottima, l'errore è completamente scorrelato con il segnale (principio di ortogonalità).
Tornando ai legami predittore-modello AR della sorgente, si dimostra che i coefficienti del predittore ottimo coincidono (a meno del segno) con quelli del processo. Infatti, riprendendo l’equazione di Yule-Walker
| $R_{uu}\eta =r_{uu};\ \eta =w$ | (5.57) |
| $r=\alpha R$ | (5.58) |
con la sostituzione a = - w. Cioè, nota la struttura della sorgente, il predittore ottimo si ottiene trasformando la struttura del processo sorgente da IIR a FIR e adottando gli stessi pesi, a meno del segno.
Infine, se si confronta l’equazione del processo AR
| $u(n)=v(n)-\sum _{k=1}^{q}w_{k}u(n-k)$ | (5.59) |
con quella di definizione dell’errore di predizione
| $e(n)=x(n)-{\hat {x}}(n)\to x(n)=e(n)+\sum _{k=1}^{q}\alpha _{k}x(n-k)$ | (5.60) |
si nota che, nel caso di predizione ottima, e quindi con a = - w, risulta
| $e(n)=v(n)$ | (5.61) |
cioè l'errore di predizione nel caso di adattamento ottimo coincide con l’ingresso del processo, trasformato da AR a ARX (fig. 5.16). Questo poteva essere intuito pensando di alimentare il processo ARX con un treno di delta. Adottando per il predittore una struttura complementare a quella della sorgente, questo può seguire, una volta che è adattato, la risposta impulsiva della sorgente stessa, ma non può, ovviamente, predire il suo ingresso.
Dato il legame tra i coefficienti del predittore e quelli del processo ARX, l’ordine del predittore non può essere superiore a quello del processo che stima. Altrimenti, la matrice di autocorrelazione R risulta a determinante nullo e l’equazione normale non ammetterebbe soluzione.
Es.: si consideri un segnale sinusoidale del tipo
| $s(n)=sin\left(n{\frac {\pi }{4}}\right)$ | (5.62) |
| $R_{xx}(n)={\frac {1}{2}}cos\left(n{\frac {\pi }{4}}\right)=\left[{\frac {1}{2}},{\frac {1}{2{\sqrt {2}}}},0,{\frac {-1}{2{\sqrt {2}}}},{\frac {-1}{2}},\ldots \right]$ | (5.63) |
se si considera un predittore del secondo ordine, è possibile ricavarne i relativi coefficienti come
| $r={\begin{bmatrix}{\frac {1}{2{\sqrt {2}}}}\\0\end{bmatrix}};\ R={\begin{bmatrix}{\frac {1}{2}}&{\frac {1}{2{\sqrt {2}}}}\\{\frac {1}{2{\sqrt {2}}}}&{\frac {1}{2}}\end{bmatrix}};\ det(R)={\frac {1}{8}};\ \alpha =={\begin{bmatrix}{\sqrt {2}}\\-1\end{bmatrix}}$ | (5.64) |
Da tali coefficienti si ottiene un corrispondente processo ARX, il cui denominatore ha radici
| $roots\left({\begin{bmatrix}1\\\alpha \end{bmatrix}}\right)={\begin{bmatrix}{\frac {1}{\sqrt {2}}}+j{\frac {1}{\sqrt {2}}}\\{\frac {1}{\sqrt {2}}}-j{\frac {1}{\sqrt {2}}}\end{bmatrix}}$ | (5.65) |
che corrisponde a poli con modulo unitario e pulsazione ω = ± π/4. Viceversa, considerando un predittore di ordine maggiore, la matrice di autocorrelazione diviene a determinante nullo e la soluzione dell’equazione di Wiener-Hopf è impossibile. Ad esempio, considerando un predittore del quarto ordine
| $R={\begin{bmatrix}{\frac {1}{2}}&{\frac {1}{2{\sqrt {2}}}}&0&{\frac {-1}{2{\sqrt {2}}}}\\{\frac {1}{2{\sqrt {2}}}}&{\frac {1}{2}}&{\frac {1}{2{\sqrt {2}}}}&0\\0&{\frac {1}{2{\sqrt {2}}}}&{\frac {1}{2}}&{\frac {1}{2{\sqrt {2}}}}\\{\frac {-1}{2{\sqrt {2}}}}&0&{\frac {1}{2{\sqrt {2}}}}&{\frac {1}{2}}\end{bmatrix}};\ det(R)=0$ | (5.66) |
Utilizzare un predittore di ordine eccessivo si traduce in problemi di instabilità numerica nel caso di analisi di segnali con energia concentrata alle frequenze inferiori (e quindi fortemente correlati), in quanto la matrice di [p. 152 autocorrelazione può divenire mal condizionata [Del93]. Per evitare tali problemi, nel caso di analisi del segnale vocale è prassi comune esaltare le formanti di ordine maggiore applicando una pre-enfasi tramite un filtro passa alto con funzione di trasferimento del tipo
| $P(z)=1-\mu z^{-1}$ | (5.67) |
Una possibile scelta per il parametro μ è
| $\mu ={\frac {R_{xx}(1)}{R_{xx}(0)}}$ | (5.68) |
In tal modo l’esaltazione della parte alta dello spettro ha luogo nel caso di componenti vocalizzate, mentre altrimenti risulta trascurabile.
Nella codifica predittiva (o quantizzazione differenziale), la stima dei campioni viene sfruttata in trasmissione per ricavare la funzione di errore, che viene codificata e trasmessa al ricevente. Il ricevente ricostruisce il segnale sommando ad una stima eseguita localmente l’errore di predizione ricevuto. Dato che nel caso di predizione ottima su di un segnale correlato, la dinamica dell ’errore d(n) è inferiore a quella dell’ingresso x(n), è possibile codificare l’errore con un numero inferiore di bit rispetto a quelli utilizzati per il segnale, riducendo il flusso numerico. Viceversa, mantenendo fisso il numero di bit del quantizzatore, è possibile migliorare il rapporto S/N, che conviene riscrivere come
| ${\frac {S}{N}}={\frac {E\{x^{2}(n)\}}{E\{e_{q}^{2}(n)\}}}={\frac {E\{x^{2}(n)\}}{E\{d^{2}(n)\}}}{\frac {E\{d^{2}(n)\}}{E\{e_{q}^{2}(n)\}}}$ | (5.69) |
dove e$_q$(n) rappresenta la potenza del rumore di quantizzazione. Il secondo termine del prodotto è il rapporto segnale rumore del quantizzatore, che vede in ingresso il segnale differenza. Il primo termine del prodotto rappresenta il miglioramento del rapporto segnale rumore dovuto alla configurazione differenziale (guadagno di predizione). Questo termine deve essere massimizzato, minimizzando l’errore di predizione. [p. 153 La trattazione precedente è basata sull'ipotesi di segnale stazionario e funzione di autocorrelazione nota. Se così fosse, stabiliti i coefficienti ottimi del predittore, questi potrebbero rimanere fissi per tutta la codifica del segnale. In pratica i segnali da codificare non sono stazionari, per cui le prestazioni ottenibili sono limitate. Nel caso di segnale vocale, ad esempio, utilizzando coefficienti di predizione fissi derivati dall'andamento medio della funzione di auto-correlazione, non si notano miglioramenti apprezzabili del guadagno all'aumentare dell’ordine del predittore oltre il terzo [Jay84] (fig. 5.17).
Fig. 5.17 - Guadagno di predizione per predittore a coefficienti fissi.
Per migliorare la predizione è necessario considerare finestre temporali all'interno delle quali il segnale è approssimabile come stazionario e poi aggiornare periodicamente i coefficienti del predittore tramite una stima della funzione di autocorrelazione ricavata dai campioni. Per la stima dell’autocorrelazione (come per la stima del valore efficace nella quantizzazione adattativa) si possono seguire due strade (fig. 5.18). La prima (predizione adattativa in avanti: APF) calcola un’approssimazione della matrice di autocorrelazione a partire da blocchi di campioni del segnale ancora da codificare (predizione a blocchi).
Questo metodo richiede un differente criterio di ottimizzazione per il calcolo dei coefficienti del predittore. In particolare, il criterio scelto è quello di minimizzare non l’errore quadratico medio, ma la sommatoria degli errori quadratici [p. 154
| ${\hat {\epsilon }}(\alpha )=\sum _{n}e(k)^{2}=\sum _{n}\left[x(n)-\sum _{k=1}^{p}\alpha _{k}\ x(n-k)\right]^{2}$ | (5.70) |
dove gli indici che determinano gli estremi della sommatoria in “n”, che dipendono dal tipo di algoritmo utilizzato [Appendice C], sono comunque da considerarsi finiti. Tale tecnica è nota come criterio dei minimi quadrati dell’errore (Least Square: LS). Ripetendo passi analoghi a quanto fatto per l’equazione di Wiener-Hopf, si ottiene la seguente equazione normale deterministica
| $\sum _{k=1}^{p}\alpha _{k}\sum _{n}x(n-i)x(n-k)=\sum _{n}x(n-i)x(n);\ 1\leq i\leq p$ | (5.71) |
Tale equazione può essere ottenuta direttamente dall'equazione normale introducendo la grandezza Φ
| $\Phi (i,j)={\frac {1}{n}}\sum _{k}x(k-i)x(k-j)$ | (5.72) |
come approssimazione della matrice di autocorrelazione del segnale, ricavata da suoi campioni. Anche in tale equazione gli estremi della sommatoria sono lasciati per il momento indefiniti. L’equazione normale deterministica può essere, quindi, scritto come
| $\sum _{k=1}^{p}\alpha _{k}\Phi (i,k)=\Phi (i,0)$ | (5.73) |
che, in forma matriciale, diventa
* ${\begin{bmatrix}\Phi (1,1)&\Phi (1,2)&\Phi (1,3)&\ldots &\Phi (1,p)\\\Phi (2,1)&\Phi (2,2)&\Phi (2,3)&\ldots &\Phi (2,p)\\\Phi (3,1)&\Phi (3,2)&\Phi (3,3)&\ldots &\Phi (3,p)\\\ldots &\ldots &\ldots &\ldots &\ldots \\\Phi (1,1)&\Phi (p,2)&\Phi (p,3)&\ldots &\Phi (p,p)\end{bmatrix}}{\begin{bmatrix}\alpha _{1}\\\alpha _{2}\\\alpha _{3}\\\ldots \\\alpha _{p}\end{bmatrix}}={\begin{bmatrix}\Phi (1,0)\\\Phi (2,0)\\\Phi (3,0)\\\ldots \\\Phi (p,0)\end{bmatrix}}$
| $\Phi \ \alpha =\Psi$ | (5.74) |
Anche in questo caso, i coefficienti ottimi si ottengono come
| $\alpha _{ott}=\Phi ^{1}\Psi$ | (5.75) |
L’inversione della matrice di auto-correlazione risulta, in applicazioni real-time, di complessità computazionale eccessiva. Nella predizione a blocchi, quindi, un ruolo importante ha l’individuazione di algoritmi efficienti per la soluzione dell’equazione normale che evitino tale inversione [Appendice C].
Il dover accumulare un blocco di campioni per stimare la funzione di autocorrelazione, comporta un ritardo inevitabile di codifica. Inoltre i coefficienti del predittore vanno trasmessi al ricevente per la decodifica, con le conseguenti ripercussioni sul throughput e sulla robustezza nei confronti di errori di trasmissione. Per tali ragioni, gli algoritmi di predizione a blocchi vengono principalmente utilizzati nella codifica per modelli, dove è essenziale la migliore stima da loro fornita dei parametri del modello della sorgente.
Una seconda famiglia di algoritmi evita di accumulare dati per la stima della funzione di autocorrelazione, richiesta per la soluzione dell’equazione di [p. 156 Wiener-Hopf. Ciò è possibile utilizzando la finestra degli n campioni che precedono il campione corrente, finestra che viene poi traslata campione per campione (predizione adattativa all'indietro: APB). A partire da una condizione iniziale arbitraria, nella predizione viene utilizzato un vettore sub-ottimo di coefficienti, che sono poi aggiornati ricorsivamente. L’aggiornamento avviene in modo tale che ci si avvicini per approssimazioni successive al minimo dell’errore, muovendoci lungo la sua superficie dell’e(a) in direzione opposta a quella del gradiente (algoritmo del gradiente deterministico, o “Steeppest Descent” o “Minimum Mean-Square error gradient algorithm": MMS) (fig. 5.19). In caso di segnale non stazionario, tale minimo risulterà variabile, per cui l’algoritmo continuerà ad inseguirlo continuando ad aggiornare il vettore dei coefficienti.
Ipotizzando, per il momento, nota la matrice di auto-correlazione, il gradiente della funzione di errore
| $\nabla \epsilon (\alpha )={\frac {\partial \epsilon }{\partial \alpha _{i}}}=2(R\alpha -r)$ | (5.76) |
risulta disponibile. Essendo l’errore una funzione quadratica degli a, il valore del gradiente risulta essere tanto maggiore quanto maggiore è lo scostamento di questi dall'ottimo. Le correzioni da apportare ad essi, quindi, possono essere pensate proporzionali al gradiente stesso tramite una relazione del tipo
| $\alpha ^{(n+1)}=\alpha ^{(n)}+{\frac {1}{2}}\mu [-\nabla (n)]=\alpha ^{(n)}+\mu \left[r-R\alpha ^{(n)}\right]$ | (5.77) |
dove μ è opportuno parametro che verrà analizzato successivamente. Il problema è quindi quello del calcolo del gradiente, che è conveniente riscrivere come
* $\nabla \epsilon (\alpha )=2(R\alpha -r)=2E\left\{\sum _{i=1}^{p}\left[\sum _{k=1}^{p}\alpha _{k}x(n-k)x(n-i)-x(n)x(n-i)\right]\right\}$
| $=-2E\left\{\sum _{i=1}^{p}\left[x(n)-\sum _{k=1}^{p}\alpha _{k}x(n-k)\right]x(n-i)\right\};\ i=1,\ldots ,p$ | (5.78) |
Riconoscendo nel termine tra parentesi quadre Terrore di predizione [p. 157 Fig. 5.19 - Ricerca del minimo del funzionale d’errore.
| $e(n)=x(n)-\sum _{k=1}^{p}\alpha _{k}x(n-k)$ | (5.79) |
si ottiene
| $\nabla \epsilon (\alpha )=-2E\{e(n)\ x(n-i)\};\ i=1,\ldots ,p$ | (5.80) |
Se si definisce R$_{ex}$ come il vettore di cross-correlazione tra Terrore di stima ed il segnale, questa relazione assume la seguente forma matriciale
| $\nabla \epsilon (\alpha )=-2R_{ex}(n)$ | (5.81) |
Questa è la cercata espressione del gradiente del funzionale d’errore. Sostituendola nella relazione ricorsiva per l'aggiornamento dei coefficienti del predittore, si ottiene, infine [p. 158
| $\alpha ^{(n+1)}=\alpha ^{(n)}+\mu R_{ex}(n)$ | (5.82) |
Tale soluzione presuppone che sia nota la matrice R ex. Dato che ciò non si verifica in pratica, sarà necessario sviluppare algoritmi differenti che riescano a stimare il gradiente dai campioni del segnale disponibili, come mostrato nel successivo sottoparagrafo.
Nella legge di aggiornamento, il parametro μ influenza la memoria dell’algoritmo, dato che esso può essere interpretato come coefficiente di feed-back per il vettore dei coefficienti e quindi come coefficiente di smorzamento sul contributo dei precedenti campioni. La scelta parametro μ, quindi, è estremamente critica. Scegliendo valori “piccoli” si ha una convergenza lenta dell’algoritmo, a causa delle modeste correzioni apportate al vettore dei coefficienti ad ogni passo dell’algoritmo. Viceversa, valori “grandi” di μ, rendono l’algoritmo instabile, dato che si continua a correggere energicamente il vettore dei coefficienti anche quando si è in prossimità del minimo.
Per studiare la stabilità dell'algoritmo è necessario ricavare una relazione ricorsiva per il vettore di errore dei coefficienti del predittore, il cui termine al passo n-esimo è definito come
| $c^{(n)}=\alpha ^{(n)}-\alpha _{ott}$ | (5.83) |
Il vettore di errore al passo n+1 si ottiene come
* $c^{(n+1)}=\alpha ^{(n+1)}-\alpha _{ott}=\alpha ^{(n)}-\mu (R\alpha ^{(n)}-r)-\alpha _{ott}$
* $=\alpha ^{(n)}-\alpha _{ott}-\mu R\alpha ^{(n)}+\mu r=c(n)-\mu R\alpha ^{(n)}+\mu R\alpha _{ott}$
| $c^{(n+1)}=(I-\mu R)c^{(n)}$ | (5.84) |
Scomponendo la R in funzione dei suoi autovalori
* $c^{(n+1)}=(I-\mu Q\Lambda Q^{T})c^{(n)}$
| $Q^{T}c(n+1)=(I-\mu \Lambda )Q^{T}c(n)$ | (5.85) |
e trasformando la superficie del criterio d’errore in forma canonica, tramite il cambiamento di coordinate [p. 159
| $c^{(n)}\to \nu ^{(n)}=Q^{T}c^{(n)}=Q^{T}\left[\alpha ^{(n)}-\alpha _{ott}\right]$ | (5.86) |
si ottiene la seguente equazione ricorsiva per il vettore ν
* $Q\nu ^{(n+1)}=(I-\mu R)Q\nu ^{(n)}$
| $\nu ^{(n+1)}=(I-\mu \Lambda )\nu ^{(n)}$ | (5.87) |
Esprimendo scalarmente tale relazione ricorsiva, si ottiene
* $\nu _{k}^{(n+1)}=(I-\mu \lambda _{k})\nu _{k}^{(n)}$
| $\nu _{k}^{(n)}=(I-\mu \lambda _{k})^{n}\nu _{k}^{(0)}$ | (5.88) |
Questa rappresenta una serie geometrica, la cui stabilità è assicurata se risulta -
* $-\ <1-\mu \lambda _{k}<1$
| $0<\mu <{\frac {2}{\lambda _{max}}}$ | (5.89) |
Questa relazione, che impone un limite superiore al valore della costante di aggiornamento, mostra come la |i debba essere scelta in funzione degli autovalori della matrice di autocorrelazione del processo, peraltro incogniti. Sostituendo l’espressione ricorsiva della variabile v in quella dell’errore, si ricava infine
| $\epsilon (\nu )=\epsilon _{min}+\nu ^{T}\Lambda \nu =\epsilon _{min}+\sum _{k=1}^{p}\lambda _{k}\nu _{k}^{2}=\epsilon _{min}+\sum _{k=1}^{p}(1-\mu \lambda _{k})^{2n}\nu _{k}(0)^{2}$ | (5.90) |
che mostra come l'errore tenda al suo minimo con legge esponenziale.
Per quanto riguarda la rapidità di convergenza, la dipendenza dagli
Con l’algoritmo del gradiente deterministico, il predittore utilizza un vettore di coefficienti che viene periodicamente aggiornato. A tal fine ci si muove lungo la superficie del criterio d’errore verso il suo minimo, andando nella direzione opposta al gradiente
| $\nabla \epsilon (\alpha )={\frac {\partial \epsilon }{\partial \alpha _{i}}}=2(R\alpha -r)$ | (5.91) |
Ciò si ottiene tramite una legge di aggiornamento del tipo
| $\alpha ^{(n+1)}=\alpha ^{(n)}+{\frac {1}{2}}\mu [-\nabla (n)]=\alpha ^{(n)}+\mu \left[r-R\alpha ^{(n)}\right]$ | (5.92) |
con μ un opportuno parametro. Ipotizzando nota la matrice di autocorrelazione, il gradiente della funzione di errore risulta disponibile e calcolabile in funzione dei coefficienti del predittore ai tramite il valore atteso
| $\nabla \epsilon (\alpha )=2E\{e(n)x(n-i)\};\ i=1,\ldots ,p$ | (5.93) |
Il metodo del gradiente stocastico, detto brevemente metodo del gradiente (Least Mean Square error gradient algorithm: LMS), elimina la necessità di disporre di tale valore atteso, ricorrendo ad una sua stima istantanea, ottenuta dai campioni del segnale come
| $\nabla {\hat {\epsilon }}(\alpha )=2e(n)x(n-k)$ | (5.94) |
Questa semplificazione porta a delle relazioni ricorsive per il calcolo dei coefficienti del predittore del tipo
| $\alpha _{k}^{(n+1)}=\alpha _{k}^{(n)}+\mu e(n)x(n-k)$ | (5.95) |
dove l’errore al passo n-esimo si ottiene come differenza tra l’ingresso e la sua stima
| $e(n)=x(n)-\sum _{k=1}^{p}\alpha _{k}^{(n)}x(n-k)$ | (5.96) |
| $x(n)=[10-1010-1\ldots ];\ n=0,1,\ldots$ | (5.97) |
Si consideri un precettore del 2° ordine con costante di aggiornamento dei coefficienti μ = 1/2 e condizioni iniziali per i coefficienti del predittore α = [ 0 0 ]. Per i primi due passi dell’algoritmo si ottiene
* $e(0)=x(0)=1;e(1)=x(1)=0$
| $\alpha _{1}^{(1)}=\mu x(0)e(1)=0$ | (5.98) |
dopo di che si possono applicare le relazioni ricorsive esposte che, per n = 2, forniscono
* $e(2)=x(2)-\alpha _{1}^{(2)}x(1)=-1$
| $\alpha _{1}^{(3)}=\alpha _{1}^{(2)}+\mu e(2)x(1)=0;\ \alpha _{2}^{(3)}=\alpha _{2}^{(2)}+\mu e(2)x(0)=-{\frac {1}{2}}$ | (5.99) |
per n = 3 forniscono
* $e(3)=x(3)-\alpha _{1}^{(3)}x(2)-\alpha _{2}^{(3)}x(1)=0$
| $\alpha _{1}^{(4)}=\alpha _{1}^{(3)}+\mu e(3)x(2)=0;\ \alpha _{2}^{(4)}=\alpha _{2}^{(3)}+\mu e(3)x(1)=-{\frac {1}{2}}$ | (5.100) |
e cosi via.
Per quanto riguarda la convergenza dell’LMS, essa, come per l’MMS, è di tipo esponenziale con decadimento regolato da μ (fig. 5.20). L’uso di una stima del gradiente invece del suo valore corretto, però, si traduce nell'aggiunta di un errore che si manifesta come fluttuazioni sulla convergenza esponenziale. Di conseguenza, da p dipende anche lo scostamento dal valore teorico del minimo errore ottenibile. Infatti, con valori bassi di μ si ottiene una convergenza lenta, ma i valori dei coefficienti ottenuti risultano essere molto vicini a quelli ottimi; con valori di μ elevati la convergenza è più rapida, ma le maggiori fluttuazioni introdotte fanno si che le prestazioni a regime siano peggiori. La soluzione può essere quella di rendere adattativo anche tale parametro, al prezzo di una maggiore complessità computazionale [Appendice B]. [p. 162 Fig. 5.20 - Curve di apprendimento.
Al fine di ridurre la complessità di implementazioni hardware dell’algoritmo, è possibile adottare leggi di aggiornamento dei coefficienti del predittore che si basino esclusivamente sul segno della funzione d’errore e/o del segnale (polarity cross-correlations). Le leggi di aggiornamento che ne derivano sono del tipo
* $\alpha _{k}^{(n+1)}=\alpha _{k}^{(n)}+\mu \ sgn[e(n)]\ x(n-k)$
* $\alpha _{k}^{(n+1)}=\alpha _{k}^{(n)}+\mu \ e(n)\ sgn[x(n-k)]$
| $\alpha _{k}^{(n+1)}=\alpha _{k}^{(n)}+\mu \ sgn[e(n)]\ sgn[x(n-k)]$ | (5.101) |
Infine, per ridurre la propagazione di errori di quantizzazione o di trasmissione, può risultare utile utilizzare un coefficiente moltiplicativo λ < 1 per attenuare il peso dei precedenti coefficienti a (potenzialmente errati), ottenendo [p. 163
| $\alpha _{k}^{(n+1)}=\lambda \alpha _{k}^{(n)}+\mu \ sgn[e(n)]\ sgn[x(n-k)]$ | (5.102) |
In tal modo, l’influenza di un errore sul valore di un coefficiente viene via via attenuato man mano che la stima prosegue.
Nei paragrafi precedenti si è visto che le metodologie di analisi spettrale e gli strumenti di calcolo associati (descritti in Appendice C) abbiano avuto un ruolo molto importante nel settore della codifica del segnale vocale. Più in generale si può affermare che l’analisi spettrale a breve termine è stato, ed è ancora, uno strumento essenziale per lo studio del segnale vocale ed è stato impiegato in tutti i settori del trattamento del segnale vocale, comprendendo quindi non solo la codifica, ma anche il riconoscimento e la sintesi.
I passi più significativi del successo di questa tecnologia sono riassunti in tabella 5.2.
| EVENTO | ANNO |
| Koenig inventa lo spettrografo (Sound Spectrograph) | 1946 |
| Fant pubblica la teoria acustica della produzione della voce | 1960 |
| In M.I.T. ed ai laboratori Bell si introduce il metodo di analisi per sintesi per il calcolo del modello spettrale e delle formanti | 1961-1964 |
| Makhoul,, Markel,, ed altri propongono il modello di analisi con predizione lineare (LPC - Linear Predictive Coding) | 1968-1975 |
Tab. 5.2 - Calendario degli eventi legati alle tecniche di analisi spettrale.
Si può senz'altro affermare che la svolta per l’utilizzo generalizzato dell’analisi spettrale avviene negli anni settanta con l’avvento della tecnica LPC (Linear Predictive Coding), la quale consente due grandi vantaggi rispetto ai metodi proposti precedentemente:
* il calcolo dei parametri è diretto e non iterativo, come era nei metodi di analisi per sintesi;
* il calcolo dei parametri è fatto usando la rappresentazione del segnale nel tempo. [p. 164 Anche in questo caso, la disponibilità di uno strumento di calcolo semplice ha stimolato la ricerca in molti settori del signal processing e non ultimo in quello della codifica. In particolare, l’analisi spettrale LP è stata ampiamente utilizzata per sfruttare una caratteristica fondamentale del segnale vocale e cioè quella di avere uno spettro di ampiezza non uniforme in frequenza ed in prima approssimazione stazionario a breve termine. Questa caratteristica è stata sfruttata in due modi distinti in due filoni specifici della codifica:
* Codificatori predittivi - In questo caso si osserva che le caratteristiche spettrali del segnale vocale si traducono in una correlazione nel tempo tra campioni adiacenti. Ne consegue la possibilità di effettuare una predizione adattativa del segnale con conseguente riduzione di ridondanza.
* Codificatori per modelli - In questo caso le tecniche di codifica sono basate sull'impiego di un modello a parametri adattativi e le caratteristiche spettrali del segnale vocale sono legate ai parametri del tubo acustico nel modello di produzione del segnale vocale.
Le tecniche di predizione lineare adattativa viste in precedenza sfruttano la correlazione nel tempo a breve termine tipica del segnale vocale. Tale correlazione viene sfruttata calcolando un segnale predetto che viene sottratto al segnale originale e trasmettendo quindi il solo segnale errore di predizione. Come si vedrà nel caso della tecnica di codifica DPCM, il segnale predetto, e cioè la stima del segnale originale, è calcolato a partire dal segnale ricostruito, al fine di garantire la completa reversibilità della codifica predittiva (stima in catena chiusa). Ne consegue che in questo caso i coefficienti del filtro di predizione sono calcolabili sia al trasmettitore che al ricevitore e quindi non devono essere trasmessi.
Viceversa nel caso di schemi di codifica per modelli i coefficienti del filtro a soli-poli, relativi al modello del tratto vocale (coincidenti con i coefficienti di predizione quando il metodo di calcolo è basato sulla minimizzazione dell’errore di predizione), sono calcolati a partire dal segnale originale e sono quindi trasmessi al ricevitore dove sono utilizzati nel filtro di sintesi. E evidente che in questo caso tali coefficienti devono essere opportunamente codificati e trasmessi come informazione ausiliaria, necessaria al fine di sintetizzare il segnale vocale. [p. 165 Vista la necessità di trasmettere tali coefficienti, sono state ipotizzate diverse trasformazioni degli stessi, al fine di ottenere un insieme di coefficienti che abbia caratteristiche ideali dal punto di vista della sensibilità al rumore di quantizzazione, delle proprietà di interpolazione degli spettri e della stabilità del filtro corrispondente.
Nel seguito sono riportate le trasformazioni di coefficienti più utilizzate nel campo della codifica, mettendo in luce per ognuna di esse quali sono le caratteristiche peculiari.
Sono i coefficienti di autocorrelazione del segnale di riferimento e sono quindi calcolati con la relazione
| $R_{k}=\sum _{n=0}^{L_{H}-k}x(n)\cdot x(n+k)$ | (5.103) |
in cui x(n) rappresenta l’n-esimo campione del segnale di riferimento ed L$_H$ la lunghezza della finestra di analisi. Non hanno caratteristiche di rilievo, eccettuata le caratteristiche di interpolazione. Solitamente costituiscono il primo passo per calcolare altri insiemi di coefficienti.
Costituiscono i coefficienti del filtro diretto ai. Possono essere calcolati agevolmente dai coefficienti di autocorrelazione risolvendo la matrice di Yule-Walker [Appendice C.l] oppure con l’algoritmo recursivo di Levinson-Durbin [Appendice C.2]. Hanno caratteristiche di robustezza al rumore di quantizzazione abbastanza scadenti e quindi non sono stati quasi mai utilizzati direttamente per la trasmissione. Viceversa hanno il pregio di poter essere impiegati direttamente in una struttura di filtro numerico che è quella del filtro diretto. Hanno delle buone caratteristiche di interpolazione ma non esiste una formula diretta per valutare se un set di coefficienti corrisponde ad un filtro stabile. [p. 166 Coefficienti di riflessione (PARCOR)
Possono essere ottenuti direttamente dai coefficienti α$_i$ tramite l’algoritmo di Levinson-Durbin, [Appendice C.3] oppure utilizzando la recursione di Schur [Appendice C.4]. Devono il loro nome di PARCOR (PARtial CORrelation) al metodo di calcolo. Anche per questi coefficienti esiste una struttura di filtro implementabile che è quella a traliccio. Hanno una bassa sensitività al rumore di quantizzazione, in confronto ai coefficienti del filtro diretto, ed hanno la proprietà di avere una condizione di stabilità del filtro data da
| $stabilit{\grave {a}}\Leftrightarrow |k_{i}|<1\supset i$ | (5.104) |
Per contro le proprietà di interpolazione di spettri non sono molto buone.
Sono coefficienti legati ai coefficienti di riflessione tramite la relazione
| $A_{i}=A_{i+1}\cdot {\frac {1+k_{i}}{1+k_{i}}}\ con\ i=p,p-1,\ldots ,1\ e\ A_{p+1}=1$ | (5.105) |
dove p rappresenta l’ordine di predizione del filtro. Hanno il significato fisico di essere legati all’area delle sezioni trasversali del tubo acustico (nel modello del tratto vocale) da cui hanno tratto il nome. Hanno discrete proprietà di sensitività agli errori ma per contro pessime proprietà di interpolazione.
Questi coefficienti sono stati utilizzati molto frequentemente in passato a causa delle buone proprietà di sensitività agli errori di quantizzazione. In particolare la sensitività agli errori è circa uguale per i diversi coefficienti. Le prestazioni in termini di interpolazione sono simili a quelle dei coefficienti di riflessione.
Sono ricavati dai coefficienti di riflessione tramite la relazione
| $LAR_{i}=ln{\frac {A_{i+1}}{A_{i}}}=ln{\frac {1-k_{i}}{1-k_{i}}}\ 1\leq i\leq p$ | (5.106) |
| $stabilit{\grave {a}}\Leftrightarrow LAR_{i}>0$ | (5.107) |
È immediato verificare che tale condizione di stabilità discende direttamente da quella sui coefficienti di riflessione.
Sono molto simili ai LAR ed hanno trovato scarsissimo utilizzo. Sono stati introdotti in letteratura al fine di avere una maggiore risoluzione dei primi due coefficienti, in considerazione del fatto che solitamente tali coefficienti sono prossimi a 1. Si calcolano con la relazione
| $MLAR_{i}=ln\left[{\frac {F-k_{i}}{F-k_{i}}}\right]1\leq i\leq p\ e\ F>1$ | (5.108) |
Anche questi coefficienti sono stati impiegati abbastanza saltuariamente. Sono definiti dalla relazione
| $ISC_{i}=arcsin(k_{i})$ | (5.109) |
Sono anche chiamati LPC cepstrum e sono i coefficienti cepstrali dell’inviluppo spettrale derivato dall'analisi LPC. Pertanto non sono uguali ai coefficienti cepstrali dello spettro del segnale vocale. In pratica si possono calcolare con la relazione recursiva
| $c_{i}=\alpha _{i}+\sum _{j=1}^{i-1}{\frac {j}{i}}c_{j}\alpha _{i-j}\ 1\leq i\leq p\ e\ \alpha _{0}=1$ | (5.110) |
Una menzione particolare spetta ai coefficienti Line Spectrum Pair o coefficienti LSP in quanto sono stati impiegati in molti schemi di codifica, in considerazione delle loro buone prestazioni.
La loro introduzione si deve principalmente a Wakita [Wak81] (anche se la paternità del concetto spetta ad Itakura nel 1975 [Ita75]) mentre Kabal e Ramachandran hanno pubblicato un algoritmo efficiente di calcolo basato sui polinomi di Chebyshev [Kab86],
I coefficienti LSP possono essere presentati in modo agevole partendo dalla solita equazione del filtro di sintesi che definisce un modello spettrale a soli poli di ordine p
| $A(z)=1-\sum _{i=1}^{p}\alpha _{i}z^{-i}$ | (5.111) |
A partire da questa equazione si possono definire due polinomi di ordine (p+1), uno simmetrico P(z) ed uno antisimmetrico Q(z), in base alle relazioni
* $P(z)=A(z)-z^{-(p+1)}\cdot A(z^{-i})$
| $Q(z)=A(z)+z^{-(p+1)}\cdot A(z^{-i})$ | (5.112) |
Dalle due relazioni è facile verificare che
| $A(z)={\frac {1}{2}}[P(z)+Q(z)]$ | (5.113) |
Le radici dei due polinomi ausiliari P(z) e Q(z) si chiamano Line Spectrum Pairs (LSP), mentre le posizioni angolari, sul piano complesso, di tali radici si chiamano Line Spectrum Frequencies (LSF). [p. 169 Fig. 5.21 - Rappresentazione grafica del modello di tubo acustico.
I coefficienti LSP (o coppie di linee spettrali) hanno un significato fisico ben preciso che può essere enunciato facendo riferimento al modello acustico del tratto vocale. Tale modello, nella sua rappresentazione più semplice, è costituito da un tubo acustico caratterizzato, nel caso di ordine di predizione p, da p sezioni equispaziate (fig. 5.21).
II tubo acustico ha lunghezza pari alla lunghezza del tratto vocale e quindi si sviluppa dalla glottide alle labbra. Le p sezioni hanno area opportuna in considerazione dei processi articolatoti e quindi dei suoni emessi. Inoltre il tubo acustico è adattato alla glottide, dove viene alimentata l’eccitazione, e si apre su una sezione infinita in corrispondenza delle labbra.
I coefficienti di riflessione (k$_i$), prima introdotti, tengono conto del rapporto di energie tra onda riflessa ed onda incidente alle varie sezioni, o, analogamente, del disadattamento di impedenza nel passare da una sezione a quella adiacente. In questa esemplificazione i due termini prima introdotti alla funzione A(z) per ottenere P(z) e Q(z), corrispondono a considerare uno stadio aggiuntivo, in corrispondenza della glottide, con k$_{p+1}$ = ± 1 e cioè uno stadio completamente aperto o completamente chiuso.
In queste condizioni il tubo acustico è senza perdite, quindi il fattore di risonanza diventa infinito e lo spettro della funzione di trasferimento risulta costituito, in questo caso, da un insieme di delta di Dirac. In tal caso quindi, le LSP, e cioè le radici di questa funzione di trasferimento, assumono il significato di coppie di linee spettrali. [p. 170 Fig. 5.22 - Inviluppo spettrale LPC di ordine 10 e relative LSF per un tratto di voce vocalizzata.
Un tipico esempio di spettro di sintesi LPC e frequenze di linee spettrali (LSF) è riportato in figura 5.22. Da questa figura, ed in considerazione del significato fisico illustrato, si evince una stretta relazione tra i coefficienti LSP e la posizione delle formanti dello spettro. Questa relazione è alla base della migliore efficienza che si ottiene con le LSP nel codificare l’informazione spettrale.
La relazione tra LSP e formanti può essere espressa con le seguenti considerazioni qualitative.
Le LSP tendono a raggrupparsi nell'intorno delle formanti.
Più il fattore di risonanza (Q) è alto, più le LSP sono vicine.
Soong e Juang in [Soo84] hanno dimostrato che se A(z) è a fase minima (e cioè relativa ad un filtro stabile) allora le radici di P(z) e Q(z) giacciono sul cerchio unitario, sono complesse coniugate e sono alternate (cioè soddisfano la condizione 0 ≤ ω$_{q0}$ ≤ ω$_{p0}$ ≤ ω$_{q1}$ ≤ ω$_{p1}$ ≤ ... ≤ 2π). Come conseguenza diretta, ogni insieme di radici alternate, limitate nell'intervallo [0, 2π]), è relativo ad un filtro stabile. Quest’ultima considerazione fornisce quindi un criterio di stabilità per questo insieme di coefficienti. [p. 171 Fig. 5.23 - Luogo delle radici e rappresentazione delle LSP. (a) ordine 6 e (b) ordine 7.
A titolo esemplificativo la figura 5.23 riporta il luogo delle radici per due generici set di LSP nel caso di ordine pari (5.23a) ed ordine dispari (5.23b).
Nella figura sono anche riportate le radici del filtro di sintesi. Si può facilmente osservare che per radici di A(z) prossime al cerchio unitario le LSP tendono ad avvicinarsi tra loro. Viceversa, la vicinanza tra coppie di LSP non è necessariamente un buon indicatore della vicinanza di una radice di A(z) al cerchio unitario e cioè di una risonanza.
I metodi di calcolo delle radici LSP sfruttano le caratteristiche enunciate precedentemente. Dato che le LSP occorrono in coppie complesse coniugate, è sufficiente calcolare le radici su di un semicerchio, ad esempio nell'intervallo 0 ÷ π. Questo rimuove l’apparente aumento di ridondanza nel passare da A(z) ai due polinomi P(z) e Q(z). Le radici possono essere ricavate direttamente a partire dalle equazioni con i metodi dell’aritmetica complessa, oppure in modo molto più agevole considerando che le radici giacciono sul semicerchio unitario e quindi ponendo z = e$^{jω}$ e risolvendo per ω. Questo metodo richiede tuttavia lo sviluppo e la soluzione di espressioni trigonometriche anche complesse. Un metodo di calcolo più semplice che si presta ad essere svolto numericamente è quello basato sull'utilizzo dei polinomi di Chebyshev [Kab86]. In questo caso i termini trigonometrici cos(mω) sono sostituiti con i polinomi Tm(x), sfruttando la mappatura x = cos(ω). Ne consegue che le radici nel dominio [p. 172 di x sono confinate nell'intervallo [+1,-1]. Con tali posizioni, il metodo di calcolo consiste nel determinare, per opportuni incrementi, il cambiamento di segno del polinomio e quindi rifinire la ricerca con bisezioni successive.
I parametri LPC, comunque trasformati, sono impiegati in codificatori cosiddetti parametrici. In considerazione della stazionarietà a breve termine del segnale vocale, tali coefficienti sono da considerarsi rappresentativi delle caratteristiche spettrali del segnale vocale per un intervallo di tempo limitato.
Questo intervallo (frame) è in generale di durata compresa tra 2 e 40 ms. Dato che i parametri LPC devono essere aggiornati e trasmessi ad ogni frame, un frame lungo è spesso richiesto per consentire una bassa velocità di trasmissione. Tuttavia un frame troppo lungo determina parametri spettrali non sufficientemente rappresentativi della dinamica articolatoria, con conseguente introduzione di distorsioni spettrali. Inoltre la lunghezza del frame di analisi determina un contributo fisso al ritardo algoritmico della tecnica di codifica ed anche il ritardo di trasmissione è un elemento da minimizzare in un sistema di codifica. Queste considerazioni sono alla base dell’esistenza di codificatori con lunghezze di trama diverse. E. valore più ampiamente utilizzato rimane forse 20 ms.
Come già detto tuttavia, la soluzione ottima consisterebbe in un frame variabile di lunghezza dipendente dal particolare fonema pronunciato. L’impiego di un frame di lunghezza variabile trova applicazione negli schemi di codifica a velocità variabile di cui si parlerà in seguito. Viceversa, nel caso in cui la lunghezza del frame sia costante, diventa importante assicurare una graduale transizione nel passare da un set di coefficienti ad un set successivo. Tale graduale cambiamento è intrinsecamente giustificato dal modello di produzione del segnale vocale che è caratterizzato da una variazione graduale continua dell’assetto articolatorio. Il metodo più semplice per ottenere tale transizione smussata, consiste nell'interpolazione, solitamente lineare, dei parametri spettrali relativi a set adiacenti. Non tutti i set di coefficienti spettrali esaminati prima forniscono le stesse prestazioni da questo punto di vista.
Una misura della bontà delle prestazioni in questo caso è data dalla distorsione spettrale misurata tra lo spettro interpolato e lo spettro effettivo, nel punto di interpolazione. La figura 5.24 [Toh79] riporta l’andamento della distorsione spettrale per diversi tipi di parametri. Si nota che, nell'intervallo di [p. 173 Fig. 5.24 - Distorsione spettrale per diversi set di parametri LPC interpolati.
durate di interesse, la distorsione aumenta al crescere della lunghezza del frame di analisi in quanto le caratteristiche spettrali tendono ad essere maggiormente diverse. Inoltre si nota che i parametri LSP forniscono le prestazioni migliori anche da questo punto di vista in quanto consentono una minore distorsione spettrale.
Questi dati si riferiscono ai valori medi di distorsione calcolati su un certo numero di frasi relative a diversi parlatori e quindi fanno riferimento a prestazioni medie. Tuttavia bisogna osservare che dal punto di vista della qualità del segnale ricostruito, distorsioni locali seppur con probabilità di occorrenza bassa, ma con ampiezza alta, possono comportare risultati di qualità soggettiva insoddisfacenti.
In questo senso l’esigenza di interpolare le caratteristiche spettrali ha validità in generale, ma esistono situazioni particolari in cui può comportare risultati peggiorativi. È il caso di particolari suoni, come gli attacchi, in cui le caratteristiche spettrali cambiano bruscamente e la loro interpolazione comporta distorsioni locali di ampiezza molto superiore ai valori medi. Questo fenomeno è solitamente mitigato negli schemi di codifica parametrica, in quanto una buona quantizzazione del segnale di eccitazione può sopperire ad errori della stima [p. 174 spettrale. Tuttavia in uno schema specifico, lo standard per codifica Half-rate del GSM [ETSI06.20], proprio per sopperire a tale inconveniente, è stato riservato un bit per segnalare al ricevitore quali frame interpolare e quali no.
Come già più volte ripetuto, nella codifica predittiva ciò che viene trasmesso è la differenza d(n) tra il segnale e la sua stima, che coincide con l’errore di predizione
| $d(n)\equiv e(n)=x(n)-{\hat {x}}(n)=x(n)-\sum _{k=1}^{p}\alpha _{k}\ x(n-k)$ | (5.114) |
La struttura del codificatore (fig. 5.25) è quindi quella di un filtro numerico che, a partire dai campioni, fornisce l’errore di predizione (prediction-error filler). La relativa funzione di trasferimento (a soli zeri) è pari a
| $C(z)=1-\sum _{k=1}^{p}\alpha _{k}\ z^{-k}$ | (5.115) |
Il decodificatore (filtro di ricostruzione) esegue localmente, in funzione dei precedenti campioni del segnale, la stessa stima eseguita in trasmissione e ricostruisce il segnale originale sommando alla stima del campione corrente il valore ricevuto della funzione differenza
| $x(n)=d(n)+\sum _{k=1}^{p}\alpha _{k}\ x(n-k)$ | (5.116) |
La sua funzione di trasferimento (a soli poli) è, quindi, pari a
| $D(z)={\frac {1}{1-\sum _{k=1}^{p}\alpha _{k}\ z^{-k}}}$ | (5.117) |
Si nota che le funzioni di trasferimento del codificatore e del decodificatore sono, ovviamente, l’uno l’inverso dell’altro. In tal modo la funzione di trasferi[p. 175 Fig. 5.25 - Struttura del codificatore per quantizzazione differenziale.
mento complessiva, data dal prodotto delle due, è unitaria e, dopo la decodifica, è possibile riottenere il segnale in ingresso al codificatore. Inoltre, ricordando che, nel caso di predizione ottima, il segnale differenza d(n) coincide con l’ingresso v(n) del modello ARX della sorgente e che i coefficienti a si ottengono cambiando di segno a quelli della sorgente stessa, la funzione di trasferimento del decodificatore coincide con quella del modello ARX della sorgente
| $H(z)={\frac {1}{1+\sum _{k=1}^{q}w_{k}z^{-k}}}$ | (5.118) |
Ipotizzando in ingresso al filtro ARX del rumore bianco, e quindi con spettro piatto, il modulo dello spettro del segnale prodotto dalla sorgente coincide con il modulo di tale funzione di trasferimento (fig. 5.26). Di conseguenza, avendo il codificatore una funzione di trasferimento che risulta essere l’inverso della funzione densità spettrale di potenza dell’ingresso, la sua uscita, cioè il segnale differenza, ha spettro piatto e quindi risulta essere rumore bianco. Per tale motivo, il codificatore è generalmente indicato anche come “filtro di sbiancamento” o “filtro inverso”. La codifica DPCM, quindi, può essere vista come un sistema di identificazione dello spettro del segnale d’ingresso. Infatti, dato lo spettro del segnale P(co) e quello prodotto dall’ARX [p. 176
| ${\hat {P}}(\omega )={\frac {1}{|1+\sum _{k=1}^{p}\alpha _{k}e^{-jk\omega }|^{2}}}$ | (5.119) |
è possibile riottenere le equazioni di Wiener-Hopf minimizzando l’errore spettrale
| $E={\frac {1}{2\pi }}\int _{-\pi }^{\pi }{\frac {P(\omega )}{{\hat {P}}(\omega )}}d\omega$ | (5.120) |
Lo sbiancamento dello spettro del segnale differenza può essere anche dimostrato differentemente. Infatti, la funzione di autocorrelazione del segnale differenza è pari a
| $R_{dd}(i)=E\{d(n)d(n-i)\};\ i=1,2,\ldots$ | (5.121) |
Sostituendo in essa l’espressione del predittore
| $d(n-i)=x(n-i)-{\hat {x}}(n-i)=x(n-i)-\sum _{j=1}^{\infty }\alpha _{j}\ x(n-i-j);\ i=1,2,\ldots$ | (5.122) |
e dato che, per il principio di ortogonalità, risulta
| $E\{d(n)-x(n-i)\}=E\{e(n)-x(n-i)\}=0;\ i=1,2,\ldots$ | (5.123) |
si ottiene
| $R_{dd}=\sum _{j=1}^{\infty }\alpha _{j}E[d(n)\ x(n-i-j)];\ i=1,2,\ldots$ | (5.124) |
Riapplicando il principio di ortogonalità, si verifica che la funzione di auto-correlazione risulta essere impulsiva e quindi, nell'ipotesi (essenziale) che il predittore sia di ordine infinito, il segnale differenza è in teoria rumore bianco.
Ovviamente, la predizione del segnale eseguita con predittori di ordine finito (predizione a breve termine) riesce a ricostruire solamente l’andamento medio dello spettro del segnale. Nel caso di segnale vocale, ad esempio, con un [p. 177 Fig. 5.26 - Relazione tra spettri dei segnali e funzioni di trasferimento in un sistema di codifica differenziale.
predittore di ordine limitato ad esempio, all'ottavo ordine, si riesce a determinare solamente la posizione delle prime quattro formanti del segnale. Rifacendoci al modello discreto della sorgente, in tal modo si ricostruisce solo il contributo del filtro (cioè nell'individuazione della risposta impulsiva). La struttura fine dello spettro, dovuta ad un’eccitazione non bianca, ma periodica, viene persa, ma può essere recuperata tramite differenti algoritmi, come descritto in seguito (predizione a lungo termine). Il non perfetto adattamento del codificatore allo spettro dell’ingresso fa si che lo spettro del segnale differenza sia colorato.
Da quanto detto, nell'ipotesi di predittore con ordine infinito e non considerando gli effetti della quantizzazione del segnale differenza, la codifica predittiva risulta perfettamente reversibile: il segnale ricostruito, cioè, coincide esattamente con l’ingresso. Requisito essenziale per la reversibilità della codifica differenziale è che la stima eseguita dal trasmittente sia analoga a quanto fatto in ricezione (fig. 5.27).
In tale contesto è necessario considerare l’effetto della degradazione dovuta alla quantizzazione del segnale differenza. In decodifica, infatti, il segnale ricostruito dalla stima e dal segnale differenza è inevitabilmente affetto da rumore di quantizzazione. Di conseguenza, anche le successive stime risultano alterate da tale rumore. Qualora in trasmissione la stima venisse fatta direttamente sui campioni del segnale (codifica ad anello aperto), il risultato della predizione risulterebbe differente quanto fatto in ricezione. Il segnale differenza trasmesso, quindi, non permetterebbe di ricostruire fedelmente l’ingresso. Per evitare tale disuniformità, è necessario eseguire la stima anche in trasmissione sulla base di un segnale ricostruito dalle stime precedenti corrette tramite il segnale differenza quantizzato (codifica ad anello chiuso). [p. 178 Fig. 5.27 - Codifica differenziale ad anello aperto e chiuso.
In ogni caso, il segnale differenza quantizzato porta ad un segnale ricostruito differente dall'originale. Indicando con x$_t$(n) e x$_r$(n) l’ingresso e l'uscita del sistema di codifica, con ${\hat {x}}(n)$ l’uscita del predittore e con d(n) e d'(n) il segnale differenza privo e affetto da rumore di quantizzazione e$_q$(n), risulta
| ${\begin{cases}d(n)=x_{t}(n)-{\hat {x}}(n)\\d'(n)=d(n)+e_{q}(n)\\x_{r}(n)={\hat {x}}(n)+d'(n)\end{cases}}\to x_{r}(n)=x_{t}(n)+e_{q}(n)$ | (5.125) |
Si può, quindi, affermare che l’unico contributo all'errore di codifica per una quantizzazione differenziale è dato dal rumore di quantizzazione.
L’ultimo aspetto che si vuole affrontare riguarda i criteri con i quali fissare la caratteristica di quantizzazione per il segnale differenza. Dato che il segnale differenza risulta essere rumore bianco, la quantizzazione da adottare può essere uniforme. Nell'ipotesi di quantizzazione uniforme e rapporto segnale rumore (e quindi ampiezza dei quanti) pari al caso di quantizzazione non differenziale, la compressione del segnale può avvenire, quindi, solo per una riduzione del numero dei livelli dovuta ad una riduzione degli estremi di [p. 179 Fig. 5.28 - Riduzione dei livelli del quantizzatore tramite codifica differenziale.
saturazione del quantizzatore (fig. 5.28). Tale riduzione dipende dal guadagno di predizione.
Per determinare il guadagno di predizione è necessario valutare la varianza del segnale differenza
| $\sigma _{d}^{2}=E\{[x(n)-{\hat {\ }}x(n)]^{2}\}$ | (5.126) |
Nel caso di predizione ottima, tale varianza coincide con il minimo del funzionale d’errore, per cui
| $\sigma _{d}^{2}=\sigma _{x}^{2}-\sum _{k=1}^{p}\alpha _{k}R(k)$ | (5.127) |
introducendo l'autocorrelazione normalizzata ρ(k) = R(k) / σ$_x$$^2$, il guadagno di predizione è pari a
| $G={\frac {\sigma _{x}^{2}}{\sigma _{d}^{2}}}={\frac {1}{1-\sum _{k=1}^{p}\alpha _{k}\rho (k)}}$ | (5.128) |
Il guadagno di predizione, dunque, è funzione dell’efficacia dello stimatore e, quindi, della correlazione del segnale. A tale proposito è necessario considerare che, nel caso del segnale telefonico, essendo questo filtrato passa banda, l’efficacia dello stimatore è ridotta rispetto al caso di segnali filtrati passa basso, per la mancanza delle componenti a frequenza inferiore (più [p. 180 Fig. 5.29 - Guadagno di predizione per predizione adattativa.
fortemente correlate). Inoltre l’efficienza della stima non può essere considerata stazionaria, in quanto risulta maggiore per suoni vocalizzati, caratterizzati da forme d’onda stabili e periodiche, rispetto a suoni non vocalizzati. Fissando la soglia di saturazione sul guadagno di predizione che si ha con suoni vocalizzati, comunque, non si hanno problemi di codifica in quanto, essendo i suoni non vocalizzati gli elementi del segnale ad ampiezza inferiore, questi ultimi non dovrebbero portare a fenomeni di saturazione con la riduzione della dinamica del quantizzatore.
Per segnale vocale, il guadagno di predizione per algoritmi di predizione adattativi in avanti migliora rispetto alla predizione con coefficienti costanti, raggiungendo un massimo di circa 12 dB con predittori di ordine pari all'ottavo (fig. 5.29). Aumentando ulteriormente l’ordine del predittore, non si notano incrementi apprezzabili. Nel caso di predizione all'indietro il guadagno si riduce di circa 1 dB [Jay84]. A parità di rapporto segnale/rumore con la codifica PCM, questo si traduce in una riduzione di due bit per campione, con un segnale differenza esprimibile su 6 bit. In tal modo, il flusso dati si riduce a 48 kb/s, rispetto ai 64 kb/s del logPCM. [p. 181 Fig. 5.30 - Errore di sovraccarico.
Per ridurre ulteriormente la componente granulare dell’errore di quantizzazione, è possibile adottare una quantizzazione non uniforme. Infatti, nel caso di predizione non ottima, il segnale differenza non è bianco. Nel caso di segnale vocale, la distribuzione dell’errore di predizione che si osserva è gaussiana, per cui è possibile adottare una quantizzazione non uniforme ottimizzata per tale tipo di distribuzione.
Considerando, infine, gli effetti dell’errore di saturazione nella quantizzazione del segnale differenza, si nota come esso si manifesti come una
Come già accennato, le prestazioni migliori di codificatori adattativi (sia per quanto riguarda la quantizzazione che per quanto riguarda la predizione) si ottengono tramite una loro combinazione (Adaptive Differential Pulse Code Modulation: ADPCM) (fig. 5.31). H codificatore relativo, applica al segnale differenza ottenuto dalla predizione una quantizzazione in grado di adattarsi alla dinamica dell’errore. Nella raccomandazione ITU-T G.721, il codificatore ADPCM utilizza, sia per il quantizzatore che per il predittore, un adattamento all'indietro, in modo tale che non vi è nessuna informazione aggiuntiva scambiata tra trasmittente e ricevente, al di fuori del segnale differenza.
Fig. 5.31 - Codifica ADPCM.
Dato che il codificatore risulta essere, in realtà, un transcoder, trasformando codici LogPCM in codici ADPCM e viceversa, il primo passo è quello di ottenere dalla codifica logaritmica una rappresentazione lineare s$_l$(k). Ottenuta questa, viene poi ricavata il segnale differenza d(k) dalla stima s$_e$(k) dell’ingresso, come
| $d(k)=s_{l}(k)-s_{e}(k)$ | (5.129) |
Per quanto riguarda la quantizzazione AQB del segnale differenza (fig. 5.32), la caratteristica del quantizzatore non è uniforme, ma risulta essere [p. 183 Fig. 5.32 - Quantizzazione adattativa per codifica ADPCM.
simile alla caratteristica ottima per segnali gaussiani [Jay76]. Dato che si utilizza come ingresso del quantizzatore il logaritmo del segnale differenza, l’adattamento del passo di quantizzazione
| $q(n)={\frac {X(n)}{\Delta (n)}}$ | (5.130) |
si trasforma dalla divisione per il A alla sottrazione di un fattore di scala di quantizzazione y(k). Il risultato I(k)
| $|I(k)|\leftarrow log_{2}|d(k)|-y(k)$ | (5.131) |
rappresenta l’uscita del codificatore ADPCM ed ha segno pari al segno dei campioni e modulo dato dalla tabella 5.3 (fig. 5.34). [p. 184
| Codifica log$_2$ | d(k) | - y(k) | | I(k) | | Decodifica log$_2$ | d(k) | - y(k) |
| [3.16, +∞) | 7 | 3.34 |
| [2.78,3.16) | 6 | 2.95 |
| [2.42, 2.78) | 5 | 2.59 |
| [2.04,2.42) | 4 | 2.23 |
| [1.58, 2.04) | 3 | 1.81 |
| [0.96, 1.58) | 2 | 1.29 |
| [- 0.005, 0.96) | 1 | 0.53 |
| (-∞, -0.005) | 0 | - 1.05 |
Tab. 5.3 - Codifica dell’uscita.
Il passo di quantizzazione y(k) è dato dalla combinazione di due componenti y$_u$(k) e y$_l$(k), ottimizzate per segnali che variano rapidamente (es.: voce) o lentamente (es.: trasmissioni dati in banda vocale con modulazione PSK). La componente y u (k) è ottenuta tramite una legge di tipo “robust”
| $\Delta (n)=M(|I(n-1)|)\ \Delta ^{1-\beta }(n-1)$ | (5.132) |
Dato che il passo di quantizzazione y(k) è espresso logaritmicamente, il moltiplicatore M si trasforma nella somma di un termine W, funzione dell’uscita I(k), secondo la relazione
* $y_{u}(k)=2^{-5}W[I(k)]+[1-2^{-5}]y(k)$
| $1.06\leq y_{u}(k)\leq 10.00$ | (5.133) |
La legge di corrispondenza tra W ed I è data dalla seguente tabella
| | I(k) | | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| W[I(k)] | 69.25 | 21.25 | 11.50 | 6.12 | 3.12 | 1.69 | 0.25 | -0.75 |
Tab. 5.4 - Moltiplicatori logaritmici.
a cui corrispondono i seguenti moltiplicatori $M=2^{\left(2^{-5}W\right)}$ [p. 185
| | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
| M$_i$ | 4.482 | 1.585 | 1.283 | 1.142 | 1.070 | 1.037 | 1.006 | 0.984 |
Tab. 5.5 - Moltiplicatori.
La componente y$_l$(k) è ottenuta filtrando la componente y$_u$(k) come
| $y_{l}(k)=[1-2^{-6}y_{l}(k-1)+2^{-6}y_{u}(k)$ | (5.134) |
Il contributo delle due componenti del passo di quantizzazione avviene secondo un fattore di velocità a$_l$(k) tramite la seguente relazione
| $y(k)=a_{l}(k)y_{u}(k-1)+[1-a_{l}(k)]y_{l}(k-1)$ | (5.135) |
a$_l$(k) assume valori compresi tra zero ed uno. Per quanto riguarda la legge secondo la quale è aggiornato a$_l$(k), innanzitutto esso è sottoposto ad un decadimento esponenziale del tipo
| $a(k)=[1-2^{-4}]a(k-1)$ | (5.136) |
Inoltre, il suo valore dipende dalla dinamica del segnale, ricavata da due medie a breve e lungo termine d$_{ms}$(k) e d$_{ml}$(k) ottenute come
* $d{ms}(k)=[1-2^{-5}]d{ms}(k-1)+2^{-5}F[I(k)]$
| $d{ms}(k)=[1-2^{-7}]d{ms}(k-1)+2^{-7}F[I(k)]$ | (5.137) |
dove la funzione F[I(k)] è descritta nella seguente tabella
| | I(k) | | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| F[I(k)] | 7 | 3 | 1 | 1 | 1 | 0 | 0 | 0 |
Tab. 5.6 - Correzione della dinamica.
Nel caso in cui il canale diventi poco attivo (y(k) < 3) o la differenza tra medie a breve (d$_{ms}$(k)) e lungo termine (d$_{ml}$(k)) del segnale d’uscita diventi eccessiva, cioè [p. 186
| $|d_{ms}(k)-d_{ml}(k)|\geq 2^{-3}d_{ml}(k)$ | (5.138) |
la legge di variazione del coefficiente di velocità viene modificata
| ${\begin{cases}a_{l}(k)=\left[1-2^{-4}\right]a(k-1)+2^{3}\\a_{l}(k)\leq 1\end{cases}}$ | (5.139) |
tendendo ad 1 e facendo così prendere il sopravvento alla componente y$_u$(k) del fattore di scala. Altrimenti a$_i$(k) decade verso lo zero, facendo così prendere il sopravvento alla componente y$_l$(k).
Passando alla predizione APB, essa opera sulla versione quantizzata della funzione differenza ricavata dall'uscita I(k)
| $d_{q}(k)=log_{2}^{-1}\left\{[log_{2}|d(k)|-y(k)]+y(k)\right\}$ | (5.140) |
Il predittore non è di tipo ARX, ma ad un filtro IIR a due poli, corrispondente ad un predittore del secondo ordine, è associato un filtro FIR a 6 zeri (fig. 5.33). Ciò è motivato principalmente dal rischio di instabilità del predittore a solo poli nel caso di errori di trasmissione o consistenti errori di quantizzazione, ma anche per un migliore adattamento allo spettro di segnali vocali e dati [Jay76]. La stima è data dalla somma dei contributi del filtro FIR ed IIR
| $s_{e}(k)=s_{ez}(k)+s_{ep}(k)$ | (5.141) |
I coefficienti di entrambi i filtri vengono adattati secondo l’algoritmo del gradiente sfruttando la cross-correlazione di polarità tra il segnale d’ingresso e di errore ed un decadimento esponenziale (per mitigare la presenza di errori)
| $\alpha _{k}^{(n+1)}=\lambda \alpha _{k}^{(n)}+\mu \ sgn[e(n)]\ sgn[x(n-k)]$ | (5.142) |
con λ = 255/256 e μ = 1/128. Per quanto riguarda il filtro IIR, la sua uscita costituisce la stima s e (k) del segnale. Essa viene calcolata in funzione dell’uscita del filtro FIR e del segnale ricostruito agli intervalli precedenti
| $s_{r}(k)=s_{e}(k)+d_{q}(k-i)$ | (5.143) |
secondo la relazione
| $s_{e}(k)=\sum _{i=1}^{2}a_{i}(k-1)s_{r}(k-i)+s_{ez}(k)$ | (5.144) |
L’algoritmo del gradiente per l’aggiornamento dei coefficienti del filtro IIR è applicato ad una funzione p(k), ottenuta eliminando dal segnale ricostruito il contributo del filtro stesso
| $p(k)=s_{ez}(k)+d_{q}(k)$ | (5.145) |
L’aggiornamento dei coefficienti del filtro IIR è poi ottenuto come
* ${\begin{cases}a_{2}(k)=\left[1-2^{-7}\right]a(k-1)+2^{-7}sgn[p(k)]sgn[p(k-1)]-f[a_{1}(k-1)]\ sgn[p(k)]sgn[p(k-1)]\\|a_{2}(k)|\leq 0.75\end{cases}}$
| ${\begin{cases}a_{1}(k)=\left[1-2^{-8}\right]a_{1}(k-1)+3\cdot 2^{-8}sgn[p(k)]sgn[p(k-1)]\\|a_{1}(k)|\leq 1-2^{-4}-a_{2}(k)\end{cases}}$ | (5.146) |
| ${\begin{cases}f(a_{i})={\begin{cases}4a_{1}&se\ |a_{1}|\leq 1/2\\2sgn(a_{1})&se\ |a_{1}|>1/2\end{cases}}\\sgn(0)=+1\end{cases}}$ | (5.147) |
Per quanto riguarda l’uscita s$_{ez}$(k) del filtro FIR, essa è data da
| $s_{ez}=\sum _{i=1}^{6}b_{i}(k-1)d_{q}(k-i)$ | (5.148) |
Per l’aggiornamento dei coefficienti b$_i$(k), non sarebbe possibile applicare l’LMS, che è stato sviluppato per un sistema ARX. Se si ripetono, però, gli stessi passi che hanno portato all’LMS nel caso di sistema MA, si ottiene una relazione del tipo
| $\alpha _{k}^{(n+1)}=\lambda \alpha _{k}^{(n)}+\mu \ sgn[x(n)]\ sgn[x(n-k)]$ | (5.149) |
dove si nota che l’aggiornamento è funzione del gradiente tra il segnale x(n) e il segnale al nodo i-esimo del filtro x(n - i). Nel nostro caso, considerando il segnale differenza d$_q$(k), si ottiene
| ${\begin{cases}b_{i}(k)=\left[1-2^{-8}\right]b_{i}(k-1)+2^{-7}sgn[d_{q}(k)]sgn[d_{q}(k-i)];\ i=1,2,\ldots ,6\\-2\leq |b_{i}(k)|\leq +2\end{cases}}$ | (5.150) |
Con tale codifica, a parità di rapporto segnale/rumore, è guadagno di predizione è tale da ridurre il numero di bit per campione a 4 bit, con un throughput di 32 kb/s contro i 48 kb/s del DPCM.
Come già visto, nella codifica differenziale Terrore di codifica coincide con il rumore di quantizzazione. La distribuzione uniforme dello spettro del rumore di quantizzazione, però, non risulta ottimale dal punto di vista della percezione. In tal modo, infatti, il rapporto segnale rumore non risulterebbe costante in frequenza. Nel caso di segnale vocale, ad esempio, questo [p. 189 migliorerebbe in corrispondenza delle componenti armoniche a più alta energia, cioè le formanti, e viceversa. Sebbene la parte dello spettro relativo alle formante è effettivamente la più importante dal punto di vista della percezione, tale andamento del rapporto SN non sfrutta gli effetti di mascheramento esistenti nell'apparato uditivo. Questi permetterebbero un aumento del rumore di quantizzazione in corrispondenza delle componenti ad energia maggiore dello spettro, senza una degradazione percettibile del segnale.
Riprendendo lo schema di un codificatore differenziale ad anello chiuso (fig. 5.35), questo può essere interpretato come quello di un codificatore PCM che lavora su una versione “compressa” in frequenza dell’ingresso, ottenuta tramite un filtro con una funzione di trasferimento complementare allo spettro del segnale. La “decompressione” è, poi, eseguita in decodifica. Per analizzare l’effetto di tali trasformazioni sullo spettro del rumore di quantizzazione, è opportuno riscrivere l’espressione del codificatore differenziale ad anello chiuso esplicitando il termine relativo al rumore
* $d(n)=x(n)-{\hat {x}}(n)=x(n)-\sum _{j=1}^{p}\alpha _{j}x'(n-j)$
| $=x(n)-\sum _{j=1}^{p}\alpha _{j}x(n-j)-\sum _{j=1}^{p}\alpha _{j}e_{q}(n-j)$ | (5.151) |
Si nota che in una configurazione ad anello chiuso, il rumore è assoggettato alle stesse trasformazioni di compressione e decompressione che vengono eseguite sul segnale e, quindi, il suo spettro in uscita torna ad essere piatto. Un modo per non avere in uscita un rumore con spettro piatto (noise shaping) può essere quello di conservare l’effetto di sagomatura del codificatore, eliminando, però, il suo filtraggio inverso in codifica. Per il codificatore, dunque, dovrebbe valere una legge del tipo
| $d(n)=x(n)-\sum _{j=1}^{p}\alpha _{j}x(n-j)+e_{q}(n)$ | (5.152) |
che vuol dire passare ad uno schema di codifica ad anello aperto. In tal caso, sommando al segnale compresso un rumore di quantizzazione a spettro piatto. [p. 190 Fig. 5.34 - Segnale derivante da una codifica ADPCM. [p. 191 Fig. 5.35 - Noise Feedback Coding come caso particolare di codifiche differenziali.
questo verrà poi sagomato in frequenza in fase di decodifica, comprimendolo nelle zone ad energia minore ed esaltandolo nelle zone ad energia maggiore (fig. 5.36). In questo modo si ottiene la voluta normalizzazione del rapporto segnale rumore.
Ovviamente, tra tali due estremi (filtraggio del rumore con l’inverso dello spettro del segnale o non filtraggio) esistono soluzioni intermedie nelle quali il rumore di quantizzazione viene filtrato indipendentemente dallo spettro del segnale. Tali codifiche vengono indicate come Noise Feed-back Coding (NFC).
L’indipendenza dallo spettro del segnale del filtro per la sagomatura in frequenza del rumore (noise-weighting filter) introduce un ulteriore parametro [p. 192 per l’ottimizzazione della qualità di codifica. È da notare come l’incremento di complessità del codificatore avvenga esclusivamente in trasmissione, in quanto il decodificatore non è interessato dalla procedura di sagomatura.
Calcolando la potenza del segnale di errore in caso di sagomatura si ottiene un leggero incremento rispetto al caso di spettro uniforme. Anche se la potenza di rumore globale risulta essere aumentata, gli effetti di mascheramento da parte dell’apparato uditivo comportano comunque un miglioramento della qualità percepita. Fig. 5.36 - Sagomatura del rumore di quantizzazione.
Nella trattazione relativa alla conversione A/D e D/A con quantizzazione uniforme è stato considerato un campionamento a frequenza f s pari a quella di Nyquist. Come risultato di tale campionamento si ha, innanzitutto, la periodicizzazione dello spettro del segnale a multipli della frequenza di campionamento. D’altro canto si genera un rumore di quantizzazione, caratterizzato da uno spettro approssimativamente piatto. La potenza del rumore di quantizzazione che cade nella banda del segnale è pari a A 2 /12, con densità spettrale di potenza costante e pari a
| ${\frac {\Delta ^{2}}{12f_{s}}}$ | (5.153) |
Sia lo spettro del segnale che la densità spettrale del rumore dipendono, dunque, dalla frequenza di campionamento. Se questa viene aumentata, ad esempio campionando ad una frequenza (N f s ) multipla di quella di Nyquist (sovracampionamento), un primo risultato che si ottiene è che la rappresentazione in frequenza del segnale campionato presenterà repliche del segnale nell'intorno di una frequenza di campionamento maggiore e quindi più spaziate tra loro. Di conseguenza, è possibile adottare filtri con zone di transizione più ampie, riducendo le distorsioni in banda introdotti dagli stessi.
Il vantaggio maggiore del sovracampionamento, però, si ha dal punto di vista della riduzione del rumore di quantizzazione. Essendo il livello della densità spettrale di potenza inversamente proporzionale alla frequenza di campionamento, essa si riduce proporzionalmente al fattore di sovracampionamento N adottato (fig. 5.37). Filtrando il segnale al di fuori della banda del segnale, la potenza di rumore che cade nella banda stessa viene, quindi, ridotta. Il rumore di quantizzazione che si ottiene sovracampionando è quello tipico di convertitori ad un maggiore numero di bit di quanto effettivamente utilizzato nel convertitore. Viceversa, a parità di rumore di quantizzazione, il sovracampionamento permette di ridurre il numero di bit del convertitore. Dato [p. 194 che la semplificazione della parte analogica del convertitore compensa l’incremento di complessità dovuto alla maggiore frequenza di lavoro, la conversione tramite sovracampionamento risulta tecnologicamente meno critica e quindi più economici.
Trascurando per il momento un’eventuale riduzione di bit per campione, al fine di mantenere costante il flusso numerico prodotto è necessario eseguire due conversioni della frequenza di campionamento [Cro83](fig. 5.38). Innanzitutto è necessario ridurre il numero di campioni al secondo dopo la conversione A/D (decimazione) e poi risovracampionare prima della conversione D/A (interpolazione). Concettualmente, la decimazione consiste in un nuovo campionamento del segnale alla frequenza di Nyquist. Essendo il ricampionamento in realtà eseguito eliminando un certo numero di campioni, come
| $y(m)=w(N\times m)$ | (5.154) |
è necessario che il fattore di sovracampionamento N sia un intero. Il segnale da decimare w(n) è ottenuto dall'ingresso sovracampionato sottoposto ad un filtraggio numerico passa basso, al fine di evitare fenomeni di aliasing
| $w(n)=\sum _{k=-\infty }^{\infty }h(k)\ x(n-k)$ | (5.155) |
per cui
| $y(m)=\sum _{k=-\infty }^{\infty }h(k)\ x(N\times m-k)=\sum _{n=-\infty }^{\infty }h(N\times m-n)\ x(n)$ | (5.156) |
Per quanto riguarda la conversione D/A, invece, è necessario aumentare la frequenza di campionamento prima della trasformazione in analogico. Questo può essere ottenuto inserendo tra campioni consecutivi del segnale un numero di campioni nulli pari al fattore di sovracampionamento
| $w(m)={\begin{cases}x\left({\frac {m}{N}}\right),&m=\pm N,\pm 2N,\ldots \\0&altrimenti\end{cases}}$ | (5.157) |
Tali campioni fittizi vengono poi corretti effettuando un’interpolazione con i campioni reali, tramite un filtraggio numerico passa basso con frequenza di taglio pari a quella di sovracampionamento [p. 195
| $y(m)=\sum _{k=-\infty }^{\infty }h(m-k)\ x\left({\frac {k}{N}}\right)=\sum _{n=-\infty }^{\infty }h(m-N\times n)\ x(n)$ | (5.158) |
In tal modo vengono eliminate le repliche introdotte dal sovracampionamento stesso. Per quanto riguarda l’implementazione dei filtri FIR coinvolti nella conversione di frequenza di campionamento, si rimanda in [Appendice D].
Oltre ai benefici tecnologici precedentemente evidenziati, il sovracampionamento ha risvolti positivi anche per quanto riguarda la codifica del segnale. Sovracampionando il segnale fino ad arrivare a frequenze di campionamento di ordini di grandezza superiori a quella di Nyquist (es.: 10 MHz per segnale audio) si ottengono due tipi di vantaggi. Da un lato, a parità di rumore si ha una riduzione del numero di bit necessari per la quantizzazione, Dall'altro si aumenta la correlazione tra campioni. Infatti la funzione di autocorrelazione del segnale campionato è data dal campionamento della funzione di autocorrelazione del segnale continuo. Aumentando la frequenza di campionamento, se ne infittiscono i campioni e, di conseguenza, si riduce l’ampiezza delle variazioni tra suoi campioni adiacenti. Un aumento della correlazione del segnale comporta un aumento del guadagno di predizione. Infatti, riprendendo l’espressione del guadagno
| $G={\frac {1}{1-\sum _{k=1}^{p}\alpha _{k}\rho (k)}}$ | (5.159) |
e riscrivendola per p=1, con il coefficiente di predizione pari a α$_1$ = R(1) / R(0) = ρ(1) si ottiene
| $G={\frac {1}{1-\rho ^{2}(1)}}$ | (5.160) |
da cui si osserva che, per p — > 1, il guadagno tende all'infinito, con la conseguente riduzione di dinamica del segnale differenza. La limitazione ad un [p. 196 Fig. 5.38 - Effetti di un sovracampionamento per N=2 nel dominio del tempo e della frequenza. [p. 197 predittore del primo ordine è giustificata dall'elevata efficienza del predittore stesso ed in linea con la semplicità del codificatore (fig. 5.39).
Fig. 5.39 - Struttura di un codificatore DM lineare.
L’azione combinata di tali due fattori porta ad una riduzione progressiva del numero di livelli di quantizzazione all'aumentare della frequenza di campionamento, fino ad arrivare a rendere possibile la codifica del segnale su di un solo bit. In tale codifica, detta modulazione delta (Delta Modulation: DM), non è necessario utilizzare un convertitore A/D per la codifica del segnale differenza, in quanto è necessario rilevare solamente il suo segno. Ciò riduce la componente analogica del codificatore ad un semplice comparatore. La codifica e decodifica DM con un predittore del primo ordine avviene, dunque, con i seguenti passi
| ${\begin{cases}{\hat {x}}(n)=\alpha \ x(n-1)\\d(n)=sgn[x(n)-{\hat {x}}(n)]\times \Delta \\x(n)={\hat {x}}(n)+d(n)\end{cases}}$ | (5.161) |
Siccome α ≈ 1, la codifica DM può essere semplificata in
| ${\begin{cases}d(n)=sgn[x(n)-x(n-1)]\times \Delta \\x(n)=x(n-1)+d(n)\end{cases}}$ | (5.162) |
da cui si vede che la codifica si basa sulle differenze tra campioni adiacenti e la decodifica si ottiene semplicemente integrando la funzione d’errore.
Per le caratteristiche dell’errore di codifica nella DM, valgono tutte le considerazioni fatte a proposito del DPCM. Per quanto riguarda l’ampiezza del [p. 198 quanto, affinché la codifica non dia origine a slope-overload, esso deve soddisfare la seguente relazione
| ${\frac {\Delta }{T}}\geq max|{\frac {d\ x(t)}{dt}}|$ | (5.163) |
Con tale modulazione, però, nel caso di segnale d’ingresso costante si introduce una forma ineliminabile di idle channel noise (fig. 5.40). Infatti, in corrispondenza di un simile ingresso, l’uscita dal codificatore non può rimanere costantemente nulla, ma oscillerà con un’ampiezza pari ad un quanto.
Fig. 5.40 - Rumore di sovraccarico e granulare per modulazione delta lineare.
Entrambi i problemi di slope-overload e di idle channel noise possono essere attenuati ricorrendo, anche per la modulazione delta come per il DPMC, ad una quantizzazione adattati va (Adaptive DM: ADM).
Dalla modulazione delta deriva la modulazione sigma-delta, che permette di migliorare ulteriormente il rapporto segnale-rumore della conversione tramite tecniche di trasferimento in frequenza della potenza del rumore di campionamento (noise shaping). La chiave di tale tecnica risiede nella riorganizzazione dei blocchi funzionali che compongono un modulatore delta (fig. 5.41). In particolare, il primo passo è il trasferimento dell’integratore in ricezione (posto prima del filtro d’uscita), in ingresso al codificatore, data la linearità dello stesso. Il secondo passo consiste nel trasferimento di entrambi gli integratori (quello di ingresso e quello per il calcolo della funzione d’errore) all'interno dell’anello del quantizzatore. Pur non variando la funzione globale di tale codificatore, in tal modo si rende la funzione di trasferimento del rumore dipendente dalla frequenza. Infatti, non considerando l’effetto del rumore di quantizzazione, per il segnale si ha la seguente funzione di trasferimento
* $Y(s)={\frac {X(s)-Y(s)}{s}}$
| ${\frac {Y(s)}{X(s)}}={\frac {\frac {1}{s}}{1+{\frac {1}{s}}}}={\frac {1}{s+1}}$ | (5.164) |
mentre per il rumore, con ingresso nullo, si ha
* $Y(s)={\frac {-Y(s)}{s}}+N(s)$
| ${\frac {Y(s)}{N(s)}}={\frac {1}{1+{\frac {1}{s}}}}={\frac {s}{s+1}}$ | (5.165) |
Dall'analisi ti queste funzioni di trasferimento si nota come il segnale risulti filtrato passa basso, mentre il rumore passa alto (fig. 5.42). Dato che le componenti a frequenza maggiore del rumore saranno eliminate dal filtro d’interpolazione d’uscita, in tal modo si riduce ulteriormente la potenza del rumore di quantizzazione che cade nella banda del segnale. [p. 200 Fig. 5.41 - Modulazione sigma delta.
La semplicità realizzativa di un codificatore DM è essenziale per il raggiungimento delle elevate frequenze di campionamento richieste. D’altra parte la riduzione del rumore di quantizzazione permesso da convertitori sigma-delta e l’eliminazione delle distorsioni introdotte da convertitori A/D e D/A di codificatori PCM lineari, fanno si che anche per la codifica PCM lineare si preferisca eseguire una doppia conversione analogico-DM e DM-PCM.
Il problema della conversione DM-PCM si riconduce al problema di trasformazione della frequenza di campionamento di un segnale numerico, già introdotto a proposito del sovracampionamento. La conversione DM-PCM, in particolare, consiste nella decimazione del segnale DM, preceduto da un filtraggio numerico passa basso. Durante tale filtraggio viene eseguito anche l’incremento di bit per campione con i quali viene espresso il codice. [p. 201 Fig. 5.42 - Densità spettrale di potenza per codificatori PCM, DM e Sigma-Delta.
Dato, però, che i campioni DM possono assumere solamente due valori, la conversione può essere ottenuta semplicemente tramite un contatore con un numero di bit pari a quelli della codifica PCM, il clock del quale è pari a quello del flusso DM e controllo up/down ottenuto dal valore dei bit trasmessi.
Il tipo di predizione precedentemente esposta viene definita predizione a breve termine (p < 12) ed è valida per qualsiasi tipo di segnale. Il problema della predizione può essere affrontato in modo sostanzialmente differente in presenza di segnali periodici, come per i suoni vocalizzati nel caso della voce. È possibile, infatti, adottare una predizione a lungo termine che tenti di determinare il valore del campione prossimo in funzione del corrispondente campione del periodo precedente (fig. 5.43). Ciò si attua tramite una predizione del tipo
| ${\hat {x}}(n)=\beta \ x(n-N)$ | (5.166) |
dove N (20 < N < 120) coincide con il numero di campioni presenti in un periodo, mentre (3 rappresenta le variazioni di ampiezza tra periodi adiacenti. Per l'individuazione del valore della costante N (pitch prediction) è possibile, ad esempio, ricorrere all'analisi della funzione di autocorrelazione del segnale. Considerando segnali periodici stazionari, infatti, la funzione di autoconrelazione, stimata da un blocco di M campioni come
| $R(k)=\sum _{n=0}^{M-I}x(n)\ x(n+k)$ | (5.167) |
è una funzione periodica con lo stesso periodo del segnale. Per segnali periodici quasi stazionari, invece, essa assume periodicamente valori molto prossimi a R(0). Analizzando l’andamento della R(k), quindi, è possibile ottenere il periodo del segnale N come distanza del primo massimo relativo dall’origine, calcolata in numero di campioni. Tale analisi è semplificata se, oltre ad eseguire sul blocco di campioni un filtraggio passa basso al di sotto del kHz, essi vengono anche “tagliati” in ampiezza, lasciando passare solo la parte del segnale di livello maggiore.
Per il calcolo del fattore di guadagno (3, si ricorre alla minimizzazione rispetto a questo parametro dell’errore quadratico
| $E=\sum _{n}[x(n)-{\hat {x}}(n-N)]^{2}$ | (5.168) |
$\partial E/\partial \beta$
| $\beta ={\frac {E[x(n)\ x(n-N)]}{E[x^{2}(n-N)]}}$ | (5.169) |
La predizione a lungo termine è solitamente associata una predizione a breve termine e la combinazione delle due è detta Adaptive Predictive Coding (APC) (fig. 5.44). In tal caso la stima del segnale d’ingresso è ottenuta come
| ${\hat {x}}(n)=\sum _{k=1}^{p}\alpha _{k}x(n-k)+\beta \left[x(n-N)-\sum _{k=1}^{p}\alpha _{k}\ x(n-k-N)\right]$ | (5.170) |
Fig. 5.44 - Codifica APC.
La giustificazione della combinazione di predizione a breve e lungo termine deriva dal fatto che il residuo della prima nel caso di segnali vocalizzati è composto da un treno periodico di impulsi, essendo legato all'eccitazione del modello ARX della sorgente (fig. 5.45). Sull'ampiezza di tali impulsi è fissata [p. 204 Fig. 5.45 - Residui di predizione a breve e a lungo termine.
l’ampiezza del livello di saturazione del quantizzatore e, quindi, il numero di bit necessari per la codifica. Tali limiti, quindi, risultano sovradimensionati rispetto alla media dei campioni, normalmente di ampiezza modesta. Eliminando tali impulsi, quindi, è possibile comprimere ulteriormente il flusso numerico. [p. 205 Guardando il codificatore APC come uno stimatore dello spettro del segnale d’ingresso e, quindi, dell’individuazione del modello digitale della sorgente, si nota come la componente a breve termine del predittore sia in grado di ricostruire l’inviluppo dello spettro e quindi il contributo del filtro ARX, mentre la componente a lungo term in e è in grado di ricostruire la variazione più fine dello stesso, legata all'eccitazione.
Dal punto di vista dell’implementazione, dato che la determinazione congiunta delle tre variabili N, P e oc k risulta essere difficoltosa, tipicamente viene ottimizzata dapprima la predizione a breve e poi quella a lungo termine. Inoltre, il predittore a lungo termine non può essere che a blocchi. Volendo, infatti, trasmettere per ogni campione i due parametri N e (5 necessari per la stima, tale codifica comporterebbe un’espansione del flusso generato dalla sorgente. Dal punto di vista dell’efficacia della predizione, però, questo non rappresenta un limite in quanto, limitando la dimensione dei blocchi all'interno di un periodo del segnale (es.: 40 campioni), i due parametri dovrebbero mantenersi sufficientemente costanti all'interno del blocco stesso. D’altra parte, essendo l’APC utilizzata per il raggiungimento di livelli di compressione elevati, anche il predittore a breve termine è tipicamente a blocchi.