La
Compressione Audio - 1
|
Comprimere il più possibile i files è fondamentale per usufluire di tutte le potenzialità della rete. Nel campo della ricerca di nuovi e più efficienti algoritmi di compressione si investono miliardi e spesso c'è dietro una matematica avanzatissima. È bene chiarire sin da subito che NON ESISTE un algoritmo definitivo, unico e perfetto per la compressione di tutti i tipi di dati . Per fare un esempio, non si può comprimere un' immagine a colori abbastanza efficientemente se si usa un algoritmo pensato per comprimere file binari generici. Programmi come lo Zip usano un insieme di tecniche di compressione che si adeguano a seconda del tipo di file che deve essere trattato. In poche parole esiste un algoritmo di compressione per ogni tipo di files. Adesso cercherò di spiegarvi qualcosa sulla compressione dei segnali audio, esaminando la basi della conversione analogico-digitale, le tecniche di compressione più semplici; approfondendo infine le codifiche psico-acustiche che hanno portato alla realizzazione dell' ormai famosissimo MP3. Il segnale Audio Il
segnale audio è un segnale analogico, ovvero un segnale
che varia in modo continuo nel tempo. Se volessimo riprodurlo graficamente,
riportando su un diagramma la variazione dell'intensità sonora
nel tempo, otterremmo un andamento di questo tipo: Da notare che non ci sono bruschi salti, ma è una linea continua. Inoltre l'ampiezza può assumere una infinità di valori passando da un valore minimo ad uno massimo. La larghezza temporale di questa forma d'onda è molto breve (1-2 ms) Un segnale digitale ha invece una forma di questo tipo : Riuscire a rappresentare un segnale audio, per sua natura analogico e dunque con un andamento "morbido" con un segnale digitale preservando l'informazione è un argomento che è alla base della teoria dell'informazione. Il segreto sta nel campionare il segnale, ossia prelevare ad intervalli regolari, il valore del segnale audio, che si presenta sotto forma di un segnale elettrico che varia nel tempo. L'idea è quella di approssimare la funzione analogica che è "morbida" con una funzione fatta a gradini (rettangoli verdi). Ad ogni istante multiplo del valore fondamentale, detto passo di campionamento, costruisco il rettangolino che approssima la funzione in quel punto. Se l'insieme dei rettangolini è sufficientemente fitto , la funzione di partenza è ben approssimata. Nel disegno in alto abbiamo supposto di dividere la porzione del segnale in 10 parti, ognuna di durata T. Se la durata complessiva è di 1ms, il passo di campionamento sarà di 0.1 ms, ovvero la frequenza di campionamento è di 1/(0.1 ms) cioè 10KHz . L'errore che si commette con l'approssimazione è notevole. Nelle seguenti figure vediamo la "spezzata" che approssima la funzione (È stata costruita prendendo i valori delle altezze dei rettangoli) e il risultato di un campionamento a frequenza maggiore. Se aumentiamo la risoluzione, cioè il numero di rettangoli, l'errore di conversione diminuisce:
Ora,
notiamo che l'altezza della funzione al variare di t varia in modo
continuo. Nella figura in alto ho supposto di poter dividere l'altezza
in 18 parti. Se il segnale originale cade nell'istante di campionamento
fra i valori, diciamo, 12 e 13, decido arbitrariamente di assegnargli
il valore 12. Ho cioè quantizzato l'ampiezza, che potrà
assumere solo valori discreti, compresi fra 0 e 17. In informatica
si lavora, come sapete, con le potenze del due, quindi supponiamo
di quantizzare l'ampiezza con 16 livelli (2 elevato alla 4): dunque
essa potrà assumere solo valori compresi fra 0 e 15. Sono
quindi necessari 4 bit : ad esempio il valore 7 dell'ampiezza verrà
codificato come la stringa 0111. Allora si capisce come in ogni
intervallo di campionamento devo trasmettere 4 bit. Il meccanismo
di campionamento e la successiva quantizzazione dell'ampiezza costituiscono
le basi della conversione di un segnale da analogico a digitale. Capitoli |