Trucchi, segreti degli mp3 - come, perchè funziona



Ma come fa questo algoritmo a raggiungere tali livelli di compressione?

Provando infatti a comprimere un file audio in formato .WAV ( cioe' trasferito da cd senza alcuna forma di codifica) con normali programmi di compattazione (WinZip, WinRar, pkzip, gzip, etc...), che pure hanno algoritmi complicati e molto efficienti, si scopre che e' praticamente impossibile raggiungere tali livelli di compressione.

Come mai?

La spiegazione e' duplice; in primo luogo, l'algoritmo di compressione MP3 e' stato disegnato appositamente per gestire file audio, che hanno determinate caratteristiche statistiche; infatti e' possibile trovare in un brano musicale una certa correlazione piu' o meno marcata tra campioni adiacenti, sintomo di una ridondanza statistica; questa ridondanza puo' essere tranquillamente tolta utilizzando particolari codifiche ( predizione lineare, codifica entropica come la codifica di Huffman, unione dei frame) che, senza modificare il segnale audio, permettono di ottenere una prima diminuzione delle dimensioni del file di circa 2:1. Ad esempio una funzionalita' dell'algoritmo MPEG che sfrutta proprio questo concetto per ottimizzare la codifica di segnali audio stereo e' la cosiddetta codifica di tipo "joint-stereo", che cioe' sfrutta le similitudini ( correlazioni) tra i 2 canali audio ( destro e sinistro) per riuscire ad ottenere una compressione molto piu' efficace.

In questo modo non si perde comunque nessuna informazione; con un algoritmo inverso risulta poi possibile ritornare al segnale originario.

Ma la potenza degli algoritmi MPEG di compressione audio e' determinata principalmente dall'utilizzo contemporaneo di altri metodi di codifica, che applicano, a differenza di quelli appena visti, una compressione detta "lossy" cioe' "con perdita" di dati.

"EEEHHH? E allora perche' quando ascolto un file MP3 non sento alcuna differenza rispetto al file ascoltato direttamente da CD?"
Perche' l'algoritmo e' molto "furbo" e calcola, mediante precise tabelle su cui e' descritta la percezione del sistema uditivo umano, le parti di informazione audio che, seppur presenti, non vengono fisicamente percepite dall'orecchio. In questo modo non riusciro' piu' a ricostruire perfettamente il segnale originario, ma, nell'ascoltarlo, non notero' alcuna differenza, perche' ho tolto solamente dei segnali inutili. Questa codifica con perdita si basa sul fatto che l'orecchio umano non e' il migliore dispositivo per la ricezione di onde acustiche e quindi di segnali audio. Alcuni dei limiti dell'apparato uditivo umano sono stati quindi utilizzati per togliere dalle traccie audio le informazioni inutili (non fisicamente percepibili); questi limiti sono la non-linearita' e la soglia adattativa di udibilita'. Un dispositivo non-lineare ha la caratteristica di trattare le frequenze audio che riceve in maniera diversa le une dalle altre, producendo uno sgradito effetto distorsivo; questo fenomeno per esempio deve essere quasi nullo nei sistemi hi-fi, dove il suono deve venire trasmesso fedelmente dall'amplificatore alle casse senza alcuna distorsione. La soglia di udibilita' invece e' il livello minimo sotto il quale un suono non e' percepito. Varia con la frequenza e anche da individuo a individuo, ma per la stragrande maggioranza delle persone l'intervallo di massima sensibilita' e' posto tra i 2 e i 5 kHz. Questa soglia di udibilita' e' anche adattativa, nel senso che viene costantemente cambiata dai suoni percepiti. Per esempio, una normale conversazione in una stanza e' perfettamente udibile in condizioni normali; ma se durante la piacevole chiaccherata si aggiunge un rumore molto forte, come potrebbe essere il passaggio di un aereo, la conversazione non risulta piu' udibile, perche' le soglie di udibilita' delle 2 persone sono state distorte. Al termine del passaggio dell'aereo le soglie di udibilita' ritornano ai loro valori normali. I suoni che non risultano udibili a causa dell'adattamento dinamico della soglia di udibilita' vengono detti "mascherati". Questo effetto si riscontra in particolar modo nella musica: una orchestra che stesse suonando una partitura con volume elevato, farebbe risultare le parti di alcuni singoli strumenti non udibili dall'orecchio di un ascoltatore. Quando la musica viene registrata ( ad esempio su di un CD), comunque, a causa della risposta uniforme ( cioe' non adattativa) del dispositivo di registrazione, tutte le frequenze indistintamente finiscono sul supporto audio. Quando la musica viene riprodotta, pero', gli strumenti mascherati non saranno udibili all'orecchio dell'ascoltatore, e quindi e' come se non ci fossero. Per questo motivo le parti del mezzo di registrazione che contengono dati non udibili potrebbero invece essere utilizzate per contenere dati che al contrario sono udibili; cosi' posso ridurre considerevolmente lo spazio che mi serve per memorizzare informazioni audio, senza alcuna perdita nella qualita' della registrazione.

Nelle figure seguenti trovate un semplicissimo esempio del fenomeno del mascheramento.


