| Panoramica
sullo standard MPEG |
L' Mpeg/Audio è uno standard internazionale riconosciuto
dall'ISO, che è l'organizzazione internazionale preposta alla
approvazione definitiva di uno standard. È stato varato ufficialmente
nel 1992 quando lo stato dell'arte dell'home computing era
il '386. Esso è solo una branca degli standard di cui si occupa
il comitato MPEG, come si vede dalla figura qui in
basso:

Il layer2 e il layer3 (layer significa strato) sono
versioni migliorate del livello 1. In linea di massima, offrono
una migliore compressione e qualità audio appoggiandosi a
codificatori e a modelli psico-acustici che richiedono maggiori
risorse di elaborazione. Ecco perchè qualche anno fa si diceva
che occorresse disporre almeno di un Pentium II 233 MHz per
codificare efficientemente un brano in MP3. Oggi le risorse
di calcolo disponibili sono sprecate e per effettuare un conversione
di un file wav in un file MP3 impostando la massima qualità
occorrono al massimo un paio di minuti. MP3 sta per Mpeg layer
3, ed era fino a poco tempo fa il sistema di codifica che
realizzava il miglior rapporto qualità/dimensione dei file
audio. Una versione recente e migliorata è l'MP3pro,
del quale parleremo ampiamente in un prossimo articolo. I
file codificati con il layer 2 e il layer 1 sono leggibili
dai lettori per il layer 3 ma non viceversa. Vale cioè la
retrocompatibilità.
Come funziona
L 'algoritmo di codifica è composta di diversi steps
che, grosso modo, possono essere così riassunti:
1) Si usano dei filtri per dividere il segnale audio
che è campionato con una certa frequenza, ad esempio di 44100
campioni al secondo, in 32 sottobande , per ognuna delle quali
sono noti i parametri di mascheramento nel tempo e in frequenza
(si fa riferimeto al modello psicoacustico introdotto prima)
2) Per ognuna delle sottobande, viene calcolata l'entità
del mascheramento causata dalle bande adiacenti.
3) Se la potenza in una sottobanda è sotto la soglia
di mascheramento, allora non viene codificata in uscita l'informazione
che essa trasporta, poichè sarebbe inudibile.
4) Altrimenti, occorre calcolare il numero di bit necessari
per rappresentare l'informazione della sottobanda facendo
attenzione che in questo procedimento, per sua natura approssimante
e dunque rumoroso, il rumore introdotto stia sotto la soglia.
5) Infine, formare il flusso di bit (bitstream) in
uscita.
Il diagramma a blocchi della codifica MP3 può essere
così schematizzato:

