Capitolo 10: Codifica di sorgente multimediale Su Capitolo 10: Codifica di sorgente multimediale Sezione 10.2: Codifica di immagine 

10.1 Codifica audio

Al § 4.3.1.1 abbiamo svolto una valutazione approssimata della distorsione introdotta dal processo di quantizzazione di segnale audio, ricavando che l’utilizzo di M bit/campione si traduce in SNRq(M)|dB ≃ 6 ⋅ M dB. Quindi, al § 4.3.2 si è mostrato come adottando una caratteristica di quantizzazione logaritmica anziché lineare ci si possa adattare meglio alla effettiva densità di probabilità del segnale vocale, rendendo inoltre SNRq relativamente poco sensibile alla sua effettiva dinamica, dando luogo alla cosiddetta codifica pcm con legge A o legge μ, standardizzata nel 1988 da itu-t come G.711, [511]  [511] http://www.itu.int/rec/T-REC-G.711/e. Mentre questa costituisce un formato universale di scambio permettendo la compatibilità tra dispositivi e tecnologie, nel seguito sono state sviluppate diverse tecniche alternative[512]  [512] Una raccolta di riferimenti a risorse relative a codec audio orientati alle applicazioni multimediali può essere trovata presso https://teoriadeisegnali.it/story/labtel/, in grado di offrire la stessa (o migliore) qualità di ascolto con velocità di trasmissione contenute, non solo per segnali vocali in banda telefonica, ma anche per segnali a banda larga, musicali, e multicanale, di cui tentiamo ora una sommaria rassegna.

10.1.1 Codifica di forma d’onda

Questa classe di codificatori opera esclusivamente nel dominio del tempo, agendo campione per campione, e ottiene una qualità comparabile o superiore a quella del pcm sfruttando le caratteristiche di memoria presenti nel segnale, e/o adattando alcuni parametri di funzionamento alle caratteristiche tempo varianti del segnale.

10.1.1.1 DPCM o PCM Differenziale

La prima variazione rispetto al pcm è stata quella di applicare il principio della codifica predittiva (pag. 1), semplicemente adottando il precedente campione di ingresso come predizione di quello successivo.
figure ae-1-dpcm.png
Figure 10.1 Codec audio Differential PCM o dpcm
Il corrispondente schema di elaborazione è mostrato in
figure ae-1-dpcm-b.png
fig. 10.1, ed il suo funzionamento è suddiviso in due fasi come rappresentato a lato: nella prima (T0) il codificatore sottrae il campione precedente (all’inizio nullo) all’attuale, e nella seconda (T1) questa differenza è risommata al valore di differenza precedente (all’inizio nullo) in modo da ri-calcolare il valore attuale, e salvarlo nel registro di memoria R. Il segnale differenza è caratterizzato da valori di ampiezza ridotti rispetto all’originale, e può essere codificato con 7 bit/campione, producendo ora una velocità di 56 kbps per ottenere un segnale di qualità telefonica. Il decodificatore si limita quindi a sommare alla differenza ricevuta il valore ricostruito del campione precedente, ed effettuare l’operazione di restituzione analogica. Osserviamo che il codificatore calcola il valore precedente mediante un circuito identico a quello presente al decodificatore, e per questo l’operazione è perfettamente invertibile.

10.1.1.2 ADPCM o DPCM Adattivo

