...

codifica del segnale vocale

by user

on
Category: Documents
4

views

Report

Comments

Transcript

codifica del segnale vocale
L. Piazzo, M. G. di Benedetto
CODIFICA DEL SEGNALE VOCALE
Roma, dicembre 1998
1. Segnale vocale - Generalita'
1
1.1 Produzione del segnale vocale..................................................................................1
1.2 Classificazione e caratteristiche dei suoni ...............................................................2
1.3 Spettro a breve termine ...........................................................................................3
2. Codifica del segnale vocale - Generalita'
5
2.1 Codificatori e qualita' utilizzate ..............................................................................6
2.2 Valutazione delle prestazioni di un codificatore .....................................................7
3. Codifica LPC
9
3.1 Predizione lineare.....................................................................................................9
3.2 Schema di un codificatore LPC...............................................................................11
4. Alcuni Codificatori LPC
14
4.1 APC (Adaptive Predictive Coder) e ADPCM (Adaptive Differential PCM).........14
4.2 Vocoder (Voice-Coder) LPC ...................................................................................16
4.3 Codificatori ABS (Analysis By Synthesis) ..............................................................17
5. Il codificatore LTP-RPE
21
5.1 Preprocessing e LPC................................................................................................21
5.2 LTP (Long Term Prediction) ..................................................................................22
5.3 RPE (Regular Pulse Excitation) ..............................................................................23
5.4 Decodificatore ..........................................................................................................23
6. Bibliografia
25
Codifica del Segnale Vocale
1.
Segnale vocale - Generalita'
1.1 Produzione del segnale vocale
La comunicazione orale fra due persone avviene per mezzo della trasmissione di un
segnale vocale dal parlatore all' ascoltatore. Il segnale viene generato dal parlatore tramite il
suo "sistema di produzione della voce", costituito dall' insieme degli "organi di fonazione",
cioe' da tutti gli organi che intervengono in qualche maniera nella produzione (lingua, corde
vocali, polmoni etc. etc.). Tramite il sistema di produzione, il parlatore induce una
variazione nella pressione acustica dell' aria; questa variazione costituisce il segnale vocale
propriamente detto. Il segnale si propaga ed e' ricevuto dall' ascoltatore tramite il suo
"sistema di percezione della voce", costituito dall' insieme degli organi che intervengono in
qualche maniera nell' ascolto (orecchio esterno, timpano etc. etc.).
Cavita' nasale
Cavita' orale
Narici
Velo palatino
Labbra
Glottide (Corde vocali)
Lingua
Polmoni
Figura 1: schema dell' apparato di produzione della voce.
Il sistema di produzione e' rappresentato schematicamente in figura 1. Per generare un
segnale vocale, la massa d'aria contenuta nei polmoni viene separata dalla massa d'aria
esterna, tramite l'occlusione di uno o piu' punti del collegamento fra le due, e compressa: si
crea cosi' una differenza di pressione fra le due masse. Successivamente, l'occlusione viene
parzialmente aperta, permettendo all' aria contenuta nei polmoni di fluire verso l'esterno e
creare una variazione (nel tempo e nello spazio) della pressione acustica. Nell' occlusione e'
possibile identificare la "sorgente del suono", ovvero il punto in cui inizia a variare la
pressione acustica. Nelle immediate vicinanze dell' occlusione la pressione acustica sara' una
funzione del tempo: questa forma d'onda e' detta "segnale di sorgente".
La sorgente puo' essere realizzata in primo luogo alle corde vocali (due membrane
situate nella glottide) che, se tese si oppongono alla fuoriuscita dell' aria ed entrano in
1
Codifica del Segnale Vocale
vibrazione. Se invece le corde vocali sono rilassate, l' aria fluisce liberamente attraverso di
esse e la sorgente e' realizzata occludendo il tratto in qualche altro punto.
Il segnale di sorgente si propaga verso l'esterno ed attraversa il tratto vocale,
composto da due cavita', quella orale e quella nasale. Il segnale viene modificato dal
passaggio per queste cavita', la cui forma e dimensioni dipendono dalla posizione dei vari
organi di fonazione e sono controllate dal parlatore; in particolare, la cavita' nasale puo'
essere del tutto esculsa tramite l'innalzamento del velo palatino (e in questo caso il segnale
non avra' alcuna componente nasale). Il segnale giunge infine alle labbra ed alle narici e da
qui viene irradiato nello spazio.
1.2 Classificazione e caratteristiche dei suoni
Il segnale vocale e’ il supporto fisico del messaggio linguistico che si forma nella
mente di un parlatore. Tale messaggio linguistico e’ costituito dalla successione di unita’
fonetiche (fonemi) caratteristici di una lingua data. Nella produzione di voce, il parlatore
traduce ogni fonema in una serie di "comandi articolatori", trasmessi dal cervello agli organi
di fonazione, che risultano nella emissione di una successione di "suoni" diversi,
opportunamente concatenati a causa dell’ inerzia degli articolatori stessi. Ad ogni fonema
corrisponde dunque, a livello acustico, un suono dotato di caratteristiche specifiche.
Una prima classificazione dei suoni li suddivide in sonori e sordi, a seconda che la
sorgente del suono sia costituita o no dalle corde vocali.
Un suono sonoro e’ prodotto quando le corde vocali sono tese, e quindi entrano in
vibrazione al passaggio dell’ aria, aprendosi e chiudendosi regolarmente. Nel caso dei suoni
sonori il segnale di sorgente e' una sequenza di forme d'onda elementari (impulsi glottali) ed
il segnale vocale ha una struttura pseudo-periodica, il cui periodo (pari alla distanza
temporale fra due aperture successive delle corde vocali) e' detto periodo di pitch. I suoni
sonori sono ulteriormente classificati in base all'organo di fonazione che da' il maggior
contributo alla formazione del suono e/o al tipo di suono prodotto .
Figura 2: esempio di segnale vocale.
Un suono sordo e’ prodotto quando le corde vocali sono aperte, e quindi l'aria fluisce
liberamente dai polmoni attraverso la glottide. Nel caso dei suoni sordi la sorgente del
suono e' una costrizione del tratto vocale, che provoca un moto turbolento e caotico delle
2
Codifica del Segnale Vocale
molecole del flusso d'aria che la attraversa. Il segnale di sorgente e’ in questo caso di tipo
rumoroso. Anche i suoni sordi sono ulteriormente classificabili in base all'organo di
fonazione che da' il maggior contributo alla formazione del suono o in base al modo di
articolazione.
Le due sorgenti possono essere infine entrambe presenti, e dare luogo a suoni misti
(per esempio nella "g" di "viaggio" le corde vocali sono tese e vibrano, ma la lingua e'
schiacciata sul palato e forma una costrizione che provoca la sovrapposizione al segnale
pseudo-periodico di una componente di tipo rumore).
In figura 2 e' riportato un esempio di segnale vocale, in cui si distinguono una prima
parte sonora ed una seconda sorda.
1.3 Spettro a breve termine
Il segnale vocale non e' un segnale stazionario: le caratteristiche del segnale variano
rapidamente nel tempo e si modificano a seconda del particolare suono emesso. All' interno
di uno stesso suono, il segnale puo' essere, con buona approssimazione, considerato
stazionario per durate di circa 10-30 msec. Su finestre temporali di questa durata ha quindi
senso effettuare una analisi spettrale per esaminare come l'energia si distribuisce alle varie
frequenze, e si parla di "Spettro di energia a breve termine". E' pero' piu' comodo pensare
che il tratto finestrato sia ottenuto da un segnale stazionario su tutto l'asse dei tempi, con
caratteristiche statistiche uguali a quelle del tratto finestrato, e considerare lo spettro di
densita' di potenza di questo segnale come spettro della finestra. Lo spettro di energia a
breve termine si ottiene dalla convoluzione di questo spettro con il modulo quadro della
trasformata della finestra.
Lo spettro di un segmento di segnale e' determinato dallo spettro del segnale di
sorgente e dalla conformazione del tratto vocale. Il tratto vocale agisce sul segnale di
sorgente come un filtro, la cui funzione di trasferimento (variabile a seconda della
conformazione del tratto) presenta un certo numero di picchi che corrispondono, nel
sistema fisico, alle frequenze di risonanza o “formanti” del sistema. Lo spettro del segnale
finale e' ottenuto dalla moltiplicazione dello spettro del segnale di sorgente con lo spettro
(modulo quadro della funzione di trasferimento) del tratto vocale.
L' andamento spettrale e' nettamente diverso a seconda che il suono sia sonoro o
sordo. Per suoni sonori, il segnale di sorgente e' periodico (o quasi), quindi il suo spettro e'
a righe, ed ha un andamento genericamente passabasso (maggiore energia alle basse
frequenze); lo spettro e' riportato in figura 3a assieme al suo inviluppo. La distanza fra due
righe e' pari all' inverso del periodo di pitch ed e' detta frequenza di pitch. Lo spettro del
segnale finale, dopo il passaggio attraverso il tratto vocale, e’ mostrato in figura 3b assieme
al suo inviluppo: si notino i picchi dell' inviluppo in corrispondenza delle frequenze formanti.
Lo spettro puo' avere componenti fino ad una ventina di Khz, ma la maggior parte dell'
energia e' concentrata nei primi 4 Khz.
Per suoni sordi lo spettro del segnale di sorgente non e’ a righe ma continuo, visto che
tale segnale non e’ periodico. Di solito i suoni sordi presentano maggiore energia alle alte
frequenze rispetto ai suoni sonori. Anche in questo caso caso il tratto vocale puo' esaltare o
attenuare alcune frequenze e lo spettro del segnale emesso assume l'andamento mostrato in
3
Codifica del Segnale Vocale
figura 3c. Lo spettro puo' avere componenti fino ad una ventina di Khz, ma la maggior
parte dell' energia e' concentrata nei primi 4 Khz.
Formanti
Frequenza di pitch
f (Hz)
a)
f (Hz)
b)
f (Hz)
c)
Figura 3: spettri a) del segnale di sorgente sonoro, b) di un suono sonoro, c) di un suono sordo.
Come e’ noto, ogni segnale di energia puo' essere ottenuto come somma (integrale) di
un certo numero di sinusoidi con ampiezza e fase opportuna. Lo spettro di energia di un
segnale da' informazione sulla ampiezza di queste sinusoidi, ma non sulle loro fasi. Le fasi
sono descritte dallo spettro di fase, che e' necessario per una ricostruzione esatta della
forma d'onda. Una importante proprieta' del sistema di percezione umano e' che l'orecchio,
nella distinzione dei diversi suoni, e' poco sensibile allo spettro di fase, mentre e' molto
sensibile allo spettro di energia. In altre parole segnali con lo stesso spettro di energia
vengono percepiti come appartenenti allo stesso suono, anche se lo spettro di fase e'
completamente diverso e quindi le forme d'onda non si assomigliano affatto. Questa
proprieta', come vedremo, puo' essere utilmente sfruttata nella compressione del segnale
vocale.
4
Codifica del Segnale Vocale
2.
Codifica del segnale vocale - Generalita'
La compressione del segnale vocale e' resa possibile dalla rappresentazione digitale del
segnale. E' noto che un segnale limitato in banda (come e' il segnale vocale) puo' essere
rappresentato dalla sequenza dei suoi campioni quantizzati; il numero di bit usati nella
quantizzazione di un campione e la frequenza di campionamento determinano il numero di
bit al secondo necessari per la rappresentazione. Per compressione del segnale si intende un
metodo che permette di passare da una rappresentazione digitale che richiede un certo
numero di bit/sec ad una diversa, che ne richiede meno. In linguaggio tecnico, il termine
"codifica" e' sinonimo di compressione. Nella teoria dell' informazione si utilizza il termine
"codifica di sorgente". Un compressore, dunque, a partire da un segnale originario,
rappresentato con un certo numero di bit/sec, ne ottiene una rappresentazione piu'
compatta, detta "segnale codificato" o compresso. Il segnale compresso viene trasmesso (o
memorizzato) in luogo del segnale originale, ottenendo in questo modo un risparmio sulla
banda necessaria alla trasmissione (o sulla quantita' di memoria usata). In ricezione il
segnale viene decompresso, per produrre un segnale simile ma non necessariamente identico
al segnale originale, che e' detto ancora codificato o "sintetico". La quantita' di bit/sec
necessari per rappresentare il segnale compresso viene detta "velocita' di trasmissione" del
codificatore, in quanto coincide con la velocita' di trasmissione del sistema, ed e' uno dei
principali parametri che lo caratterizzano. Un compressore, come mostrato in figura 4, e'
quindi diviso in due parti: il codificatore propriamente detto, al lato trasmissione, ed un
decodificatore, al lato ricezione. Nella pratica un compressore e' realizzato tramite un
elaboratore numerico che lo implementa; per compressori real-time di solito viene usato un
DSP (Digital Signal Processor), un processore specializzato nella elaborazione di segnali.
Segnale originale
Codificatore
Segnale
compresso
o codificato
Decodificatore
Segnale
sintetico
o codificato
Canale
Trasmissione
Ricezione
Figura 4: schema di un codificatore.
I compressori (per segnali in generale, non solo per segnali vocali) si dividono in due
grandi classi: con e senza perdite. Un compressore senza perdite produce una nuova
rappresentazione del segnale dalla quale e' possibile ricostruire perfettamente il segnale di
partenza; un compressore con perdite invece non permette di ricostruire il segnale di
partenza in modo esatto, ma solo approssimato (introduce, dunque, una perdita di
5
Codifica del Segnale Vocale
informazione). Naturalmente, accettando delle perdite e' possibile ottenere dei fattori di
compressione molto maggiori che nel caso senza perdite. A seconda del tipo di segnale una
perdita sara' tollerabile o meno: per esempio se il segnale da trasmettere rappresenta un
programma eseguibile da un elaboratore e' chiaro che la codifica dovra' essere senza perdite,
infatti anche un solo bit modificato puo' rendere il programma inutilizzabile; viceversa
quando il segnale e' vocale o visivo e' tollerabile una differenza fra il segnale originale e
quello codificato, infatti l' occhio o l'orecchio umano sono comunque in grado di utilizzare il
segnale a patto che la distorsione non sia eccessiva. Un esempio di codifica senza perdite e'
il metodo di Huffman, un esempio di codifica con perdite e' lo standard JPEG per la
compressione di immagini. Tutti i codificatori di cui ci occuperemo sono con perdite.
I codificatori di segnale vocale si dividono in due principali categorie, waveform (di
forma d'onda) e model based. Un codificatore waveform (per esempio un codificatore APC)
fa in modo che la forma d'onda del segnale sintetico sia il più simile possibile a quella del
segnale originale. Un codificatore model based (per esempio un Vocoder LPC) non si
interessa affatto della forma d'onda; estrae invece, dal segnale da codificare, i parametri di
un modello dell' apparato di produzione che vengono trasmessi e utilizzati in ricezione per
pilotare il modello, e riprodurre un segnale che viene percepito dall'orecchio come simile a
quello originale, anche se non esiste nessuna garanzia di somiglianza fra le due forme
d'onda. I codificatori model based permettono di ottenere fattori di compressione maggiori,
a scapito però di una perdita sulla qualita' del segnale sintetico.
2.1 Codificatori e qualita' utilizzate
La codifica avviene a partire dalla rappresentazione digitale del segnale vocale. La
stessa rappresentazione di partenza puo' in realta' essere piu' o meno fedele, a seconda dell'
utilizzo che si intende fare del segnale. Il segnale vocale puo' avere componenti fino ad una
ventina di Khz. Per una sua perfetta riproduzione e' dunque necessario campionarlo ad una
frequenza di 40 Khz; d' altra parte la maggior parte dell' energia e dell' informazione e'
concentrata nei primi 4 Khz: il segnale telefonico, cioe' il segnale che si puo' ascoltare all'
uscita di una cornetta telefonica, ha una banda di soli 3.2 Khz e risulta perfettamente
comprensibile e di piacevole ascolto. Naturalmente sulla qualita' del segnale influisce, oltre
alla frequenza di campionamento, anche il numero di bit usato per la rappresentazione
quantizzata dei campioni. E' possibile identificare tre principali livelli di qualita' per il
segnale di partenza e cioe' qualita' TELEFONICA, qualita' AUDIO, e qualita' CD come
schematizzato in tabella 1.
Freq. di campionamento
44 kHz
14 kHz
8 kHz
Qualita'
CD
AUDIO
TELEFONICA
Caratteristiche
riproduzione perfetta
riproduzione quasi perfetta
riproduzione buona
Applicazioni
multimedia
videoconferenza
telefonia
Tabella 1: qualita' del segnale di ingresso.
Nel seguito, supporremo che il segnale di ingresso al codificatore sia di qualita'
telefonica, per esempio un segnale PCM standard. Nel PCM, i campioni sono presi ad una
frequenza di 8 Khz, per la rappresentazione quantizzata di ogni campione sono utilizzati 8
bit (a patto di usare una compressione logaritmica del valore del campione prima della
6
Codifica del Segnale Vocale
quantizzazione; in caso contrario sono necessari 12 bit) e quindi la velocita' di trasmissione
e' di 64 Kbit/sec.
Per quanto riguarda la qualita' del segnale di uscita dal codificatore (il segnale
sintetico) e' possibile indicare, tenendo presente che queste divisioni sono piuttosto vaghe e
autori diversi possono usare divisioni diverse, 4 livelli di qualita', ovvero TOLL (perfetta),
NEAR TOLL, DIGITAL CELLULAR, LOW BIT RATE. Nelle qualita' TOLL e NEAR
TOLL il segnale e' praticamente perfetto. Nella qualita' DIG. CELL. viene introdotta una
certa rumorosita' di fondo ma il parlato e' ancora molto ben ricostruito. Nella qualita' LOW
BIT RATE il parlato risulta oltre che rumoroso, artificiale e non naturale, ma comunque
comprensibile; le caratteristiche del parlatore possono essere alterate notevolmente. In
tabella 2 e' riportato un elenco di codificatori utilizzati in pratica.
Codificatore
PCM
APC, ADPCM
LD-CELP
Bit Rate (kb/s)
64
32
16
LTP-RPE
MP-LPC
CELP
LPC-10
13
9
5
2.4
Qualità
TOLL
NEAR TOLL
NEAR TOLL/DIG
CELL
DIGITAL CELLULAR
DIG CELL/LOW BIT
DIG CELL/LOW BIT
LOW BIT RATE
Caratteristiche
segnale di qualità telefonica
segnale di qualità quasi telefonica
segnale di qualità telefonica rumoroso
segnale di qualità telefonica rumoroso
segnale naturale,parlatore riconoscibile
segnale naturale,parlatore riconoscibile
segnale comprensibile, artificiale
Tabella 2: alcuni codificatori e le loro caratteristiche.
2.2 Valutazione delle prestazioni di un codificatore
I principali parametri per la valutazione della bonta' di un codificatore sono la qualità
del segnale sintetico, la velocità di trasmissione, il ritardo introdotto fra il segnale di
ingresso e quello di uscita, la complessità (calcolo/memoria) dell' algoritmo di compressione
e la sensibilita' del segnale sintetico agli eventuali errori che si verificano nella trasmissione
del segnale compresso (errori di canale).
La qualità del segnale sintetico può essere valutata tramite misure oggettive o
soggettive. Una misura oggettiva e' una maniera per calcolare un indice di qualita' a partire
dalle due forme d'onda originale e sintetica; la misurazione puo' essere effettuata
automaticamente e non richiede l'intervento di un ascoltatore (una tipica misura oggettiva e'
il SNR). Le misure soggettive sono invece basate su prove d'ascolto: il segnale sintetico
viene ascoltato e gli viene assegnato un voto; per limitare la dipendenza della misura dai
gusti del singolo, le prove d' ascolto vengono ripetute con piu' ascoltatori e su piu' frasi,
seguendo procedure formalizzate che tentano di ridurre l' aleatorieta' dei risultati.
Le misure oggettive hanno il vantaggio di poter essere effettuate in modo automatico
(e quindi su database molto estesi) e di non dipendere dai gusti dell' ascoltatore. Il principale
problema delle misure oggettive e' che, specialmente per codificatori operanti a basse
velocita', non sono correlate con la qualita' percepita: se SNR è alto, la qualità è
sicuramente buona; ma se SNR è basso, non è detto che la qualità sia cattiva; infatti i segnali
possono essere percepiti come simili anche se le forme d'onda sono molto diverse. Sono
state proposte molte misure oggettive diverse da SNR che tentano di superare questo
problema, ma nessuna vi riesce completamente.
7
Codifica del Segnale Vocale
Le misure soggettive hanno il vantaggio di essere correlate con la qualita' percepita,
ma sono molto piu' complicate e costose da realizzare, e sono influenzate dai gusti dell'
ascoltatore. Un altro problema e' quello della loro bassa sensibilita': supponiamo di
effettuare la misurazione per fissare al meglio il valore di un parametro del codificatore;
variando il parametro varia la qualita' del segnale sintetico, ma se la variazione e' troppo
piccola l' orecchio non la percepisce (per esempio miglioramenti di 1 dB sull' SNR sono
quasi impercettibili).
8
Codifica del Segnale Vocale
3.
Codifica LPC
I codificatori di gran lunga piu' usati sono quelli di tipo LPC (Linear Prediction
Coder), basati sulla predizione lineare. Esistono altri tipi di codificatori (per esempio i
codificatori sinusoidali o i codificatori multibanda) di cui pero' non ci occuperemo.
3.1 Predizione lineare
La predizione lineare e' una tecnica molto efficace per eliminare correlazione e
ridondanza da un segnale. Indichiamo con x[n] una sequenza di campioni di segnale vocale.
I campioni sono ottenuti finestrando il segnale, e quindi sono diversi da 0 solo in un certo
intervallo, diciamo fra 0 ed N-1. La lunghezza della finestra (10-30 msec.) e' scelta in modo
che il segnale risulti (grosso modo) stazionario al suo interno. Fra campioni successivi esiste
una certa correlazione; e' possibile quindi cercare di predire il valore della sequenza nell'
istante n sulla base di un certo numero di campioni precedenti. Per formare il valore
predetto si usa una combinazione lineare di P campioni precedenti; P e' detto ordine di
predizione. Indicando con x"[n] il valore predetto si ha quindi:
P
x"[n] =
∑ a[k] x[n-k].
k=1
Gli a[k] sono detti coefficienti di predizione. La differenza fra il segnale e la sua
predizione e' detta errore o residuo di predizione, e rappresenta la parte di segnale che non
puo' essere predetta dal suo passato:
P
r[n] = x[n] - x"[n] = x[n] -
∑ a[k] x[n-k].
(1)
k=1
Osservando la formula precedente si nota che la sequenza r[n] e' ottenuta dalla
sequenza x[n] facendola passare in un filtro FIR, detto "filtro di analisi", dotato di funzione
P
di trasferimento 1 - A(z) = 1 -
∑ a[k] z-k. I coefficienti di predizione vengono calcolati in
k=1
modo che la sequenza predetta x"[n] sia il piu' simile possibile, in senso quadratico, alla
sequenza x[n], cioe' in modo che l'energia del segnale differenza sia piu' piccola possibile;
analiticamente occorre minimizzare la quantita' E
∞
E=
∑
n = -∞
∞
r[n]2 =
∑
n = -∞
∞
( x[n] - x"[n] )2 =
∑
n = -∞
P
( x[n] -
∑ a[k] x[n-k] )2 .
k=1
9
Codifica del Segnale Vocale
Per minimizzare E si deriva rispetto ai coefficienti a[k] e si mettono a zero le derivate;
∞
introducendo la sequenza di autocorrelazione di x[n], definita da φx[i] = ∑ x[n] x[n+i], si
n = -∞
ottiene:
P
∑ a[k] φx[i-k] = φx[i]
i = 1, .., P.
(2)
k=1
Le (2) costituiscono un sistema di P equazioni lineari (dette eq. di Yule-Walker) nelle
P incognite a[k], e permettono quindi il calcolo dei coefficienti di predizione che rendono
minima l'energia del residuo. E' chiaro che, minore e' l' energia del segnale residuo,
maggiore e' l'informazione che e' stata rimossa dal segnale e concentrata nei coefficienti
a[k]. Dalla conoscenza dei coefficienti di predizione e del residuo di predizione e' possibile
ricostruire il segnale di partenza, invertendo la (1); si ottiene
P
x[n] = r[n] +
∑ a[k] x[n-k].
(3)
k=1
La formula precedente equivale al filtraggio della sequenza residuo di predizione con
un filtro IIR dotato di funzione di trasferimento 1 / (1-A(z) ) a soli poli, reciproco del filtro
di analisi e detto "filtro di sintesi". Una importante proprieta' del filtro di sintesi e' che il suo
spettro (modulo quadro della funzione di trasferimento) segue l'inviluppo dello spettro del
segnale x[n]. Se ne deduce che il filtro di analisi avra' uno spettro con andamento pari al
reciproco dell' inviluppo dello spettro di x[n]. Lo spettro del segnale residuo, che si ottiene
moltiplicando lo spettro di x[n] con lo spettro del filtro di analisi, tendera' dunque ad avere
inviluppo piatto e cio' implica che i campioni del residuo sono poco correlati, come ci si
poteva aspettare, visto che il residuo e' ottenuto da x[n] cercando di rimuovere la
correlazione. La sequenza di analisi e sintesi e' rappresentata in figura 5, assieme agli spettri
dei vari segnali coinvolti. Il segnale di ingresso e' supposto sonoro, e dunque il suo spettro
e' a righe, ed e' disegnato assieme al suo inviluppo, con i picchi alle frequenze formanti. Lo
spettro del filtro di sintesi segue questo inviluppo, mentre il filtro di analisi ha inviluppo con
andamento reciproco; lo spettro del segnale residuo e' a righe, ed ha inviluppo piatto.
Il metodo che abbiamo appena descritto per il calcolo degli a[k] e' noto col nome di
metodo dell' "Autocorrelazione"; esistono diversi altri metodi per il calcolo dei parametri
LPC, che si differenziano da questo per i motivi piu' vari. Per esempio, in un secondo
metodo, il metodo della "Covarianza", si assume il segnale x[n] non definito al di fuori della
finestra e non pari a 0 come nel metodo dell' Autocorrelazione; in altri metodi, ricorsivi, i
coefficienti sono calcolati per ogni nuovo campione x[n], usando una finestra che cresce
indefinitamente nel tempo. Una importante proprieta' del metodo dell' Autocorrelazione e'
che il filtro di sintesi risulta sempre stabile, con poli all' interno del cerchio unitario. Una
seconda importante caratteristica e' che la matrice dei coefficienti del sistema lineare (2) e' di
Toepliz; per questo tipo di matrici esistono metodi di soluzione del sistema molto efficienti.
10
Codifica del Segnale Vocale
x[n]
r[n]
Analisi
x[n]
Sintesi
1-A(z)
1/(1-A(z))
Figura 5: analisi e sintesi LPC.
3.2 Schema di un codificatore LPC
Lo schema generale di un codificatore LPC e' riportato in figura 6. Il codificatore
opera su trame di N campioni, cioe' su brevi tratti di segnale vocale, all’ interno dei quali il
segnale stesso puo’ essere considerato stazionario. Per ogni trama, vengono ripetuti i
seguenti passi: tramite la predizione lineare, nel blocco LP di analisi LPC, vengono calcolati
i coefficienti di predizione a[k], e dunque definiti i filtri di analisi e sintesi. Il segnale viene
fatto passare attraverso il filtro di analisi per produrre una trama di residuo. Nel blocco
AECC di analisi dell'eccitazione vengono calcolati, a partire dalla trama di segnale originario
e/o dalla trama di residuo, usando eventualmente anche i coefficienti a[k], i valori di un
certo numero di parametri, indicati genericamente con p[n], che permettono di ricostruire in
modo approssimato la trama di residuo nel blocco RECC di ricostruzione dell'eccitazione.
Questi parametri vengono trasmessi, assieme ai coefficienti del filtro. In ricezione, la trama
di residuo ricostruito r'[n] viene usata per eccitare il filtro di analisi e produrre il segnale
sintetico x'[n].
x[n]
1-A(z)
AECC
p[n]
p[n]
RECC
r'[n]
1/(1-A(z))
x'[n]
r[n]
Canale
a[k]
LP
a[k]
Codificatore
a[k]
Decodificatore
Figura 6: schema di un codificatore LPC.
I diversi codificatori LPC si differenziano fra loro principalmente nei blocchi di analisi
e ricostruzione dell' eccitazione. E' chiaro che la cosa migliore sarebbe avere r'[n] = r[n],
cioe' fornire al filtro di sintesi il residuo originale, ed ottenere in questo modo x'[n] = x[n],
cioe' un segnale sintetico identico a quello originale. In questo caso, i blocchi di analisi e
ricostruzione dell' eccitazione sarebbero assenti, ed il residuo verrebbe direttamente
trasmesso al decodificatore. In questo modo, pero', non si riescono a realizzare guadagni
consistenti sulla velocita' di trasmissione; tali guadagni sono invece ottenuti accettando
11
Codifica del Segnale Vocale
residui ricostruiti diversi da quello originale; in questo caso il blocco AECC si occupa di
calcolare dei parametri che possono essere trasmessi con pochi bit/sec e che, una volta
giunti al ricevitore, permettono al blocco RECC di produrre il residuo ricostruito (anche
detto "sintetico"); tanto piu' r'[n] e' simile a r[n] tanto migliore e' la qualita' del segnale
sintetico, ma per ottenere alti fattori di compressione molti codificatori utilizzano residui
sintetici fortemente diversi da quello originale: in generale, si cerca almeno di fare in modo
che il residuo sintetico abbia spettro con inviluppo piatto; in questo modo, infatti, l'inviluppo
dello spettro del segnale sintetico finale e' determinato dal filtro di sintesi e quindi, per
quanto visto in precedenza, risulta simile a quello del segnale di ingresso; visto che
l'orecchio e' sensibile sostanzialmente allo spettro (di energia) del segnale che percepisce (e
non allo spettro di fase) il parlato sintetico viene percepito come simile a quello originale,
anche se le forme d'onda sono molto differenti.
Nella pratica, sia i coefficienti del filtro a[k], che i parametri calcolati nel blocco di
analisi dell' eccitazione p[n], sono numeri interi o reali, rappresentati con una precisione ed
una quantita' di memoria dipendenti dall' elaboratore su cui opera il compressore, per
esempio 32 bit. Per trasmettere direttamente una di queste quantita' sarebbe dunque
necessario trasmettere 32 bit; di solito, pero', il valore del parametro occupa solo un piccola
parte della dinamica consentita dalla rappresentazione (varia per esempio fra +1 e -1) e/o
puo' essere rappresentato con una precisione minore senza perdere nella qualita' del segnale
sintetico (per esempio 16 valori distrubuiti uniformemente fra +1 e -1); quindi, prima della
trasmissione, questi parametri subiscono un processo di quantizzazione, che consente di
ridurre sensibilmente il numero di bit usato per la loro rappresentazione e trasmissione (per
esempio a 4 bit nel caso in cui si utilizzino 16 valori fra +1 e -1): uno schema piu' preciso
per un codificatore LPC e' dunque quello mostrato in figura 7, in cui nel blocco Q di
quantizzazione viene effettuata la quantizzazione e la codifica del valore quantizzato in una
stringa di bit, e nel blocco di D di dequantizzazione viene decodificata la stringa di bit e
restituito il valore quantizzato.
Il passo di quantizzazione e' molto importante in un codificatore in quanto ha un
impatto diretto sulla velocita' di trasmissione. Ognuno dei parametri da trasmettere deve
essere quantizzato al meglio, con il tipo di quantizzazione a lui piu' appropriata ed eventuali
correlazioni tra i parametri devono essere sfruttate. Le tecniche di quantizzazione sono state
costantemente migliorate nel corso degli anni e sono ormai molto complesse; per esempio
nei primi anni 80 occorrevano circa 35-40 bit per la quantizzazione/codifica dei coefficienti
di predizione a[k], mentre oggi ne bastano 20-25. La tecnica che ha avuto il maggior
impatto sulla velocita' di trasmissione negli ultimi anni e' la Quantizzazione Vettoriale, sulla
quale, pero', non entriamo in dettaglio.
I coefficienti di predizione a[k] non sono l'unica maniera di specificare il filtro di
sintesi (per esempio, il filtro potrebbe essere specificato trasmettendo la posizione dei suoi
poli). Nei codificatori usati in pratica i coefficienti di predizione a[k], sono spesso sostituiti
con quantita' a loro biunivocamente legate perche' queste risultano piu' facili a calcolarsi,
come i coefficienti di Predizione, oppure perche' hanno favorevoli proprieta' per quanto
riguarda la quantizzazione, come i coefficienti LAR (Log Area Ratio) o i coefficienti LSF
(Line Spectrum Frequencies), ma nel seguito, per semplicita', useremo sempre direttamente
i coefficienti di predizione.
12
Codifica del Segnale Vocale
x[n]
1-A(z)
AECC
p[n]
Q
D
p'[n]
RECC
r'[n]
1/(1-A(z))
r[n]
Canale
a[k]
LP
a[k]
Codificatore
Q
D
a'[k]
Decodificatore
Figura 7: schema di un codificatore LPC con quantizzazione dei parametri.
13
x'[n]
Codifica del Segnale Vocale
4.
Alcuni Codificatori LPC
In questo capitolo e nel successivo vedremo diversi esempi di codificatori; la tabella 3
riassume le loro caratteristiche. In questo capitolo non entreremo in dettaglio, ma ci
limiteremo a discutere la struttura e i principi di funzionamento di alcuni, importanti
codificatori LPC. Nel capitolo successivo affronteremo, andando piu' in profondita', il
codificatore LTP-RPE adottato nello standard GSM.
Codificatore
APC, ADPCM
Vocoder LPC
ABS
LTP-RPE
Qualita'
Near Toll
Low bit rate
Dig. Cell. / Low bit
Dig. Cell.
Velocita'(Kb/sec)
30-40
2-4
5-10
13
Complessita'
bassa
media
alta
media
Robustezza
alta
bassa
media
media
Tabella 3: caratteristiche di alcuni codificatori.
4.1 APC (Adaptive Predictive Coder) e ADPCM (Adaptive
Differential PCM)
Questi codificatori, insieme al vocoder LPC che vedremo nel prossimo paragrafo,
sono stati i primi ad essere ideati ed utilizzati. Permettono di ottenere segnali sintetici di
qualita' telefonica (TOLL, o NEAR TOLL) con velocita' di trasmissione di 30-40 Kb/sec. In
questi codificatori, l' unica approssimazione che subisce il residuo e' una quantizzazione dei
campioni, diretta nell' APC, e differenziale (cioe' quantizzando le differenze fra campioni
scuccessivi) nell' ADPCM.
APC ed ADPCM sfruttano la caratteristica della predizione lineare di minimizzare
l'energia del segnale residuo: avendo il residuo minore energia del segnale originale (e
quindi minore dinamica) sara' possibile utilizzare meno bit (meno intervalli) per la sua
quantizzazione, a parita' di errore di quantizzazione. Quindi, se nel PCM si usano 8 bit per
campione quantizzando il segnale originale, in questi metodi si ottiene la stessa qualita'
usando 4-5 bit per la quantizzazione di un campione di segnale residuo.
Un possibile schema per questi codificatori e' quindi quello di figura 7 senza i blocchi
di analisi e ricostruzione dell' eccitazione; nella pratica, pero', la cosa non si puo' realizzare
in maniera cosi' semplice; infatti il filtro di sintesi viene eccitato non con il residuo originale,
r[n], ma con il residuo quantizzato r'[n] = r[n]+e[n], dove e[n] e' il rumore di
quantizzazione; all' uscita del filtro si otterra' quindi x'[n] = x[n] + w[n], dove x[n] e' dovuto
al passaggio di r[n] nel filtro e w[n] e' dovuto al passaggio di e[n]; visto che il filtro di
14
Codifica del Segnale Vocale
analisi riduce l'energia del segnale che lo attraversa (ed e' quindi un attenuatore) il filtro di
sintesi, che e' il suo inverso, risulta un amplificatore: l' errore di quantizzazione presente sul
residuo verra' amplificato in uscita, vanificando i vantaggi dello schema. Inoltre, il
decodificatore non dispone dei coefficienti a[k], ma solo delle loro versioni quantizzate; di
conseguenza il filtro del decodificatore non sara' esattamente inverso a quello del
codificatore. Per risolvere il problema e' necessario modificare il metodo di calcolo del
residuo; invece della (1) il residuo viene calcolato come
P
∑ a'[k] x'[n-k].
r[n] = x[n] -
(4)
k=1
Nella (4) il residuo viene calcolato utilizzando non i valori di segnale originale ed i
coefficienti esatti, ma i valori del segnale sintetico x'[n] e dei coefficienti quantizzati a'[k];
per fare cio' e' necessario che il codificatore realizzi, al suo interno, anche il decodificatore,
cioe' calcoli i campioni del segnale x'[n] ed i coefficienti a'[k]. Il residuo prodotto in questo
modo non coincide con quello prodotto usando la (1), cioe' con quello ad energia minima,
ma non e' molto differente ed ha comunque energia molto piu' bassa del segnale. Invertendo
la (4) risulta:
P
x[n] = r[n] +
∑ a'[k] x'[n-k].
(5)
k=1
Il decodificatore produce il segnale sintetico facendo passare r'[n] = r[n] + e[n] nel
filtro di sintesi; utilizzando la (5) possiamo scrivere
P
x'[n] = r'[n] +
P
∑ a'[k] x'[n-k] = r[n] + ∑ a'[k] x'[n-k] + e[n] = x[n] + e[n]. (6)
k=1
x[n]
k=1
r[n]
AM
Q
D
x'[n]
1/(1-A(z))
D
r'[n]
1/(1-A(z))
x'[n]
Canale
r'[n]
a'[k]
D
LP
Q
D
a'[k]
a[k]
Codificatore
Decodificatore
Figura 8: schema di un codificatore APC.
La (6) mostra come in questo modo il rumore di quantizzazione passi attraverso il
filtro di sintesi senza essere amplificato, preservando i vantaggi dello schema. In figura 8
riportiamo il diagramma a blocchi del codificatore in cui, nel blocco AM di analisi
15
Codifica del Segnale Vocale
modificata, viene utilizzata la (4) per produrre il residuo. L' includere il decodificatore all'
interno del codificatore permette di tenere in conto e compensare gli effetti della
quantizzazione e delle altre approssimazioni fatte nella decodifica, ed e' un principio
generale da seguire nel progetto di un codificatore.
4.2 Vocoder (Voice-Coder) LPC
Questo codificatore opera a velocita' di trasmissione molto basse (2-3 Kb/sec), grazie
alla forte approssimazione operata sul residuo. In figura 9 e' riportato il suo schema. Data
una trama di segnale da codificare il residuo viene ricostruito nel blocco RECC di
ricostruzione dell' eccitazione sulla base di tre soli parametri: il tipo di suono (sordo o
sonoro), il perido di pitch e il guadagno; questi parametri vengono calcolati dal codificatore
nel blocco AECC analizzando la trama da codificare, e sono globalmente indicati con p[k].
Nel blocco RECC, se il suono e' sonoro, il residuo prodotto e' un treno di impulsi unitari,
distanziati di un numero di campioni pari al periodo di pitch; se il suono e' sordo viene
prodotta un sequenza a potenza unitaria di campioni casuali, scorrelati fra loro (rumore
bianco). Il guadagno viene utilizzato per scalare il residuo e portarlo ad un livello di potenza
pari a quello del residuo vero, in modo da produrre parlato sintetico allo stesso volume del
parlato originale.
x[n]
AECC
p[k]
Q
D
p'[k]
RECC
1/(1-A(z))
x'[n]
r'[n]
Canale
LP
a[k]
Codificatore
Q
D
a'[k]
Decodificatore
Figura 9: Schema di un vocoder LPC.
Il vocoder LPC sfrutta la caratteristica del filtro di sintesi di avere spettro (modulo
quadro della funzione di trasferimento) con andamento simile all' inviluppo dello spettro del
segnale di ingresso. Entrambi i tipi di residuo utilizzati (rumore bianco e treno di impulsi)
hanno spettro con inviluppo piatto: passando questi segnali nel filtro di sintesi si otterra' un
segnale con inviluppo spettrale simile a quello originale e che quindi viene percepito come
un suono simile a quello originale. Inoltre, nel caso di suoni sonori, il fatto di usare come
eccitazione una sequenza di impulsi distanziati del periodo di pitch permette di mantenere la
caratteristica a righe dello spettro distanziando le righe esattamente della frequenza di pitch
mantenendo cosi' la tonalita' del parlato originale. Il vocoder LPC puo' essere visto come un
modello dell' apparato di produzione: l'eccitazione costituisce il segnale di sorgente e le
modifiche apportate a questo segnale dal tratto vocale sono riprodotte dal filtro di sintesi.
16
Codifica del Segnale Vocale
La qualita' del segnale sintetico prodotto con un vocoder e' molto bassa: il parlato e'
comprensibile ma innaturale; e' affetto da ronzii e crepitii e ha un timbro metallico ed
artificiale; le caratteristiche del parlatore sono alterate. La bassa qualita' e' dovuta in parte
ad un limite intrinseco dato dalla semplicita' del modello, ed in parte alle difficolta' che si
incontrano nella analisi del pitch: il problema della determinazione della frequenza di pitch e
della discriminazione sonoro/sordo, pur essendo uno dei piu' studiati nel campo della
codifica del segnale vocale, non ha trovato ancor oggi una soluzione completamente
soddisfacente; i metodi utilizzati presentano sempre qualche problema di robustezza e di
precisione, oppure sono troppo complessi per essere realizzati tempo reale.
La velocita' di trasmissione e' molto bassa: per avere un' idea dei risparmi che un
vocoder permette di realizzare supponiamo che le trame siano da 20 msec. e quindi, se il
segnale di ingresso e' campionato ad 8 KHz (qualita' telefonica), siano costituite da 160
campioni, e che occorrano: 1 bit per la trasmissione della decisione sonoro sordo, 7 bit per il
periodo di pitch e 6 bit per il guadagno. Si arriva ad un totale di 14 bit da trasmettere per la
descrizione del residuo in una trama. Usando un ADPCM a 4 bit sarebbero serviti 4x160 =
640 bit.
4.3 Codificatori ABS (Analysis By Synthesis)
Lo schema generale di un codificatore ABS e' riportato in figura 10. Una caratteristica
dei codificatori ABS e' quella di avere a disposizione, per produrre una trama di segnale
sintetico, un insieme di possibili sequenze di residuo con le quali eccitare il filtro di sintesi.
Questo insieme contiene una serie di vettori lunghi quanto una trama ed e' detto
"Codebook". Puo' essere realizzato in molte forme diverse, per esempio puo' contenere un
numero finito e piccolo di vettori, che quindi sono tutti fisicamente memorizzati, oppure
puo' contenere un numero infinito di vettori, che non sono tutti memorizzati, ma solo
caratterizzati in qualche modo (per esempio tutti i vettori con 3 componenti diverse da 0 in
posizione qualsisi) e vengono prodotti all' occorrenza. Nel seguito della sezione vedremo
esempi di entrambi i tipi. Il codebook e' noto sia al codificatore che al decodificatore.
Per ogni trama di ingresso1 il codificatore calcola, nel blocco LP, i parametri del filtro
di sintesi, li quantizza e li trasmette al decodificatore. I parametri sono inoltre forniti al
blocco ABS (dopo quantizzazione e dequantizzazione, per mantenere aderenza con il
decodificatore) perche' anche in questo blocco sara' necessario effettuare la sintesi.
Nel blocco ABS viene scelto il vettore del codebook che il decodificatore usera' nella
sintesi. Per effettuare la scelta, tutti i possibili vettori di residuo contenuti nel codebook
vengono fatti passare nel filtro di sintesi, ottenendo per ognuno la trama di residuo sintetico
corrispondente x°[n]; la trama prodotta viene confrontata con quella originale da codificare
x[n] calcolando un segnale d'errore e[n] = x[n]-x°[n] ed usando l'energia di questo segnale
1Si
noti che la lunghezza della trama su cui viene effettuata l'analisi del residuo non deve
necessariamente essere coincidente (anzi di solito non lo e') con la lunghezza della trama su cui viene
effettuata l' analisi LPC, ma puo' essere un sottomultiplo, cosicche' l'analisi del residuo viene effettuata piu'
volte per trama LPC, per avere una rappresentazione piu' precisa del residuo stesso: in questo caso la trama
usata nell' analisi del residuo viene detta sottotrama, riservando il termine trama a quella LPC. Per
semplicita' in questa sezione assumeremo le due trame coincidenti.
17
Codifica del Segnale Vocale
come misura della distanza fra le trame; fra i vettori del codebook si sceglie quello che
produce l'errore ad energia minima. I parametri che descrivono questo vettore (dipendenti
dal tipo di codebook) vengono quantizzati e trasmessi al decodificatore (sono indicati
genericamente con p[k] nello schema), che li usa, nel blocco RABS di ricostruzione ABS,
per estrarre dal codebook il vettore scelto. Nel caso in cui il codebook non sia formato da
un numero finito di vettori, questo schema rimane valido in linea di principio. Infatti anche
se e' impossibile effettuare la sintesi con tutti i vettori del codebook, e' pero' possibile usare
procedure di ricerca analitiche che permettono di estrarre dal codebook il vettore migliore
(o comunque un buon vettore) senza effettuare realmente la sintesi. Queste procedure
dipendono dalla struttura del codebook usato.
RECC
AECC
Codebook
x[n]
ABS
Codebook
p[n]
Q
a'[k]
D
p'[n]
RABS
r'[n]
1/(1-A(z))
x'[n]
Canale
D
LP
a[k]
Q
D
Codificatore
a'[k]
Decodificatore
Figura 10: schema di un codificatore ABS.
Un codificatore ABS puo' disporre di piu' di un codebook. In questo caso, l' analisi
procede esattamente come descritto in precedenza per il primo codebook. Il vettore r'[n]
scelto da questo primo codebook viene poi fatto passare nel filtro di sintesi per produrre
una trama di segnale sintetico x°[n]; questa trama viene sottratta alla trama originale x[n]
per ottenere un vettore x°°[n] = x[n] - x°[n] che rappresenta la parte di segnale non ancora
approssimata, e il secondo codebook viene usato per approssimare questo vettore invece di
quello originale. Si procede in maniera simile per eventuali codebook successivi.
I codificatori ABS (Analisi tramite Sintesi) devono il nome (e il successo) alla loro
maniera di operare: l' analisi della trama da codificare si basa sulla sintesi di tutte le possibli
trame ricostruite. Questo garantisce che venga scelto, fra tutte le possibili trame di residuo a
disposizione, quella che rende minimo l'errore dopo il filtraggio di sintesi, cioe' nel dominio
del segnale ricostruito. Una soluzione alternativa sarebbe quella di scegliere dal codebook
direttamente il vettore piu' simile alla trama di residuo originale, ovvero di operare nel
dominio del segnale residuo. In questo modo, pero', non si ha la sicurezza che anche dopo il
filtraggio di sintesi il residuo scelto sia quello che rende minima la differenza fra trama
18
Codifica del Segnale Vocale
ricostruita e quella originale, cosa che invece e' garantita operando nel dominio del segnale
ricostruito.
I codificatori ABS utilizzano un secondo importante principio. E' stato notato che
l'orecchio umano e' molto piu' sensibile a rumori allocati nelle bande di frequenza in cui il
segnale ha basso livello che a rumori allocati nelle bande di frequenza in cui il segnale ha
alta energia. Per fare un esempio, dato un segnale vocale x[n] e due disturbi e'[n] ed e"[n],
supponiamo che lo spettro di x[n] abbia un picco (frequenza formante) alla frequenza f1, che
lo spettro di e'[n] sia concentrato intorno a questa frequenza, mentre lo spettro di e"[n] sia
concentrato intorno ad una frequenza f2 dove il livello del segnale e' basso; ebbene, anche se
e'[n] ed e"[n] hanno la stessa energia, il segnale x[n]+e'[n] sara' percepito come poco
rumoroso, mentre il segnale x[n]+e"[n] sara' percepito come molto rumoroso. Questa
osservazione viene utilizzata nei codificatori ABS nella fase di scelta del vettore dal
codebook. Prima di calcolare l' energia del segnale d'errore e[n], questo viene fatto passare
attraverso un filtro di pesatura che esalta le componenti dell'errore nelle bande di frequenza
in cui il segnale da codificare ha poca energia e attenua le componenti dell'errore nelle bande
di frequenza in cui il segnale da codificare ha alta energia (questo filtro e' ottenuto ancora a
partire dai parametri LPC); in questo modo se la trama ricostruita differisce da quella
originale in una banda di frequenze in cui il livello del segnale e' alto, e quindi, per quanto
detto sopra, l'errore non viene quasi percepito, l'energia del segnale d'errore filtrato sara'
bassa, ed il vettore sara' scelto piu' facilmente; viceversa, se il segnale d' errore ha molta
energia nelle bande in cui il livello del segnale e' basso, e quindi e' percepito nitidamente dall'
orecchio, l'energia del segnale d'errore filtrato sara' alta, ed il vettore sara' scelto piu'
difficilmente.
I metodi ABS sono molto costosi dal punto di vista computazionale; infatti il
filtraggio di tutti i possibili residui a disposizione e' una operazione molto pesante dal punto
di vista della complessita' di calcolo.
Un importante codificatore ABS e' il codificatore MP-LPC (Multi-Pulse Linear
Prediction Coder), per il quale il codebook e' costituito da tutti i vettori con un certo
numero (fisso) di elementi diversi da zero (detti impulsi), in qualsiasi posizione. Se, per
esempio, il numero di impulsi e' 3, il codebook sara' costituito da tutti i vettori con un
numero di elementi pari alla lunghezza di una trama, di cui solo 3 diversi da 0. Visto che gli
impulsi possono avere qualsisi ampiezza, il codebook e' costituito da un numero infinito di
vettori, ed e' impossibile provarli effettivamente tutti. Per la ricerca in questo codebook si
utilizzano metodi analitici di esplorazione dello spazio dei possibili residui, che consentono
di determinare un "buon" vettore di residuo (ma non quello ottimo). Una volta scelto il
vettore di residuo, il codificatore quantizza e trasmette al decodificatore la posizione e le
ampiezze degli impulsi, in modo che lo stesso vettore possa essere ricreato in ricezione ed
usato per eccitare il filtro di sintesi. Il metodo multi-impulso permette di produrre parlato
sintetico di buona qualita', anche se rumoroso, con velocita' di trasmissione intorno ai 9
Kb/sec.
Un secondo codificatore ABS molto noto e' il codificatore CELP (Code Excited
Linear Prediction), per il quale il codebook e' costituito da un numero finito (per es. 1024)
di vettori casuali generati da una sorgente aleatoria, ed e' detto codebook stocastico. I
campioni sono di solito a distrubuzione gaussiana e sempre indipendenti, in modo da avere
residui a spettro piatto. In questo caso, e' effettivamente possibile effettuare il filtraggio di
19
Codifica del Segnale Vocale
tutti i vettori del codebook per scegliere quello da utilizzare. Prima della sintesi ogni vettore
viene scalato con un guadagno calcolato in modo da rendere minima l'energia del segnale
d'errore e[n] prodotto dal vettore. I parametri da trasmettere sono quindi costituiti dalla
posizione nel codebook del vettore scelto e dal guadagno. Nei metodi CELP utilizzati in
pratica e' sempre presente un secondo codebook, oltre al codebook stocastico. Questo
secondo codebook, detto codebook adattativo, non viene qui trattatato perche e' utilizzato,
in una forma molto simile, anche nel codificatore LTP-RPE che vedremo in dettaglio nella
prossima sezione. Il metodo CELP permette di produrre parlato sintetico di buona qualita',
anche se rumoroso, con velocita' di trasmissione intorno ai 5 Kb/sec, ed e' attualmente uno
dei metodi di codifica piu' diffusi e studiati.
20
Codifica del Segnale Vocale
5.
Il codificatore LTP-RPE
Il codificatore LTP-RPE (Long Term Prediction - Regular Pulse Excited) e' adottato
nello standard GSM. E' in grado di produrre un segnale sintetico di buona qualita' ad una
velocita' di trasmissione di 13 Kbit/sec. Lo schema del codificatore e' riportato in figura 11.
Il codificatore e' diviso in tre sezioni: LPC, LTP e RPE.
AECC
LPC
LTP
RPE
r[n]
x[n]
PRE
x°[n]
1-A(z)
a'[k]
LP
s[n]
LTPS
LTP
s°[n]
PB
ARPE
D G'
s^[n]
D
l[n]
D
Q
a[k]
tx3
Q
D
Q
DG
tx1
tx2
RPE
r'[n]
s'[n]
Codebook Adattativo
Figura 11: schema di un codificatore LTP-RPE.
5.1 Preprocessing e LPC
Il segnale analogico di ingresso viene filtrato con un filtro passabsso con frequenza di
taglio pari a 3.2 KHz, campionato con una frequenza di 8 KHz, e quantizzato linearmente
con 12 bit. Il segnale digitale x[n] viene diviso in trame di 20 msec, corrispondenti a 160
campioni.
21
Codifica del Segnale Vocale
Ogni trama viene per prima cosa passata al blocco PRE di preprocessing, dove viene
rimossa la componente continua ed effettuata una preenfasi. La preenfasi e' un filtraggio non
adattativo che esalta le alte frequenze, allo scopo di rendere piu' stabili numericamente gli
algoritmi utilizzati nei blocchi successivi; verra' compensata, in uscita, dalla deenfasi
(filtraggio col filtro inverso). La trama viene moltiplicata per una finestra di Hamming, per
limitare gli effetti di bordo.
Il segnale preprocessato x°[n] viene passato al blocco LP di predizione lineare, nel
quale vengono calcolati 8 coefficienti di predizione a[k]. I coefficienti vengono quantizzati
(sono necessari 36 bit per gli 8 coefficienti) e trasmessi al decodificatore. La trama di
segnale preprocessato viene passata attraverso il filtro di analisi, definito dai coefficienti
quantizzati a'[k], e si ottiene in questo modo una trama di residuo r[n]. Per le elaborazioni
successive, la trama di residuo viene ulteriormente suddivisa in 4 sottotrame di 40 campioni
ciascuna.
5.2 LTP (Long Term Prediction)
La sottotrama (40 campioni) di segnale residuo viene passata alla sezione di Long
Term Prediction. Questa sezione si basa sulla seguente osservazione: se il suono ha una
componente sonora il segnale ha una struttura pseudo-periodica e questa pseudoperiodicita' si conserva anche nel segnale residuo in quanto l'analisi LPC e' in grado di
eliminare solo la correlazione a breve termine del segnale, cioe' quella esistente fra campioni
con distanza minore o uguale all' ordine di predizione, molto minore del periodo di pitch.
Supponiamo ora di voler approssimare una sottotrama di segnale residuo r[n] n = 0, .., 39, e
che sia il codificatore che il decodificatore conoscano il segnale residuo ricostruito fino a
questo momento: r'[n] n < 0. Essendo il segnale residuo pseudo-periodico, ed a patto che la
ricostruzione r'[n] sia buona, e' logico pensare che, retrocedendo di un periodo di pitch nel
tempo, sia possibile trovare un tratto di 40 campioni di residuo ricostruito r'[n] molto simile
alla sottotrama di residuo r[n] che si sta cercando di approssimare. Indicando con P il
periodo di pitch, risultera' r'[n-P] ≈ r[n].
Nel blocco LTPS (LTP Search), la trama di residuo (d' ora in poi, per brevita',
useremo trama invece di sottotrama, quando questo non generi confusione) attuale viene
confrontata con 128 trame di pari lunghezza estratte dal residuo gia' ricostruito r'[n]. Le
trame vengono formate estraendo 40 campioni consecutivi di residuo ricostruito e
retrocedendo nel tempo il punto iniziale di estrazione. A questo scopo, nel codebook
adattativo sono memorizzati gli ultimi 127+40 campioni di residuo ricostruito r'[n] generati.
Le trame vengono confrontate con la trama di residuo da approssimare calcolando la loro
correlazione. Fra le 128 disponibili viene scelta la trama che risulta piu' correlata con quella
da approssimare. Il decodificatore viene informato di quale trama e' stata scelta tramite la
trasmissione del ritardo D a cui si e' avuta la maggior correlazione. Visto che sono 128 le
trame (i ritardi) possibili, sono necessari 7 bit per la trasmissione esatta del ritardo. Assieme
al ritardo viene calcolato un guadagno G per il quale la trama estratta dal codebook va
moltiplicata; G e' calcolato in modo da rendere minima la differenza quadratica fra la trama
estratta e quella da approssimare. Il guadagno viene quantizzato con 2 bit (sono sufficienti
pochi bit in quanto G e' sempre molto vicino ad 1).
22
Codifica del Segnale Vocale
Nel blocco LTP viene calcolata una trama di predizione di lungo termine l[n], ottenuta
moltiplicando la trama estratta dal codebook a ritardo D per il guadagno quantizzato G';
questa trama viene sottratta al residuo, e in questa maniera si ottiene una trama di segnale
"residuo LTP" s[n] = r[n] - l[n], che rappresenta cio' che ancora il decodificatore non
conosce del segnale residuo.
5.3 RPE (Regular Pulse Excitation)
La trama di residuo LTP s[n] viene filtrata con un passabasso (blocco PB), in
previsione del sottocampionamento che si intende effettuare, e quindi passata al blocco
ARPE di analisi RPE, dove viene effettuata una decimazione sulla trama filtrata s°[n] per
produrre una trama s^[n] in cui solo 13 campioni sono diversi da 0. A partire dalla trama
filtrata s°[n] sono 4 le trame decimate che si possono considerare. Queste si ottengono
fissando la posizione del primo campione diverso da zero, che puo' essere il campione 0, 1,
2, o 3. A partire da questo campione la trama decimata si ottiene azzerando due campioni
ogni tre. Fra le 4 possibili trame decimate viene scelta quella che ha maggior energia. Sono
necessari 2 bit per trasmettere al decodificatore la posizione del primo campione diverso da
0 della trama decimata.
I 13 campioni della trama decimata diversi da 0 vengono quantizzati nel blocco Q di
quantizzazione e trasmessi. Per effettuare la quantizzazione viene cercato il massimo valore
assoluto; questo valore viene compresso logaritmicamente e quantizzato con 6 bit; i 13
campioni vengono poi divisi per il massimo appena trovato in modo da risultare
normalizzati fra -1 e 1; i valori normalizzati vengono quantizzati linearmente usando 3 bit.
In totale sono necessari 13x3 + 6 = 45 bit per trasmettere le ampiezze dei campioni.
Nel blocco RPE viene ricostruita la trama decimata e quantizzata s'[n]. Questa viene
sommata alla trama di predizione LTP l[n] in modo da calcolare la trama residuo ricostruito
r'[n] che verra’ usata nel decodificatore per eccitare il filtro di sintesi. La trama r'[n] viene
usata per aggiornare il codebook adattativo, col fine di mantenere un perfetto allineamento
sul residuo ricostruito fra codificatore e decodificatore: l'allineamento e' assolutamente
necessario per il corretto funzionamento della parte LTP.
5.4 Decodificatore
Lo schema del decodificatore LTP-RPE e' riportato in figura 12. Il decodificatore
compie le operazioni inverse del codificatore: il blocco RPE riceve le informazioni
(posizione del primo campione e ampiezze dei 13 impulsi) relative alla sottotrama decimata,
e calcola una sottotrama decimata ricostruita s'[n]; il blocco LTP ricostruisce, a partire dal
codebook e dai valori di ritardo e guadagno ricevuti dal codificatore la trama di predizione
LTP l[n]. Sommando le due si ottiene una sottotrama di residuo ricostruito r'[n] =
s'[n]+l[n], che viene usata come ingresso per il filtro di sintesi. All' uscita del filtro di sintesi,
nel blocco POST di postprocessing, viene effettuata una deenfasi sul segnale per
compensare la preenfasi effettuata nel codificatore, ed ottenere cosi' una sottotrama di
segnale sintetico x'[n]. Il filtro di sintesi e' calcolato a partire dai parametri LPC ricevuti, e
viene aggiornato ad ogni trama (cioe' ogni 4 sottotrame). Il residuo ricostruito r'[n] viene
23
Codifica del Segnale Vocale
utilizzato anche per aggiornare il codebook, in modo da mantenere l' allineamento col
codebook del codificatore.
La velocita' di trasmissione finale e' cosi' calcolabile: essendo le trame da 20
millisecondi vengono analizzate 50 trame/sec. Per ogni trama sono usati: 36 bit per la
trasmissione dei coefficienti LPC; 4x(7+2)=36 bit per la trasmissione del guadagno e del
ritrdo della sezione LTP; 4x(2+45)=188 bit per la posizione e le ampiezze della trama
decimata; ogni trama richiede dunque 260 bit, per un totale di 260x50=13 Kb/sec.
RECC
RPE
LTP
LPC
s'[n]
RPE
x'[n]
l[n]
LTP
1/(1-A(z))
POST
a'[k]
D G'
D
D
rx3
rx2
D
r'[n]
rx1
Codebook Adattativo
Figura 12: schema di un decodificatore LTP-RPE.
24
Codifica del Segnale Vocale
6.
Bibliografia
Per una bibliografia di base sulla codifica del segnale vocale segnaliamo innanzi tutto
due testi fondamentali, [1,2]; in queste monografie, di carattere generale, sono esposte le
basi della elaborazione e rappresentazione del segnale: i sistemi di produzione e percezione,
la predizione lineare, i codificatori APC e il Vocoder sono esaurientemente trattati, assieme
a numerosi altri argomenti. Un ottimo articolo introduttivo alla predizione lineare e' [3].
Una monografia recente, specifica sulla codifica, in cui sono affrontati anche i codificatori di
nuova generazione, e' [4], mentre una sintetica panoramica sullo stato dell' arte puo' essere
trovata in [5]. Il codificatore LTP-RPE e' ben descritto in [6] assieme al sistema GSM.
Per quanto riguarda le tecniche di quantizzazione, un testo completo e' [7], mentre in
[8] e' possibile trovare un' introduzione alla quantizzazione vettoriale.
[1] Markel J. D., A.H. Gray: "Linear prediction of speech", Springer-Verlag - 1976
[2] Rabiner L. R., R. V. Shafer: "Digital processing of speech signals", Prenctice Hall 1978
[3] Makhoul J.: "Linear prediction: a tutorial review", IEEE Proc. 63, pp. 561,580 - 1975
[4] Kondoz A. M.: "Digital speech", Wiley - 1994.
[5] Gersho A.: "Advances in speech coding", Proceedings of the IEEE, vol. 82, no. 6, pp.
900, 918 - 1994
[6] Hanzo L., R. Steele: "The Pan-European mobile radio system", Europ. Trans. on
Telecom. ETT, vol. 5, no. 2, pp. 245, 260 - 1994
[7] Gersho A., R. M. Gray: "Vector quantization and signal compression", Kluwer
Academic Publishers - 1992
[8] Makhoul J., S, Roucos, H. Gish: "Vector quantization in speech coding", Proceedings
of the IEEE, vol. 72, no. 11, pp. 1551, 1588 - 1985
25
Fly UP