Per
capire il funzionamento facciamo un esempio:
Dall'esame del bitstream di ingresso, che viene suddiviso
in 32 sottobande, abbiamo calcolato il livello massimo del
segnale in ognuna di queste e abbiamo ottenuto una tabella
di questo tipo, ove per semplicità considero solo 16 dei 32
intervalli:
| Banda |
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
11
|
12
|
13
|
14
|
15
|
16
|
| Livello(dB) |
0
|
8
|
12
|
10
|
6
|
2
|
10
|
60
|
35
|
20
|
15
|
2
|
3
|
5
|
3
|
1
|
Esaminiamo la banda numero 8. Dai dati del nostro modello
psicoacustico, sappiamo che l'ottava banda, se presenta una
intensità di 60dB, genera una maschera di 12dB nella settima
e di 15dB nella nona. La settima ha un livello pari a 10(<12dB),
ed è perciò mascherata e tagliata via dall'uscita. La nona
è a 35dB(>15) così passa in uscita . Con quanti bit la quantizzo?
Mica posso far passare 16 bit per ogni campione! La teoria
dell'informazione mi dice che per ogni bit di quantizzazione
utilizzato aumento di 6dB il rapporto segnale/rumore. Siccome
non devo scendere sotto il limite di mascheramento (punto
4 dell'algoritmo) che è di 15 dB, posso usare al minimo 3bit
per quantizzare i dati. Se usassi meno di tre bit, otterrei
un rumore di quantizzazione troppo alto che verrebbe avvertito
compromettendo la qualità finale. Ora, in realtà questo era
il modello di base, valido per tutti e tre i layers dell'M-PEG,
l'MP3 introduce invece alcune migliorie, che si pagano in
termini di risorse di sistema impiegate.
L'
MP3 in specifico
L'MP3 utilizza sempre il blocco dei filtri, però a
differenza dei layers 1 e 2 le sottobande non sono tutte della
stessa dimensione, poiche certe frequenze contengono molta
più informazione e vanno trattate con maggiore dettaglio.
Il layer 3 inoltre fa uso di una MDCT, cioè di una trasformata
discreta del coseno modificata. In breve si tratta di effettuare
una operazione che consenta di migliorare la risoluzione in
frequenza per ognuna delle sottobande. Questa operazione consente
di suddividere ognuna delle 32 sottobande in ulteriori 6(short)
o 18(long) sottofrequenze, secondo un processo noto come filtraggio
sottobanda (sub-band filtering).
Il modello psico-acustico lavora ulteriormente su
queste sotto-sottomaschere, in particolare sui coefficienti
della MDCT che le rappresentano. Il modello psico-acustico
deciderà quali coefficienti devono passare in uscita e quali
no, sulla base del calcolo del mascheramento temporale e sul
fatto che alcuni di questi sono ridondanti giacchè magari
provengono dai canali sinistro e destro che spesso portano
la medesima informazione. A questo punto il tutto è quasi
pronto. I coefficienti "sopravvissuti" contengono le informazioni
necessarie alle varie frequenze e devono ora essere organizzati
in uscita. I coefficienti vengono ordinati passando dalla
frequenza più bassa a quella più alta. Poichè la massima informazione
è contenuta in bassa frequenza, i coefficienti di bassa frequenza
sono più numerosi di quelli in alta frequenza.(e infatti i
puristi lamentano la scarsa efficienza dell'MP3 per la riproduzione
delle alte frequenze). L'intero intervallo viene diviso in
tre parti (frequenze basse, medie e alte). Ognuno di questi
intervalli viene codificato a parte secondo l' algoritmo di
Huffmann, che è uno degli algoritmi basilari nella teoria
della compressione (per capire come funziona l'algortmo
di Huffman, andate a
vedere questo box). L'algoritmo è ottimizzato per ognuno
dei tre intervalli. A questo punto i dati vengono inviati
in uscita sotto forma di pacchetti che contengono un CRC(codice
per la correzione dell'errore) per rendere il sistema più
robusto agli eventuali errori che si possono presentare durante
il trattamento del file. Il fattore di compressione che tipicamente
si ottiene è quello di 1:11 (128Kbit/s), per cui è
possibile immagazzinare un minuto di musica in poco meno di
un megabyte.
Abbiamo visto che esistono tecniche ottime per la compressione
della voce (il CELP, ad esempio, che è ottimo per il
trasferimento del segnale vocale su Internet) e della musica
(l'MP3). Entrambe sono tecniche lossy, e fanno
uso del medesimo principo per il quale l'apparato uditivo
umano è incapace di rivelare certi suoni per via del mascheramento
temporale e frequenziale. Il CELP è inutilizzabile per codificare
la musica, poichè produrrebbe risultati scadentissimi, mentre
l'MP3 è eccessivamente articolato per essere utilizzato efficacemente
nella codifica in tempo reale della voce. Un nuovo standard,
che incorpora sia la codifica della voce che quella della
musica, è l'MPEG4, varato nel 1998. Per avere una idea
della complessità che sta dietro questa tecnologia, basta
menzionare il fatto che per comprimere il parlato abbina le
tecniche CELP e HXVC (harmonic vector excitation coding),
mentre per codificare la musica usa il TWIN-VQ e l'AAC. Interessante
anche l'evoluzione diretta dell'MP3, l'MP3Pro che permette
un fattore di compressione quasi doppio a parità di
qualità sonora. Di questi standard in via di definizione
ce ne occuperemo comunque in un prossimo articolo.
Lorenzo
Marchetti