Questo metodo differisce dal precedente per due aspetti: da un lato il processo di predizione tiene conto di più di un campione passato e non di uno solo come nel dpcm, come descritto in fig. 10.3
figure ae-2-dpcm3.png
Figure 10.3 Codec dpcm con predittore a tre coefficienti costanti
in cui è mostrato un predittore del terzo ordine che in pratica consiste in un filtro trasversale i cui coefficienti sono fissati in base alle caratteristiche statistiche medie del segnale vocale. Il secondo aspetto è che ora il quantizzatore modifica nel tempo la propria dinamica di azione (da cui il termine adattativo, o adattivo) in base ad una stima della dinamica del segnale.
figure dpcm-q(x).jpg
figure dpcm-var-est2.jpg
Figure 10.4 Quantizzatore a dinamica variabile (a sinistra) e stima della dinamica σ̂2x per via diretta (in altro a ds.) o backward (in basso) - tratto da http://cnx.org/content/m32074/latest/
Nel lato sinistro della fig. 10.4 è mostrata una caratteristica di quantizzazione uniforme operante su di una dinamica di ingresso φxσ̂x, con φx > 1 scelto in modo da rendere trascurabile la probabilità che un valore di ingresso troppo elevato determini la saturazione del quantizzatore. Utilizzando una stima a breve termine della varianza σ̂2x calcolata sugli ultimi campioni di segnale (a media nulla), ossia ad es. calcolando σ̂2x(n) = 1N Ni = 1x2(n − i), si possono rendere gli intervalli di decisione Δ piccoli nelle fasi di segnale piccolo, in modo da mantenere l’SNR costante anche per segnali con ampiezze molto variabili. Inoltre, è possibile omettere la trasmissione della stima di varianza se quest’ultima è calcolata in modalità backward, ossia a partire dai valori y(n) = Q[x(n)], dato che la stessa operazione è eseguibile in modo indipendente anche dal lato del decodificatore. La stima della varianza è ulteriormente semplificata se realizzata mediante una formula ricursiva, ossia
σ̂2x(n) = ασ̂2x(n − 1) + (1 − α)y2(n)
il cui risultato è mostrato in fig. 10.5, dove la linea tratteggiata rappresenta il valore istantaneo di y2(n), mentre quella continua mostra i valori di σ̂2x(n) ottenuti in modo ricursivo.
figure dpcm-var-est-recur.jpg
Figure 10.5 Stima ricursiva backward della varianza σ̂2x(n) confrontata con y2(n), per α = 0.9
La fig. 10.6 mostra infine i due estremi del codec adpcm, che rimangono sincronizzati anche nel caso di saturazione del quantizzatore adattativo.
figure adpcm.png
Figure 10.6 Architettura di un codec adpcm
Il miglioramento della qualità ottenibile ha determinato la possibilità di ridurre il numero di bit (e di conseguenza di livelli) del quantizzatore a 5, 4, 3, 2 bit/campione, a cui corrispondono rispettivamente velocità di codifica di 40, 32, 24, 16 kbps. Questi sono i valori a cui si riferisce lo standard itu-t G.721, successivamente confluito nel G.726.

10.1.1.3 Codifica per sottobande

Anche la raccomandazione G.722 è basata sulla codifica adpcm, ma applicata ad un segnale audio con banda più larga, riproducendo correttamente frequenze fino a 7 KHz. Ciò avviene dopo aver suddiviso le componenti frequenziali del segnale in due sottobande come mostrato in fig. 10.7, mediante una coppia di filtri passa-basso e passa-alto con frequenza di taglio comune a 3.5 KHz.
figure ae-3-adpcm.png
Figure 10.7 Architettura di un codec adpcm a sottobande
Il canale relativo alla semi banda superiore è campionato a frequenza di 16 kHz, mentre l’altro è praticamente equivalente al segnale in banda telefonica preso in esame fino ad ora. Per entrambi i canali è applicata la codifica adpcm, ma le rispettive velocità sono impostate in modo differente, dando più importanza alla componente di bassa frequenza, percettivamente più rilevante: ad esempio, si può scegliere di assegnare 16 kbps alle alte frequenze e 48 alle basse, ottenendo un totale di 64 kbps per una qualità risultante migliore del G.711, in quanto ora si opera su di un segnale a larga banda, con risultati idonei ad applicazioni come la videoconferenza.
Lo stesso schema di codifica per sottobande più adpcm è proposto anche dallo standard G.726, ma applicato ad un segnale a qualità telefonica, offrendo le velocità di 40, 32, 24 e 16 kbps.

10.1.2 Codifica basata su modello

I metodi fin qui discussi non tengono particolarmente conto della natura del segnale da codificare. Restringendo viceversa il campo al solo caso di segnale vocale, le conoscenze relative alla sua particolare modalità di produzione possono essere usate per ridurre le informazioni da trasmettere, costituite ora dai parametri che caratterizzano un suo modello di generazione. Essendo questo il dominio storico delle scienze linguistiche e fonetiche, svolgiamo una piccola digressione in tal senso.

10.1.2.1 Produzione del segnale vocale