figura 1 Sia questo (con un po' di fantasia) il segnale musicale campionato, che vogliamo cercare di codificare sfruttando il fenomeno del mascheramento.


figura 2 Ecco come si presenta il suo spettro, cioe' il suo contenuto frequenziale; abbiamo 2 righe non nulle (rappresentate dai cerchietti rossi che stanno ad "altezza" diversa da 0); la riga a frequenza maggiore, indicata dalla freccia blu, ha una ampiezza nettamente inferiore ( circa 1/10) rispetto alla componente in frequenza che le e' vicina (in alto a sinistra); proviamo allora a togliere questa riga piu' piccola meno significativa.


figura 3 Abbiamo tolto delle informazioni che pero' speriamo non siano importanti per la successiva ricostruzione del segnale; teniamo quindi solo la componente in frequenza indicata dalla freccia blu.


figura 4 Ecco come il segnale verra' allora ricostruito dal decodificatore! Verifichiamo ( figura sotto ) che la nostra scelta abbia comunque conservato le caratteristiche originali del segnale.


figura 5 Confronto tra il segnale di partenza ( sinistra) ed il segnale modificato ( destra). Indubbiamente e' leggermente cambiato, ma la forma e l'ampiezza dell'onda sono rimaste molto simili a prima; questo dimostra che abbiamo realmente mantenuto le componenti in frequenza piu' importanti, permettendo di non percepire in riproduzione alcuna differenza tra i 2 segnali.

Scendendo un po' piu' nei particolari, di seguito vengono riportati i passi che l'algoritmo di codifica MPEG esegue sui dati audio:

  • Decomposizione in sotto-bande mediante un banco di filtri polifase.

    Il segnale audio a banda larga viene decomposto in 32 sottobande mediante uno pseudo-filtro QMF (Quadrature Mirror Filter) implementato con la cascata di una struttura polifase ed di una DCT ( Discrete Cosine Transform). Per aumentare la risoluzione in frequenza, il "layer III" decompone ognuna delle 32 sottobande in un massimo di 18 ulteriori sottobande equispaziate. La maggiore risoluzione frequenziale offre una aumento del guadagno della codifica, pero' puo' anche creare una fastidiosa perdita di risoluzione temporale ( soprattutto per segnali impulsivi), per cui le sottobande da 18 possono essere diminuite a 6.

  • Calcolo dei parametri del modello psicoacustico mediante una FFT (trasformata veloce di Fourier).

    Sono stati studiati 2 modelli psicoacustici per lo standard MPEG 1; il primo di solito e' utilizzato dagli algoritmi layer I-II, mentre il secondo dal layer III.

  • Allocazione dinamica dei bit con riferimento ai parametri del modello psicoacustico.

    In questo passo si cerca di determinare il minimo numero di bit necessario per codificare le singole sottobande, in modo che non ne venga variata la percezione.

  • Quantizzazione e codifica dei segnali in sotto-bande.

    La quantizzazione e' fatta per ogni sottobanda, utilizzando esclusivamente i bit che sono stati alloccati per essa nel passo precedente.

  • Multiplex e impacchaggio dei frame

Vediamo ora brevemente come funziona l'analisi psicoacustica, che sfrutta la non-linearita' dell'orecchio umano.

I risultati sulla percezione umana che vengono usati per la codifica derivano dai lunghi studi compiuti dal professor Zwicker.

Una prima compressione viene effettuata mediante la ricerca e l'analisi delle bande di frequenza critiche e delle soglie assolute.

Infatti l'apparato uditivo umano analizza i segnali a banda larga nelle cosiddette bande critiche. Lo scopo di questa analisi e' quello di decomporre il segnale audio in sotto-bande ( le bande critiche) e poi quantizzare e codificare questi segnali sotto-banda.

Siccome la percezione dei suoni sotto la soglia assoluta non e' possibile, i segnali sotto-banda che si trovano sotto questa soglia non vengono codificati e neanche trasmessi.

Le bande critiche hanno la seguente dimensione:

deltaFG = 25 + 75*(1+1.4*(f/kHz)^2)^0.69
La soglia assoluta ( per assoluto silenzio) denota la curva di livello di pressione dei suoni a seconda della frequenza, che e' strettamente legata alla percezione dei toni sinusoidali.

Sotto questa soglia, calcolata empiricamente, non e' possibile sentire alcun segnale.

In ogni banda critica, la differenza tra il livello del segnale e la soglia assoluta e' responsabile per la scelta dei passi di quantizzazione appropriati per ogni banda critica.

Nella seconda fase della compressione vengono sfruttati gli effetti del mascheramento che l'apparato uditivo umano applica ai segnali.

Per un rumore a banda limitata, oppure un segnale sinusoidale, sono state ricavate le soglie di mascheramento dipendenti dalla frequenza.

Queste soglie effettuano un mascheramento di quelle frequenze che hanno ampiezza minore di esse.

L'algoritmo completo fa uso anche delle gia' accennate bande critiche, ma, data la evidente complessita' matematica, non verra' qui trattato.



Ma come fa questo algoritmo a raggiungere tali livelli di compressione?

Speciale MP3, argomenti trattati:

Il formato MP3
> Audio e computers
> La nascita del formato mp3
> Trucchi e segreti degli mp3

L'hardware
> i lettori MP3 (2001)

Diritto d'autore
> Problemi legati al diritto d'autore
> Che cosa fa la SIAE per voi?
> Non solo SIAE per proteggere la propria musica

Appunti, spunti, commenti
> MP3, Legalità, Siae, Cd-Rom compilation... ecc. ecc.

Per chi ha fretta
> Le domande piu' frequenti (FAQ)
> Mini FAQ per chi ha molta fretta...

---
L'articolo Trucchi, segreti degli mp3 - come, perchè funziona di Camillo è apparso su Rockit.it il 2000-12-11 00:00:00

COMMENTI

Aggiungi un commento Cita l'autore avvisami se ci sono nuovi messaggi in questa discussione Invia