Dentro l' MP3
Cos'e' l'MP3
L'MP3 e' uno standard del Motion Picture Experts Group (MPEG) sulla compressione audio digitale.
La compressione audio MPEG (MPEG-1) e' strutturata su tre livelli con caratteristiche qualitative diverse e vengono chiamati sinteticamente: MP1, MP2, MP3.
La compressione audio (in generale) puo' essere di due tipi:
- Lossy, cioe' con perdita (di informazioni).
- Lossless, cioe' senza perdita (di informazioni).
L'MP3 e' di tipo Lossy, cioe' comprimendo un file audio in formato MP3 si perde in qualita' audio.
La perdita pero', non e' avvertita dall'orecchio umano (o comunque e' avvertita in misura variabile alla qualita' della compressione) perche' vengono sfruttate alcune caratteristiche del nostro udito.
Il modello Psicoacustico (dell'orecchio)
Per capire l'algoritmo alla base dell'MP3, bisogna capire il funzionamento dell'orecchio umano e di come questo percepisce i suoni.
- Solo i suoni compresi tra 20Hz e 20KHz (circa) sono udibili. Questo significa che posssiamo eliminare tutti i suoni (armoniche) al di fuori di questo range.
- La massima variazione di intensita' di un suono e' di circa 96dB.
- La soglia di udibilita' varia con la frequenza e con l'intensita' del suono, con un andamento del genere:
(curva di Fletcher - Munson)
- In un segnale, le componenti a determinate frequenze "mascherano" le componenti a frequenze leggermente piu' elevate ma con intensita' (livelli) piu' basse.
Le curve di Mascheramento (delle frequenze) hanno un andamento del genere:
(in figura si vedono le frequenze mascherate da quattro componenti a frequenza 0.25, 1, 4, 8 KHz e con livelli di segnale superiore alla soglia di udibilita')
- L'orecchio ha una limitata "selettivita' delle frequenze" ( un limitato "potere risolutore") variabile con la frequenza stessa.
L'orecchio cioe', non e' un filtro ideale.
Cosi' lo spettro uditivo e' stato diviso in "bande critiche", con larghezza variabile in funzione della frequenza.
La larghezza della banda critica, chiamata Bark, e' data da:
freq/100 per le frequenze minori di 500 Hz
9 + 4 log( freq/1000 ) per le frequenze maggiori di 500 Hz
- Mascheramento temporale: dopo un suono "forte" passa un po di tempo prima che il nostro orecchio riesca a sentire un suono piu' debole (ma con frequenza vicina).
La curva di Mascheramento temporale ha un andamento del tipo:
(si vedono le frequenze "mascherate" (da un "tono" ad una determinata frequenza) e il tempo in cui vale il mascheramento)
L'algoritmo di compressione
L'algoritmo di compressione segue i seguenti passi:
- Un banco di filtri scompone il segnale in 32 bande, che approssimano le bande critiche.
- Seguendo il modello psicoacustico si determina un "fattore di mascheramento" per ogni banda.
- Se in una banda il livello di segnale (mascherato) e' inferiore alla soglia, questa banda non viene codificata.
- Si calcola il numero di bit necessario per codificare ogni banda, facendo in modo che il rumore di quantizzazione introdotto sia minore dell'effetto di mascheramento.
(cioe' il minor numero di bit necessario a rendere non udibile il rumore di quantizzazione)
- Infine si crea lo stream audio.
Facciamo un esempio:
Se abbiamo le prime 16 bande di un segnale con questi livelli:
------------------------------------------------------------------------
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
------------------------------------------------------------------------
L'ottava banda da un fattore di mascheramento di 12 dB alla settima e di 15 dB alla nona.
Siccome il livello della settima banda e' 10 dB, che e' minore di 12 db (fattore di mascheramento), questa non viene codificata.
Il livello della nona banda, invece, e' di 35 dB, che e' maggiore di 15 dB, quindi verra codificata.
(Premessa: ogni bit di quantizzazione introduce circa 6 dB di rumore)
Essendo di 12 dB il fattore di mascheramento della nona banda, posso avere al massimo due bit di errore di quantizzazione.
I 3 livelli di compressione
Possiamo avere tre livelli di compressione, con qualita' e fattori di compressione crescenti.
Per tutti e tre i livelli, l'encoder divide i dati in frame, come nella figura:
Livello 1:
- tutti i filtri hanno stessa larghezza di banda;
- del modello psicoacustico e' utilizzato solo il mascheramento delle frequenze;
- ogni gruppo di 12 campioni (samples) riceve un bit di "allocazione" ed un fattore di scala (se il bit di allocazione non e' zero);
(il bit di allocazione determina quanti bit saranno usati per rappresentare ogni campione)
(il fattore di scala e' un moltiplicatore che dimensiona il campione, per massimizzare la risoluzione del quantizzatore).
- Un frame contiene 32 gruppi di 12 campioni: un header, dati audio, un CRC opzionale ed aventuali dati aggiuntivi.
Livello 2:
- Un frame contiene 32 gruppi di 3 per 12 campioni;
- utilizza un modello semplificato per il mascheramento temporale.
Livello 3:
- I filtri hanno larghezza di banda differente (come richiesto dal modello psicoacustico);
- utilizza il mascheramento temporale;
- tiene conto della ridondanza dei due canali (stereo);
- usa il codificatore di Huffman.
Conclusione
- Fattore di compressione variabile da 2.7 a 24
- Con un fattore di compressione 6:1 non si riesce a distringuere l'originale dal compresso.
( campionando a 16bit e 48KHz, si hanno 256Kbit/s compressi)