L’apparato fonatorio viene idealizzato per mezzo del cosiddetto modello a tubi (vedi fig. 10.8),
figure head.jpg
figure tubi.jpg
Figure 10.8 Rappresentazione schematica del tratto vocale e relativo modello a tubi
in cui sia il tratto vocale (compreso tra le corde vocali e le labbra) che il tratto nasale (dal velo alle narici) sono pensati come una concatenazione di tubi di diversa sezione. Nei suoni vocalici la muscolatura della laringe determina la chiusura periodica delle corde vocali, interrompendo il flusso d’aria che le attraversa, e dando origine ad un segnale di eccitazione anch’esso periodico detto onda glottale, la cui frequenza è detta pitch[513]  [513] http://en.wikipedia.org/wiki/Pitch_accent_(intonation); la differenza di area delle diverse sezioni del tratto vocale provoca un disadattamento di impedenza acustica[514]  [514] Si applica in pratica la stessa teoria valida per le linee elettriche, in cui al posto di tensione e corrente, ora si considerano rispettivamente pressione p e velocità u e la conseguente formazione di onde riflesse (vedi fig. 10.9),
figure risonanze-voce.jpg
figure filtraggio-vocale.jpg
Figure 10.9 Natura delle risonanze del tratto vocale e loro effetto filtrante sull’onda glottale
che per lunghezze d’onda in relazione intera con la lunghezza del tratto vocale, determinano fenomeni di onde stazionarie, ovvero di risonanze[515]  [515] Si tratta di un fenomeno in qualche modo simile a quello che si verifica soffiando in una bottiglia, e producendo un suono che dipende dalla dimensione della stessa., le cui frequenze sono indicate in fonetica come formanti. Il verificarsi di tali risonanze genera un effetto filtrante che modifica lo spettro dell’onda glottale, producendo così il timbro corrispondente ai diversi suoni della lingua[516]  [516] I diversi suoni vocalici e/o consonantici (detti fonemi) sono prodotti mediante diverse posture articolatorie (la posizione di lingua, mascella e labbra), ovvero diversi profili d’area del tratto vocale, nonché l’attivazione o meno del tratto nasale. Presso https://www.youtube.com/watch?v=6dAEE7FYQfc è mostrato il video di una risonanza magnetica effettuata durante l’eloquio. In definitiva ai diversi fonemi corrispondono differenti frequenze formanti, e dunque una diversa risposta in frequenza.. Il tratto vocale termina quindi con l’apertura delle labbra, che nel modello a tubi corrisponde ad una impedenza di radiazione che produce un effetto di derivata, e dunque un’enfasi delle alte frequenze per lo spettro complessivo del parlato. Infine, il modello si assume valido anche per i suoni fricativi, prodotti anziché mediante le corde vocali, mediante una occlusione che causa turbolenza nel flusso d’aria.
Caratteristiche tempo-frequenza del segnale vocale
La parte sinistra di fig. 10.10
figure rab-onda.jpg
figure rab-sonog.jpg
Figure 10.10 Forma d’onda e spettrogramma per la frase should we chase?
mostra la forma d’onda relativa alla frase inglese “should we chase?” (dovremmo inseguire?) assieme alla relativa trascrizione fonetica[517]  [517] I simboli usati sono noti come arphabet, vedi http://en.wikipedia.org/wiki/Arpabet, e la pronuncia dovrebbe essere qualcosa del tipo sciuduiceis., mettendone in luce il carattere quasi periodico in corrispondenza delle vocali e quello tipo rumore per le consonanti, nonché la diversa durata dei vari suoni, l’assenza di confini temporali precisi tra gli stessi, e la diminuzione del periodo di pitch a fine frase, corrispondente all’intonazione crescente tipica di una frase interrogativa. In particolare, notiamo come per i suoni vocalici i singoli periodi di pitch siano caratterizzati da una brusca discontinuità prodotta dall’onda glottale, seguita da oscillazioni smorzate legate alle risonanze del tratto vocale.
Il segnale viene quindi campionato a 10 KHz e suddiviso in finestre di analisi, per le quali vengono calcolate delle dft, la cui densità di energia in dB è riprodotta in verticale mediante una scala cromatica come mostrato negli spettrogrammi[518]  [518] Tratti da https://books.google.it/books?id=Z6Otr8Hj1WsC presenti al lato destro di fig. 10.10, che permettono di valutarne la variabilità temporale delle caratteristiche spettrali. Il differente aspetto dei due diagrammi è dovuto alla diversa lunghezza di finestra, pari rispettivamente a 10 e 40 msec per il grafico superiore ed inferiore[519]  [519] Una finestra di 10 msec ha durata comparabile con il periodo di pitch, e ciò produce l’effetto a striature verticali del primo diagramma, meno pronunciato verso la fine, dove il pitch è più elevato. Una finestra di 40 msec si estende su più periodi di pitch, e determina una migliore risoluzione in frequenza, cosicché nel diagramma inferiore si possono notare delle striature orizzontali che corrispondono alle armoniche della frequenza di pitch.. In entrambe le rappresentazioni sono ben evidenti le traiettorie delle formanti, che evolvono in modo continuo, coerentemente con la velocità di articolazione del parlante.

10.1.2.2 Codifica a predizione lineare - LPC

Il modello di produzione e le caratteristiche illustrate portano a formulare un processo di codifica basato sulla suddivisione del segnale vocale in intervalli (o finestre di analisi) di estensione tra i 10 ed i 30 msec, durante i quali il segnale può essere considerato praticamente stazionario[520]  [520] Una sillaba può estendere la sua durata tra 10-15 msec per le vocali ridotte, fino a più di 100 msec per quelle accentate., e su tali finestre condurre una analisi (o stima) dei parametri del modello, che sono
e quindi trasmettere questi valori, in modo che in ricezione sia possibile riprodurre un segnale simile all’originale mediante un decodificatore del tipo illustrato in fig. 10.11.
figure ae-4-lpc.png
Figure 10.11 Schema di codificatore e decodificatore lpc
Il modello a tubi (e quindi basato sulle risonanze) del tratto vocale illustrato in fig. 10.9 si presta a considerare un filtro di sintesi di tipo numerico e ricursivo o iir (§ 5.3.2.2) di ordine p, che calcola il valore dei campioni di uscita yn a partire da una combinazione lineare di p campioni passati n = pi = 1aiyn − i, a cui sommare un errore di predizione en che rappresenta il processo di eccitazione, ovvero
(10.263)
yn = n + en = pi = 1 aiyn − i + en
Per ogni finestra di analisi i coefficienti ai (o coefficienti lpc del predittore di ordine p) si ottengono come quelli che rendono minimo il valore atteso dell’errore quadratico
E{e2n} = E{(yn − pi = 1 aiyn − i)2}
(ovvero, l’energia dell’errore), e sono individuati eguagliando a zero l’espressione delle derivate parziali di E{e2n} rispetto ai coefficienti aj. Scriviamo dunque
ajE{(yn − pi = 1 aiyn − i)2} = 2E{(yn − pi = 1 aiyn − i)yn − j} = 0
da cui si ottiene
(10.264)
E{ynyn − j} = pi = 1 aiE{yn − iyn − j}
Il valore atteso E{yn − iyn − j} viene stimato[521]  [521] Sottintendendo una ipotesi di stazionarietà ed ergodicità non vera, ma molto comoda per arrivare ad un risultato. come quello della autocorrelazione discreta calcolata sui campioni di segnale delimitati dalla finestra di analisi corrente, ovvero
(10.265)
E{yn − iyn − j} Ryy(|i − j|)    e, ponendo k = |i − j|  =  Ryy(k) = N − kn = 1 ynyn + k
dove l’estremo superiore della sommatoria varia in modo da includere solo i campioni effettivamente presenti nella finestra[522]  [522] La (10.265) è effettivamente una stima della autocorrelazione del segnale a durata limitata che ricade nella finestra di analisi, mentre l’inclusione nella sommatoria di un numero di termini pari al numero di campioni disponibili porta ad un diverso tipo di risultato, detto metodo della covarianza, ed un diverso modo di risolvere il sistema (10.266).. La (10.265) permette di riscrivere (10.264) come
Ryy(j) = pi = 1 aiRyy(|i − j|)
che valutata per j = 1, ⋯, p individua un sistema di p equazioni[523]  [523] dette di Yule-Walker, vedi ad es. https://it.wikipedia.org/wiki/Equazioni_di_Yule-Walker in p incognite
(10.266)
R(1) R(2) R(p)  =  R(0) R(1) R(p − 2) R(p − 1) R(1) R(0) R(p − 3) R(p − 2) R(p − 1) R(p − 2) R(0) a1 a2 ap
che può essere risolto nei termini dei coefficienti ai mediante metodi particolarmente efficienti[524]  [524]  In base alle assunzioni adottate, Ryy(j) risulta una funzione pari dell’indice j, e la corrispondente matrice dei coefficienti viene detta di Toeplix, consentendone l’inversione mediante il metodo di Levinson-Durbin (vedi https://en.wikipedia.org/wiki/Levinson_recursion), che presenta una complessità O(n2) anziché O(n3), come sarebbe necessario per invertire la matrice dei coefficienti.; ed i coefficienti utilizzati dal decodificatore per applicare la (10.263).
Il filtro autoregressivo che esegue il calcolo n = pi = 1aiyn − i è indicato come predittore, ed è associato ad un polinomio[525]  [525] Una breve analisi della relazione tra dft e trasformata zeta è svolta al § 4.5.1, ma vedi anche § 5.3.2.2. P(z) = pi = 1aizi; viceversa il filtro fir che valuta l’errore di predizione (o residuo) en = yn − pi = 1aiyn − i è indicato come filtro inverso o sbiancante, viene associato al polinomio A(z) = 1 − P(z), ed è mostrato nel lato sinistro della fig. 10.12.
figure prediz-lpc-sint.png
Figure 10.12 Filtro predittore, filtro inverso associato, e filtro di sintesi lpc
Indicando ora con Gun una codifica del residuo en, il segnale di partenza può essere (quasi) ri-ottenuto come mostrato nella parte destra della fig. 10.12, ossia facendo passare en attraverso il filtro iir H(z) = 1A(z) = 11 − P(z).
Dato che, in base a considerazioni che non svolgiamo, en è caratterizzato da una densità spettrale bianca, |H(z)|2 (calcolato per z = eiω) rappresenta una vera e propria stima spettrale del segnale di partenza, come mostrato in fig. 10.13 per diversi valori di p, verificando che per suoni vocalici si ottengono risultati accettabili già per valori di p tra 8 e 14, mentre per le fricative l’ordine può essere ancora inferiore.
figure lpc-stimaspettr.jpg
Figure 10.13 Approssimazione spettrale LPC per ordine di predizione p pari a 4, 8, 16 e 32
Stima del periodo di pitch
Resta ora da illustrare il modo di decidere se la finestra di analisi contenga un suono sordo o sonoro, e nel secondo caso, il suo periodo. Osserviamo che in media la frequenza di pitch risulta pari a circa 120 e 210 Hz nel caso rispettivamente di voci maschili e femminili, con una estensione che varia approssimativamente da metà al doppio del pitch medio[526]  [526] Il pitch varia durante la pronuncia di una frase in accordo alla sua semantica, alla lingua, ed all’enfasi emotiva impressa dal parlatore. Da un punto di vista musicale, la dinamica dei valori (da metà al doppio) si estende quindi su di un intervallo di due ottave. L’intera gamma dei registri dell’opera si differenzia per 22 semitoni, dal Mi2 del basso al Do4 del soprano, ovvero un rapporto di frequenze pari a 3,6.. La stima del periodo di pitch può essere realizzata a partire dalla funzione di autocorrelazione a breve termine (10.265), mostrata nella colonna di destra della figura che segue,
figure lpc-autoc-pitch.jpg
a fianco delle finestre di segnale su cui è stata calcolata[527]  [527] In realtà prima del calcolo della autocorrelazione il segmento di segnale è stato moltiplicato per una finestra di Hamming, che provoca lo smussamento visibile ai bordi., per un suono vocalico (sopra) e fricativo (sotto). Come evidente, nel caso del suono vocalico l’autocorrelazione presenta un primo picco a 9 msec ed un secondo a 18 msec, corrispondenti al periodo di pitch ed al suo doppio; viceversa nel caso del suono simile al rumore, non sono visibili picchi, come da aspettarsi nel caso di una segnale incorrelato. Pertanto, l’autocorrelazione può essere usata per indicare la presenza o meno di un suono vocalico, e nel caso affermativo, stimare il suo pitch.
Nella pratica per i suoni sordi si ottengono buoni risultati di sintesi usando come eccitazione un vero e proprio rumore bianco; d’altra parte, per i suoni sonori l’uso di forme d’onda impulsive con periodo pari al pitch stimato, sebbene capaci di produrre un bit rate riducibile fino a 2.4 kbps, non fornisce risultati particolarmente utilizzabili, producendo un voce piuttosto robotica. Per questo motivo, si sono sviluppate le tecniche seguenti.

10.1.2.3 Predizione lineare ad eccitazione residuale - RELP

Per ovviare alla sovra-semplificazione dello schema di sintesi riportato in fig. 10.11, dopo aver svolto l’analisi spettrale lpc il residuo di predizione relativo alla finestra di analisi viene effettivamente calcolato, applicando poi allo stesso una tecnica di codifica di forma d’onda[528]  [528] In questo modo si evita anche di dover operare una esplicita decisione sonoro/sordo, visto che in realtà le due fonti di eccitazione posso essere presenti contemporaneamente, come per i cosiddetti suoni affricati.: questo modo di operare è indicato come codifica relp (Residual Excited LP).
Analysis by synthesis - ABS
Anziché calcolare il residuo di predizione, codificarlo, e trasmetterlo in tale forma, la tecnica di analisi via sintesi adotta una tecnica ad anello chiuso, cercando di trovare quale segnale di eccitazione[529]  [529] Generato per tentativi, oppure da scegliere in un dizionario di sequenze di eccitazione già codificate. fornire al filtro di sintesi in modo che il risultato sia quanto più possibile simile al segnale originale (vedi fig. 10.15); i parametri del filtro di sintesi e della eccitazione sono quindi trasmessi al decoder. La funzione di minimizzazione opera dunque una vera e propria ricerca tra i possibili segnali di eccitazione.
figure abs.png
Figure 10.15 Schema di codifica vocale abs - Analysis by Synthesis
Filtraggio percettivo
Sempre in fig. 10.15 si mostra come il processo di minimizzazione prenda in considerazione un segnale di errore ottenuto filtrando l’errore
figure err-prediz-percettivo3.jpg
Figure 10.16 Spettro LPC vocalico e relativo filtro
di pesatura percettiva dell’errore di predizione
effettivo mediante un filtro di pesatura percettiva, il cui andamento frequenziale è sostanzialmente reciproco rispetto a quello stimato del segnale[530]  [530] Il filtro di pesatura percettiva si ottiene a partire dagli stessi coefficienti di predizione ai che descrivono l’andamento spettrale della finestra di segnale, definendo la sua trasformata zeta come W(z) = A(zα1)A(zα2) = H(zα2)H(zα1) in cui, se α1, 2 sono numeri reali, i poli di W(z) si trovano alle stesse frequenze di quelli di H(z) ma con raggio α2 volte maggiore, così come gli zeri di W(z) hanno modulo α1 volte maggiore. Scegliendo 0 < α1, 2 < 1 e α1 > α2 per la W(z) si ottiene l’effetto desiderato, e mostrato in fig. 10.16 (vedi fig. 10.16), in modo da attenuare la rilevanza dell’errore di predizione nelle regioni dove c’è più segnale[531]  [531] La procedura di minimizzazione determina una eccitazione tale da rendere bianco il residuo al suo ingresso; dato però che questo ha subito il filtraggio da parte di W(z), significa che le frequenze attenuate da W(z) sono in realtà enfatizzate nel segnale di errore reale. ed esaltarla invece nelle regioni con meno segnale, sfruttando così il fenomeno percettivo noto come mascheramento uditivo (vedi pag. 1). Anche se per questa via l’energia totale del rumore è maggiore, l’effetto soggettivo è migliore.
Multi pulse linear prediction - MPLP
Lo schema operativo suggerito dalla tecnica abs è stato inizialmente realizzato cercando di costruire la sequenza di eccitazione ottima (ossia in grado di minimizzare l’errore pesato percettivamente) come una sequenza di pochi impulsi sparsi, decidendone uno alla volta. Tale approccio prevede dunque di trovare l’ampiezza e posizione ottime per un unico primo impulso, quindi per un secondo (con il primo fisso), e così via, fino al numero di impulsi desiderati, tipicamente 4-5 ogni 5 msec, ottenuti suddividendo una finestra di 20 msec in quattro sotto-trame, ognuna con 40 campioni, se fc = 8000 Hz.
Regular pulse excitation with long-term prediction - RPE-LTP o GSM 6.10
Il metodo mplp presentava una complessità proibitiva, ma ha dato luogo alla versione semplificata rpe-ltp usata inizialmente nella telefonia gsm per fornire una velocità di 13 kbps. In questo caso, dopo aver determinato la posizione del primo impulso nella sottofinestra ne sono piazzati altri 9, ad intervalli regolari (un campione si e tre no), in modo che l’ottimizzazione riguardi solo i valori delle ampiezze.
Rispetto allo schema di fig. 10.15 viene inoltre aggiunto un predittore a lungo termine o ltp, utilizzato per rimuovere dal segnale di eccitazione l’eventuale periodicità caratteristica dei suoni vocalici, e stimato a partire da sotto-finestre consecutive (vedi fig. 10.17). Il filtro ltp in essenza consiste in un semplice ritardo pari al periodo di pitch
figure gsm-enc.jpg
- - - - - - - - - - - - - - - - - - - -
figure gsm-dec.jpg
Figure 10.17 Codifica e decodifica GSM 6.10 full rate o rpe-ltp
(e dunque p), ed il predittore ltp relativo (vedi lo schema di decodifica) ripropone in uscita una copia ritardata ed attenuata dell’uscita stessa. Il codificatore gsm pertanto determina ritardo e attenuazione dell’ltp in base all’analisi del residuo di predizione lpc[532]  [532] In effetti, mentre i coefficienti spettrali (denominati parcor in questo caso) sono determinati a partire dall’analisi dell’intera finestra di 20 msec, l’eccitazione rpe ed i parametri ltp sono ottenuti a partire da sottofinestre di 40 campioni, pari a 5 msec., e lo usa per reintrodurre la componente periodica nella sequenza rpe di cui si sta valutando l’idoneità. Una volta che al residuo lpc viene sottratta la componente predicibile per tramite del ltp, ciò che rimane risulta effettivamente assimilabile ad un rumore, ed è indicato anche come processo di innovazione.

10.1.2.4 Quantizzazione vettoriale dell’eccitazione

Dato che la codifica della sequenza di eccitazione impegna la maggior parte dei bit da trasmettere, si è fatta strada l’idea di... non codificarla affatto! Invece, viene realizzato un dizionario o codebook di possibili sequenze di eccitazione, e per ciascuna delle quali viene misurata la distanza tra essa e la sequenza vera. Ciò che viene trasmesso è quindi l’indice della codeword di minima distanza rispetto alla sequenza di eccitazione, e l’intero procedimento prende il nome di quantizzazione vettoriale[533]  [533] Vedi ad es. https://en.wikipedia.org/wiki/Vector_quantization.
figure lbgvq.gif.080.jpg
Figure 10.18 Regioni di decisione e centroidi
per un quantizzatore vettoriale bidimensionale
La costruzione del codebook è ottenuta partizionando la distribuzione campionaria dei vettori in più regioni di decisione come quelle mostrate nell’esempio di fig. 10.18, in modo che ciascun vettore possa essere classificato[534]  [534] Per questa classificazione, così come per poter definire l’insieme dei centroidi, occorre che sia definita una funzione di distanza tra vettori. come interno ad una di esse, e venire quindi rappresentato dal centroide (i punti rossi) associato alla regione. I centroidi ed i confini di decisione sono determinati mediante un procedimento iterativo tale da minimizzare l’errore quadratico medio di rappresentazione[535]  [535] Vedi http://www.data-compression.com/vq.html (al 11/2021 non sembra rispondere), ma anche la nota 165 a pag. 1, così come https://en.wikipedia.org/wiki/K-means_clustering.
I valori che descrivono le sequenze di eccitazione (vettori) associate ai centroidi del codebook sono noti anche al lato di ricezione, in modo che ogni particolare sequenza possa essere rappresentata, anziché da tutti i suoi campioni, dal solo indice della codeword del centroide più vicino: al solito, utilizzando M bit per rappresentare l’indice, il codebook sarà formato da 2M diverse codeword. Oltre al codebook utilizzato per rappresentare le sequenze di innovazione, la codifica del segnale vocale si può avvantaggiare anche di un secondo codebook, usato per approssimare il vettore dei possibili coefficienti spettrali.

10.1.2.5 Predizione lineare ad eccitazione codificata - CELP

figure celp-enc.jpg
Figure 10.19 Codificatore e decodificatore CELP
La fig. 10.19 mostra lo schema realizzativo di un codificatore celp, in cui sono evidenziati il filtro di predizione a lungo termine ed il filtro lpc, stimati in modalità ad anello aperto, ed il filtro percettivo che fa in modo che la densità spettrale dell’errore di predizione sia concentrata nelle regioni dove è presente segnale.
Per ogni codeword di eccitazione selezionata dal codebook, e per il guadagno associato, viene calcolata l’energia dell’errore ottenuto, ed il risultato confrontato con
figure celp-dec.jpg
quello ottenibile mediante le altre codeword, finché non si trova la codeword che minimizza l’errore. Ovviamente questo modo di procedere è estremamente oneroso, ma si sono trovati metodi di ricerca più efficienti adottando tecniche di costruzione del codebook come combinazione di sequenze elementari, dando luogo alla famiglia dei codificatori algebrici o acelp[536]  [536] Vedi ad es. https://en.wikipedia.org/wiki/Algebraic_code-excited_linear_prediction.
D’altra parte, anche l’identificazione del ltp può essere ricondotta ad una ricerca ad anello chiuso, stavolta nell’ambito di un codebook adattivo, costruito a partire dalla precedente sequenza di eccitazione ottima, replicata in forma traslata di un campione
figure celp-enc-bis.jpg
Figure 10.21 Codificatore celp con codebook adattivo per la predizione a lungo termine
alla volta, come illustrato in fig. 10.21, che mostra appunto l’uso della eccitazione per la trama precedente per popolare il codebook adattativo: da questo viene quindi individuata la codeword Ia ed il guadagno Ga ottimi, e quindi individuata la codeword di innovazione Is e Gs ottimi, riferiti ad un codebook detto stocastico perché costituito da sequenze pseudo casuali. Infine, in fig. 10.21 viene mostrato come anche i coefficienti spettrali lpc sono trasmessi mediante una codeword (lsp o line spectrum pair) derivata da un processo di quantizzazione vettoriale. Possiamo elencare i seguenti standard che adottano una tecnica di questo tipo:

10.1.3 Codifica psicoacustica

Mentre la codifica di forma d’onda (§ 10.1.1) non fa assunzioni a riguardo della natura del segnale, i metodi esposti al § 10.1.2 sono tutti fortemente orientati a rappresentare segnali vocali. Viceversa, il gruppo di lavoro mpeg di iso si è dedicato ad individuare metodi di codifica idonei alla trasmissione di segnali multimediali di natura qualsiasi, come ad esempio brani musicali. Inoltre, i vincoli relativi al basso ritardo necessario ad assicurare un buon grado di interattività vengono meno, e si possono dunque intraprendere elaborazioni più complesse, e che richiedono un tempo maggiore. Infine, vengono trascurati rigidi vincoli sulla velocità risultante, accettando invece che questa vari nel tempo in funzione del tipo di segnale da rappresentare.
Come vedremo tra breve, per queste tecniche si fa di nuovo uso di una codifica per sottobande, introdotta nella discussione dell’adpcm, tenendo però anche conto di caratteristiche molto importanti della percezione sonora, il cui sfruttamento è già stato illustrato nella discussione del filtro di pesatura percettiva, ma che ora hanno un impatto ancora maggiore sulla realizzazione del codificatore. I codificatori che fanno uso di queste caratteristiche sono l’MPEG layer 3 o mp3, il Dolby ac, e l’advanced audio coding o aac.
Sensibilità uditiva e mascheramento in frequenza
La fig. 10.22-a mostra la curva di sensibilità del sistema uditivo,
figure ae-51-freqmask.png
Figure 10.22 a) sensibilità uditiva alle diverse frequenze; b) mascheramento uditivo
ovvero il livello di intensità minimo perché possa essere percepito un suono: come si vede, questo è molto variabile con la frequenza, per cui anche se il suono B (sinusoide o tono puro) ha la stessa intensità di A non può essere udito, mentre invece A si. Ma ad una analisi più approfondita, si scopre che la presenza di un suono in una determinata regione di frequenza ha l’effetto di modificare la curva di sensibilità per le frequenze vicine, di fatto mascherando suoni a frequenze vicini che altrimenti avrebbero superato la soglia di sensibilità, come mostrato in fig. 10.22-b: la presenza del suono B rende A non più udibile.
In realtà, l’estensione in frequenza per cui si verifica l’effetto di mascheramento dipende sia dalla frequenza del tono mascherante (come mostrato dalle curve in fig. 10.23
figure ae-52-tempmask.png
Figure 10.23 Variazione della banda critica in funzione della frequenza
ottenute con toni a 1, 4 ed 8 kHz) che dalla sua intensità. In particolare, la banda delle frequenze mascherate viene detta banda critica ed ha una estensione differente alle diverse frequenze: si trova che sotto i 500 Hz la banda critica ha una estensione di circa 100 Hz, mentre a frequenze superiori aumenta (circa) linearmente per multipli di 100 Hz. Ad esempio, un segnale ad 1 KHz (2x500) produce una banda critica di 200 Hz (2x100), mentre a 5 kHz (10x500) questa vale circa 1 kHz (10x100).
Mascheramento temporale
figure ae-52b-tempmask.png
Figure 10.24 Mascheramento temporale
Il secondo effetto percettivo riguarda ancora una modifica alle curve di sensibilità, stavolta in modo non selettivo in frequenza, ma che coinvolge tutte le frequenze: si verifica infatti che dopo aver udito un suono forte, per il tempo necessario all’estinzione del suono e che tipicamente dura qualche decina di millisecondi (vedi fig. 10.24), l’orecchio non è più in grado di percepire suoni con intensità minore a quello che si sta estinguendo.
MPEG layer 3
Il gruppo di lavoro mpeg di iso ha definito uno standard di codifica audio basato su tre livelli di complessità (e potere di compressione) crescente, ed il terzo (o mp3) è quello di gran lunga più popolare, anche grazie alla diffusione che ha avuto via Internet. Lo schema di funzionamento di principio è mostrato in fig. 10.25:
figure ae-6-mpeg.png
Figure 10.25 Codec percettivo mpeg
il segnale campionato in ingresso (a 32, 44.1 o 48 kHz) transita attraverso un pcm encoder che esegue un filtraggio[538]  [538] Eseguito mediante un banco di filtri polifase, vedi § 5.4 oppure ad es.
http://en.wikipedia.org/wiki/Polyphase_quadrature_filter o
http://cnx.org/content/m32148/latest/. Le uscite dei filtri polifase, anche se campionate a frequenza inferiore della velocità di Nyquist, sono esenti da aliasing, che viene cancellato dall’effetto delle altre sottobande.
in 32 sottobande di eguale ampiezza, le cui uscite sono campionate a frequenza 132 di quella di ingresso. Ogni 384 campioni di ingresso (pari a 12 msec se fc = 32 kHz) sono quindi prodotti 384 ⁄ 32 = 12 campioni per ogni sotto-banda, e per ognuna di esse è individuato il valore del campione più grande, che contribuisce sia ad impostare la dinamica del quantizzatore per quella banda, sia come parametro per il modello psicoacustico.
Il modello psicoacustico riceve le informazioni prodotte da un banco di filtri di analisi realizzati mediante una mdct,[539]  [539] Vedi http://en.wikipedia.org/wiki/Modified_discrete_cosine_transform che produce una stima spettrale con risoluzione maggiore di quella del primo banco di filtri, su cui basare le valutazioni di mascheramento uditivo, che a loro volta determinano per ogni sottobanda l’indicazione di un signal to mask ratio (SMR), che a sua volta determina quanti bit utilizzare (e quindi quanti livelli) per la quantizzazione Q dei campioni relativi alle singole sottobande. Quelle contraddistinte da una maggiore sensibilità (ovvero nelle quali si percepiscono anche suoni deboli) saranno quantizzate con più accuratezza, e quindi con più bit e meno rumore; mentre le sottobande caratterizzate da una sensibilità inferiore possono essere quantizzate con meno bit, almeno finché l’SNR di quantizzazione si mantiene superiore all’SMR, dato che in tal caso il rumore è mascherato, e dunque non viene udito. Quindi, i 12 campioni delle 32 sottobande sono quantizzati tenendo conto sia della dinamica effettiva, che del numero di livelli in cui suddividere la dinamica. Infine, viene prodotta una struttura di trama che contiene, oltre ai campioni, anche le informazioni sulla effettiva allocazione dei bit.
Ad una futura edizione, una trattazione più approfondita.
Riferimenti
Si citano dei riferimenti essenziali sulla codifica audio, da cui sono anche tratte alcune illustrazioni
 Capitolo 10: Codifica di sorgente multimediale Su Capitolo 10: Codifica di sorgente multimediale Sezione 10.2: Codifica di immagine