Gli obbedivi sono: ridurre la memoria occupata e i costi di trasmissione.
Attualmente l'audio compresso fornisce una buona qualità in confronto all'audio non compresso.
Se l'obbiettivo include la qualità del segnale, occorre individuare qual'è il numero minimo di bit per rappresentare il segnale in modo che la riproduzione sia trasparente (anche orecchie sensibili non riescano a distinguere dall'originale).
Motivazioni per la compressione
Il successo dei CD(metà anni 80) porta alla luce i vantaggi dell'audio digitale:
- alta fedeltà del segnale rappresentato;
- l'estesa gamma dinamica offerta;
- la robustezza rispetto a eventuali danneggiamenti del supporto;
Svantaggi:
- alti tassi di trasferimento dati che sono richiesti.
CD-Audio
Tasso di campionamento: 44.100 hz
Quantizzazione: PCM lineare a 16 bit
Tasso di trasferimento dati (bit-rate): 705,6 Kbps MONO e 1,411 Mbps STEREO
L'audio digitale non compresso occupa:
- molto spazio sull'hardisk per la memorizzazione;
- una banda ampia sul canale di trasmissione;
Esempio: brano di 1 min con Qualità CD
Parametri:
Tasso di campionamento: 44.100 c/s
Quantizzazione: 16 bit (2 Byte)
Canali = 2 (Stereo)
Tempo = 1 minuto(60 secondi);
Memoria che risulta occupata è di circa 10 Megabyte:
44.100 c/s x 2 canali x 2 byte/campione x 60 = 10.584.000 byte
10 Mb equivalgono a 80 Megabit (circa 80.000 Kb), il tempo di scaricamento con un modem a 56,6 Kbps è di oltre 20 minuti:
80.000 kb/ 56,6 kbps = 1413.4276/60 sec= 23 min e 33 sec
Nonostante l'accesso e il trasferimento dei dati da CD e DVD e dalla rete siano sempre più veloci non è ancora pensabile attualmente poter trasferire immagini, video, testo e audio di alta qualità sincronizzati tutti insieme.
L'obiettivo è la riduzione del bit-rate senza compromettere la qualità della riproduzione
A partire dagli anni 80 è stata prodotta una mole di lavoro intorno a schemi di compressione che potessero soddisfare le esigenze presenti, in vari tipi di applicazioni:
Bassa qualità: telefonia;
Alta qualità: colonne sonore videogiochi su CD-ROM, memorie flash per riproduttori portatili, audio su internet, Web radio e Web Tv.
Durante la fase di compressione(Codifica - Encoding), i dati audio digitali vengono prelevati da un file e trasformati in una sequenza di bit in modalità compressa rispetto all'originale.
Durante la fase di decompressione, si ricostruisce il segnale di partenza o si ricostruisce un segnale che suona come l'originale.
La compressione con perdita di informazione(lossy) è in generale più efficace , anche se la qualità non è sempre eccellente.
Notiamo che il flusso di bit (bitstream) non necessariamente rappresenta una sequenza di campioni come nel file originale. La codifica usata dipende dallo schema di compressione e potrebbe richiedere operazioni di ricostruzione dal segnale anche molto complesse.
Gli schemi di compressione vengono implementati in Codec, librerie software istallate su un calcolatore consentono ad applicativi di alto livello di comprimere e decomprimere nella modalità corrispondente.
Descriviamo alcuni schemi di compressione lossy: semplici e complessi. La differenza si basa sulla complessità degli algoritmi di codifica/decodifica (tempo di computazione), efficacia di compressione.
Le Codifiche u-law A-low
Realizzano specifiche contenute nelle raccomandazioni G.711, comitato internazionale per gli standard delle telecomunicazioni.
Codifica u-law: Nord America e Giappone per sevizi di telefonia digitale ISDN.
Codifica a-law: Europa e sul traffico internazionale telefonia ISDN.
Il segnale audio deve essere sufficientemente compresso per poter essere inviato su una linea ISDN che consente un traffico di 64 Kbps ed essere decodificato in tempo reale.
Tasso di campionamento: 8000 c/s;
funziona bene sulle frequenze fino a 3000-4000 hz.
Quantizzazione: è di natura logaritmica, poiché rappresenta con livelli di quantizzazione don uniformi le ampiezza forti e deboli e prevede 8 bit a campione.
Bit-rate: 64 Kbps (8000c/s x 8 bit/c).
Non limitando la frequenza di campionamento, la compressione offerta dalla quantizzazione logaritmica è di bit-per-campione/8:1; se i campioni originali sono di 16 bit, il fattore di compressione è di 2:1.
La quantizzazione logaritmica con 8 bit consente di raggiungere una gamma dinamica pari a quella ottenuta con una quantizzazione lineare a 13-14 bit.(I campioni di ampiezza debole quantizzasti con maggior accuratezza= Rapporto segnale/rumore per il segnale codificato è più uniforme su tutta la gamma delle ampiezze del segnale in input).
u-law
Si comprimono i campioni a 16 bit in modo non lineare su campioni da 8 bit (0-255). Non linearità in cui i campioni di forte intensità vengono compressi in pochi valori di codifica. I valori ottenuti dalla decompressione non sono esattamente quelli codificati, ma delle loro approssimazioni a volte grossolane(esempio: -200 a 16 bit diventa 106 a 8 bit e con la formula inversa -193 a 16 bit).
La compressione ADPCM (PCM differenziale adattiva)
Metodo diffuso e raggiunge un buon compromesso tra velocità di elaborazione, qualità del segnale decodificato e rapporto di compressione.
Due idee alla base dello schema ADPCM:
- la codifica delle differenze tra i campioni;
- l'adattamento delle differenze allo specifico segnale in input;
Nella codifica delle differenze tra campioni(differencing):
ogni elemento della sequenza da comprimere viene sostituito da un bit che indica il segno della differenza (un campione ha un'ampiezza < o > del precedente) e da alcuni bit che rappresentano il valore assoluto della differenza.
Le differenze hanno una valore ridotto rispetto ai campioni quindi serviranno un numero inferiore di bit (mantengono pero lo stesso segnale/rumore).
Nella decodifica, la ricostruzione del segnale originale si ottiene sommando o sottraendo la differenza dal campione precedentemente decodificato.
L'adattamento delle differenze allo specifico segnale in input.
In genere l'andamento del segnale non subisce segnali drastici, può capitare che quando prevalgono le frequenze vicine alla frequenza di Nyquist, la differenza tra un campione e il successivo assume valori inconsueti --> per evitare un degrado eccessivo del rapporto segnale/rumore occorre adattare la codifica delle differenze ai valori che prevalgono in una certa finestra del segnale.
Lavorare con le differenze ha il vantaggio di ridurre i valori rispetto ai campioni PCM originali.
Le differenze sono sempre di dimensioni ridotte e tendono a ricorrere. Tali carrateristiche suggeriscono l'uso di tabelle di look-up, dove si memorizza un numero finito di valori ricorrenti in un segnale.
I valori di differenza si riducono introducendo una nuova operazione sul campione precedente: la predizione.
Il campione precedente viene usato come base di partenza per predire il campione attuale , sfruttando la conoscenza del segnale precedente, cioè la successione dei campioni fino a questo punto. Il risultato è che si assegna un numero di N di bit che permettono di rappresentare 2 alla N possibili valori di differenza.
La predizione basata su una certa differenza a un certo punto può rivelarsi inefficace (aumentare invece che diminuire). Il problema è evidente in uno spettro ricco di alte frequenze e il segnale varia in modo repentino, non concedendo il tempo di stabilizzare le differenze con una certa regolarità.
Differenze elevate (alte frequenze) non si possono rappresentare con un numero piccolo di bit, gli errori introdotti porterebbero a distorsioni sulle alte frequenze.
Considerando il numero di bit fissato per le differenze(N) occorre introdurre una certa adattabilità sul segnale in modo da ampliare o restringere i passi di quantizzazione a seconda del contenuto di alte frequenze. Quindi, lasciando inalterato il numero di regioni di quantizzazione per le differenze, le regioni si ampliano o restringono a seconda se c'è da coprire una differenza maggiore o minore.
Le differenze si dicono quindi quantizzate e a seconda della variazione più o meno repentina del segnale occorre una riquantizzazione nel caso quella corrente sia inadatta a rappresentare l differenze in gioco in un certo frammento del segnale.
Esendo le differenze quantizzate, la compressione ADPCM è lossy.
Schema Generale ADPCM
Lo schema di codifica ADPCM usa come suo componente lo schema di decodifica per calcolare i valori predetti.
Segnale in input = X[n] n= numero di campione (X[1],X[2]…)
Campioni ricostruiti o predetti = Xp[n]
Differenze = D[n]
Differrenze quantizzate = Dq[n]
Codifica passo passo
X[n] --> campione con segno= +X[n]
+X[n] viene sottratto il campione predetto= Xp[n-1], calcolato a partire dal campione precedente.
+X[n] - Xp[n-1] = differenza = D[n], positiva o negativa.
Quantizer(adattivo) che darà in output una codifica della differenza D[n] in livelli di quantizzazione(
bit) in numero inferiore al segnale di input(compressione).
Quantizer darà anche l'output della codifica = C[n], sequenza compressa composta di differenze quantizzate.
C[n] differenza quantizzata è ripresa per calcolare il valore predetto che sarà sottratto dal successivo campione.
Requantizer traduce la differenza quantizzata(C[n]) in una nuova quantizzazione richiesta dal Predictor.
Il valore riquantizzato = Dq[n] viene addizionato al campione predetto al passo precedente ricostruendo il campione Xp[n].
Xp[n] viene utilizzato dal Predictor per costruire il valore predetto per il prossimo campione,
valore definito= Xp[n-1].
Decodifica
Il segnale in ingresso = C[n], differenze quantizzate
C[n] viene riquantizzato in Dq[n] con il Requantizer e addizionate a Xp[n-1] prodotto dal Predictor.
Risultato= Xp[n], sequenza ricostruita che suona come X[n].
Per comprendere l'adattatività al segnale in input: l'algoritmo IMA ADPCM.
La compressione IMA ADPCM
IMA consorzio produttori hardware e software per lo sviluppo di standard per dati multimdediali su computer.
L'obbiettivo: algoritmo di compressione in grado di produrre un rapporto discreto di compressione semplice da permettere una decodifica software in tempo reale di un segnale audio stereo a 44.100 c/s su un 386 a 2 mHz di clock. E semplice da permettere anche la codifica in tempo reale sullo stesso PC.
La semplicità dipende dal Predictor: il valore predetto è il valore decodificato del campione audio precedente(una copia del flusso di input ritardata di un campione).
Il Predictor IMA non è adattivo, è un semplice registro.
I campioni in input sono a 16 bit mentre le differenze sono di 4 bit, riduce 1/4 i dati del segnale.
Predictor ricostruisce il campione predetto a partire dalla predizione precedente e dalla differenza ri-quantizzata.
Viene inserito un modulo, Adattatore ampiezza del passo, che implementa l'adattabilità al segnale in input --> variando l'ampiezza del passo di quantizzazione in modo logaritmico a seconda della differenza rilevata con l'ultimo campione: modulo che influenza Quantizer e Requantizer.
L'algoritmo si adatta al segnale in input variando la dimensione del passo di quantizzazione(regioni di quantizzazione) nel Quantizer delle differenze.
Differenze è piccola = assottigliato passo di quantizzazione
Differenze aumentano = passo viene ampliato per coprire maggiori distanze.
I possibili passi di quantizzazione sono contenuti in una tabella di 89 voci. Ciascun Passo è associato a un indice della tabella.
Funzionamento Quantizer unito adattatore delle ampiezze del passo.
Quantizzazione= differenza trovata viene confrontata con l'ampiezza del passo corrente= 8 possibili regioni rispetto al passo.
Output del Quantizer = espresso in 3 bit(4 segno), indica la codifica della regione selezionata sulla base del confronto.
Prodotto tra il passo e il Moltiplicatore rende il passo più vicino alla differenza effettiva.
La variazione dell'indice determina un nuovo indice sulla tabella dei passi di quantizzazione.
L'algoritmo IMA mantiene un indice sulla tabella dei passi di quantizzazione.
Ampiezza passo < differenza = indice decrementato
Ampiezza passo > differenza = indice aumentato
L'output tabella dei passi usato come dimensione del passo di quantizzazione per il Quantizer.
La codifica è lossy. Produce un fattore di compressione di bit per campione / 4 a 1, Se campioni originali sono a 16 bit fattore di compressione è 4:1 , bit rate a 400 kbps.
Schemi di compressione di tipo percettivo
Operano perlopiù rimuovendo le parti irrilevanti del segnale audio.
La soglia assoluta di udibilità è caratterizzata dalla quantità minima di energia che deve trasportare un suono puro perché un ascoltatore riesca a percepirlo.
Non si conosce a priori i livelli di riproduzione che saranno usati:
I progettisti degli algoritmi di compressione si riferiscono a una curva SPL ottenuta identificando il punto minimo della curva a 4.000 hz con l'energia rappresentata da 1 bit(6dB).
Le bande critiche e mascheramento simultaneo
Orecchio interno è un analizzatore dello spettro del segnale, lavora in modo tonotopico: assegna un suono puro a un'area specifica della membrana basilare.
Regioni distinte della membrana sono "accordate" su differenti bande di frequenza.
L'analisi spettrale non segue una scala lineare sulle frequenze: si possono identificare delle bande di frequenza , bande critiche, al passaggio tra le quali si può osservare un cambiamento repentino della percezione uditiva; se la banda del rumore si estende oltre i confini della banda critica si percepisce un aumento del volume.
Sistema uditivo si può descrive come un banco di filtri passa-banda: bande sono le bande critiche con una larghezza compresa tra 100 e 500 hz e che può arrivare oltre i 5000 hz nelle alte frequenze per un totale di 25 bande critiche.
Mascheramento simultaneo fenomeno per cui un segnale a debole intensità non viene percepito a causa della presenta simultanea di un segnale a intensità superiore.
Condizioni per il mascheramento è che la frequenza dei 2 segnali sia abbastanza vicina, ed è molto efficace se i segnali sono nella stessa banda critica.
Il comportamento di un segnale mascheratore viene descritto da una soglia di mascheramento per cui tutti i segnali che sono sotto questa soglia non si possono udire, ci sono sia parti del segnale dello spettro, sia artifici introdotti con la digitalizzazione.
Le soglie di mascheramento che dipendono da toni mascheratori (mascheramento tonale):
forma: campana;
basse frequenze: curva di ascesa rapida;
alte frequenze: curva di discesa più dolce; vengono mascherate più facilmente.
Rumore, segnale a banda larga, è un mascheratore più efficace dei toni singoli, in quanto la distanza tra mascheratore e mascherato in termini di intensità è inferiore(cioè il mascherato deve avere un'intensità forte) in esperimenti in cui il rumore maschera il tono che viceversa.
Quando nel segnale originale sono presenti più segnali mascheratori, che non si mascherano a vicenda, è possibile costruire una soglia di mascheramento globale a partire dalle singole soglie di mascheramento.
Diagramma - Bande critiche e mascheramento simultaneo, singolo tono di mascheramento all'interno di una banda critica.
Ascissa: frequenza;
Ordinata: intensità in dB, logaritmica;
Tono genera una soglia di mascheramento, di cui il minimo si trova all'estremo sinistro della banda critica.
Per lavorare senza l'introduzione di distorsioni occorre basarsi su tale soglia minima.
3 possibilità di SNR (rapporto segnale/rumore) per m-1, m, m+1 bit.
1 bit = 6db SNR, per cui man mano che i bit aumentano anche SNR aumenta.
Rapporto SNR su scala logaritmica si può calcolare :
SNR log = log(max_ampiezza) - log(rumore-medio)
max_ampiezza= livello del tono mascheratore, asse delle ordinate.
SNR è la differenza tra il livello del tono mascheratore e il livello del rumore.
SMR: rapporto segnale/maschera, distanza tra il livello del tono mascherature la minima soglia di mascheramento.
NMR; rapporto rumore/maschera, distanza tra il livello del rumore e la minima soglia di mascheramento.
SNR = SMR + NMR
Rapporto SMR è usato dagli algoritmi di compressione nell'allocazione dei bit necessari per la codifica del segnale:
rumore ha intensità < all minima soglia di mascheramento non è percepibile a causa del tono mascheratore basterà allocare il numero di bit necessari per raggiungere il livello SMR, producendo la stessa qualità prodotta dall'SNR.
Mascheramento temporale: segnali transitori repentini (attacchi suoni percussivi) creano delle regioni di mascheramento che precedono e seguono il segnale.
Pre-mascheramento tende a durare : 5msec
Post-Mascheramento: si può estendere tra 50 e 300 msec.
Standard MPEG
Gruppo di lavoro per lo sviluppo di standard per compressione, decompressione, elaborazione e rappresentazione codificata di video e audio. Più versioni susseguite cronologicamente.
MPEG 1 : memorizzazione/recupero video e audio ('92)
MPEG 2: standard per TV originale, bit-rate 6 Mbps e sourround('94)
MPEG 4: immagini e audio visti come composti da diversi oggetti, per permettere lo sviluppo di applicazioni multimediali.('98)
MPEG 7: rappresentazione del contenuto per la ricerca, filtraggio, gestione di info multimediale('01)
MPEG 21: sicurezza contenuti multimediali ('09)
Una delle caratteristiche è il principio di minimizzare gli elementi normativi all'interno dello standard. Unici elementi imposti sono il formato dell'audio compresso e l'algoritmo di decodifica.
I moduli dell'algoritmo di compressione audio sono lasciati quasi interamente alla creatività degli sviluppatori.
Le specifiche ufficiali rilasciate includono anche una descrizione completa di un encoder.
Standard MPEG 1, universale in molti settori.
codifica del segnale audiovisivo combinato a un bit-rate di circa 1,5 Mbps(1,2 Mbps video e 0,3 Mbps audio, cioè 300 kbps, per l'audio stereo) con qualità inferiore alla TV.
Specifiche audio permesse per il segnale in input sono:
frequenze di campionamento: 32, 44,1 , 48 Khz
numero canali: 1 o 2
modo di funcionamiento: mono, dual mono, stereo, joint-stero
bit-rate segnale output: da 32 a 224 kbps per canale, buona qualità: 192 kbps.
Tre livelli di compressione(layer)
lager I è l'algoritmo di base , II e III migliorano i moduli dello schema producendo migliori compressioni al costo di incrementare la complessità sia del'encoder che del decoder
Layer 1 : più semplice, bit-rate superiore a 128 kbpss
Layer 2: più complesso esattamente di 128 kbps
Layer 3: il più complesso di 64 kbps, molta compressione
Struttura di base di MPEG 1 ricalca lo schema generale e implementa in modo differente i vari moduli a seconda dei layer.
Analisi-tempo frequenza
[codifica per blocchi, segnali audio reali non variano molto tra un campione e il successivo, si può assumere che lo stesso esponente valga per un buon numero di campioni. Un risparmio consistente si ottiene mantenendo lo stesso esponente per tutto un blocco di campioni, in modo a memorizzarlo una sola volta: all'interno del blocco si sceglie il campione che necessita del maggior numero di bit di esponente, e determinato il numero viene mantenuto per tutto il blocco]
Segnale audio viene segmentato in frame(blocchi), la porzione di segnale all'interno di ciascun blocco viene analizzata nel dominio della frequenza e convertito nelle sue componenti spettrali mediante un banco di filtri. Il banco di filtri che suddivide il segnale audio in 32 sottobande di frequenza della medesima larghezza.(0 a 31, sub-band coding).
[La codifica per sotto-bande divide lo spettro audio in molte bande di frequenza, le singole bande vengono elaborate individualmente. Il vantaggio di questa codifica è che i suoni non distribuiscono l'energia in modo uniforme lungo tutto lo spettro. Le sotto-bande con gamma dinamica ristretta possono essere codificate con un numero minore di bit; il risultato è che i campioni nelle diverse sotto-bande saranno codificati con un numero variabile di bit e si avrà una riduzione dovuta alla diminuzione dei bit per alcune bande.]
I campioni in ingresso al banco di filtri nel dominio del tempo e i campioni in uscita nel dominio della frequenza sono gli stessi.
La larghezza uniforme delle bande risulta troppo ampia per le basse frequenze e troppo stretta per le alte frequenze.
Analisi psicoaucustica
[valuta quanta distorsione si può introdurre in un segnale senza causare un'alterazione della percezione, producendo le soglie di mascheramento che permettono di determinare il massimo ammontare di distorsione armonica che si può introdurre nel segnale durante la fase di ri-quantizzazione, senza provocare delle alterazioni udibili nel segnale ricostruito. Calcola il rapporto SMR, rapporto tra l'ampiezza del segnale e la soglia di mascheramento. I rapporti SMR, calcolati per blocco di frequenze, sono utilizzati per decidere quanti bit vengono allocati per la ri-quantizzazione del segnale in ogni banda, in modo da minimizzare il rumore di quantizzazione ]
I banchi di filtri possono introdurre errori di minima entità, per compensare la mancanza di accuratezza del banco di filtri, il segnale viene analizzato mediante una FFT(Trasformata di Fourier veloce) layer 1 = 512 punti, layer 3= 1024 punti. L'output di questa trasformazione è usato dal modello psicoacustico che determina le soglie di mascheramento e le sovraimpone alle frequenze contenute in ciascuna sotto-banda in modo da fissare il livello di distorsione permesso[Modello psicoacustico controlla l'allocazione dei bit. Calcola i rapporti SMR prendendo in considerazione lo spettro del segnale limitato a un blocco di campioni audio e la conoscenza sul mascheramento del rumore. Modello presente solo nell'encoder.]
I campioni di frequenza vengono raggruppati in blocchi.
Si usano blocchi di dimensione costante, 384 campioni, che corrispondo a blocchi per sotto-banda di 12 campioni ciascuno(12x32), nel layer II e III 1152 campioni, tre blocchi consecutivi del Layer I (384 x 3, 36 x 32= 1152).
Finestra temporale che corrisponde ad un blocco dipende dal tasso di campionamento:
a 48.000 hz, 384 campioni = 8 msec
a 44.100 hz, 384 campioni = 8,7 msec
Blocchi troppo lunghi per permettere di eviatare il pre-mascheramento temporale.
Layer I
I 384 blocchi subiscono una compansion(capitolo 2).
A tutti i campioni di frequenza del blocco viene attribuito un fattore di scala determinato a partire dal valore di picco del blocco.
Si usa un unico fattore di scala di 6 bit per ciascuna sotto-banda, quindi lo stesso esponente per tutti i 12 campioni nella quantizzazione non uniforme in virgola mobile.
Si considera un passo di quantizzazione di 2 dB sui fattori di scala, con 6 bit si hanno 2 alla6= 64 configurazioni, con una gamma dinamica di oltre 120 dB.
Bit-rate in uscita è fissato a priori e anche le dimensioni della codifica in uscita da un blocco sono fissate.
[I bit determinano il numero di regioni di quantizzazione. La somma dei bit allocati per ciascuna sottobanda non deve eccedere il massimo bit-rate fissato a priori]
La lunghezza della codifica per ciascuna sotto-banda deve essere tale per cui la somma totale delle codifiche non supera il bit-rate totale per il blocco.
Alcune sotto-bande avranno codifiche più lunghe e altre più corte.
Layer III
Dopo banco di filtri con 32 sottobande viene posto un modulo addizionale basato su una Trasformata discreta del coseno modificata(MDCT): permette una più elevata risoluzione frequentiate, producendo una partizione dello spettro più simile a quella delle bande critiche nelle basse frequenze.
2 tipi di finestre: lunghe 36 campioni, corte di 12 campioni.
Opera sovrapponendo le finestre, per cui i campioni effettivi per finestra sono meno di quelli indicati.
La sovrapposizione dimezza i campioni: 18 per le finestre lunghe e 6 per le finestre corte.
Risoluzione totale = 576 frequenze per le finestre lunghe(0-575) e 192 frequenze per le finestre corte.
La dimensione delle finestre è utile per differenziare il trattamento del segnalein presenza di materiale stazionario rispetto alla presenza di transitori. In generale lavora la MDCT a 18 punti.
Nell'analisi psicoacustica l'altissima risoluzione fornita dalla MDCT permette una sagomatura del rumore più accurata.
Allocazione dei bit, Fase di quantizzazioneo e codifica
[usa i bit allocati per stabilire le dimensioni delle regioni di quantizzazione e codificare il segnale]
assegna alloca bit e fattore di scala a ogni sotto-banda.
Nel layer I
le sotto-bande sono trattate allo stesso modo, si usano 14 classi di ri-quantizzazione(4 bit).
Layer III
4 elementi nuovi, quantizzazione non uniforme, bande relative a fattori di scala, codifica di Huffman, riserva di bit.
- Quantizzazione non uniforme che garantisce un miglior rapporto segnale/rumore.
- layer I si può usare un differente fattore di scala per ciascuna sotto-banda, con la MDCT abbiamo una ploliferazione di sotto-bande, quindi si possono raggruppare delle sotto-bande per fattore di scala, raggruppamenti larghi all'incirca come le bande critiche. Fattori di scala distorcono il rumore di quantizzazione per adattarsi alle curve determinate dalle soglie di mascheramento.
- usa i codici di Huffman a lunghezza variabile per codificare i campioni quantizzati e ottenere una maggiore compressione. Dopo la quantizzazione l'encoder ordina i 576 coefficienti delle sotto-bande per frequenza di occorrenza crescente. Coefficienti grandi alle basse frequenze, alte frequenze coefficienti bassi o addirittura nulli. Codifica i coefficienti attraverso codici di lunghezza variabile, codici brevi a valori frequenti e codici lunghi a coefficienti infrequenti, minimizzando la lunghezza media della codifica.
- bit-stream progettato in modo da soddisfare le richieste variabili di bit per le varie sotto-bande. Finestre sono di 1152 campioni ma i dati codificati non è detto che assumo sempre la stessa lunghezza. Quando il frame presenta un eccesso di bit rispetto bit-rate fissato, quelli extra possono essere messi in serbatoio , da dove possono esse prelevati quando la necessità per la codifica di un frame eccedono la lunghezza media.
L'algoritmo di allocazione dei bit seleziona un passo di quantizzazione che soddisfi il bit-rate e il rapporto SMR.
L'algoritmo inizia con il calcolo del rapporto rumore/maschera NMR, in db:
NMR = SNR - SMR per sottobanda.
SNR = segnale/rumore (1 bit = 6dB)
SMR è il rapporto segnale/maschera calcolato dal modello psicoaucustico.
Prendendo in considerazione tutti i valori NMR calcolati per sotto-banda si ricerca la sottobanco con il più basso rapporto NMR e si allocano i bit per quella sotto-banda.
Quando i bit totali del blocco superano i limiti imposti dal bit-rate, l'unità di allocazione dei bit computa una nuova stima del SNR, e il rapporto NMR per le sotto-bande viene ri-calcolato. Processo si ripete finchè non si possono allocare più bit. (Esempio 154, 4.16)
Layer III - allocazione dei bit.
Sistema di 2 loop di iterazione annidati, che prendono in considerazione codifica Huffman e la riserva di bit.
Loop interno:
controlla il bit-rate, se numero di bit che risultano da una codifica di una dato blocco > del numero di bit a disposizione --> occorre una companding più efficace con un passo di quantizzazione più grande; operazione ripetuta più volte con differenti passi di quantizzazione finchè la richiesta di bit per la codifica Huffman è piccola abbastanza.
Loop esterno:
controlla la presenza di rumore, per fare in modo che il rumore di quantizzazione stia sotto la soglia di mascheramento,
si applicano i fattori a ogni banda, si parte da un fattore default di 1;
se il rumore di quantizzazione in una banda eccede la soglia di mascheramento , si corregge il fattore di scala per ridurre il rumore;
riduzione del rumore = aumento allocazione bit --> occorre inviare al loop interno se si sta superando il bit-rate.
Continua finchè il rumore non scende sotto la soglia di mascheramento per ogni banda.
Terminazione:
- rumore scende sotto la soglia di mascheramento;
- non è più possibile applicare il companding all'interno di una banda oltre il massimo consentito;
- l'applicazione riguarderebbe tutte le bande,
- alcuni includono limiti di tempo.
Layer I
A questo punto il blocco in output è composto da 384 campioni nel layer I che hanno codifica di lunghezza diversa a seconda dell'allocazione dei bit che sia ha per una certa sottobanda;
i blocchi vengono inviati/memorizzati in maniera seriale e non si comprende più la divisione interna della codifica.
Layer III
I blocchi codificati possono essere di lunghezza variabile, l'impacchettamento dei dati nel bitstream prevede un intervallo regolare sui pattern di sincronizzazione , ogni tot bit appare il pattern di sincronizzazione. Dopo il pattern si hanno le info aggiuntive.
Per il decider bisogna inserire delle informazioni che permettono la ricostruzione dei campioni all'interno dei blocchi.
Pacchetto(frame):
pattern predefinito di bit che annuncia l'arriva di un nuovo pacchetto;
Header info di sincronizzazione(descrive il tasso di campionamento);
Codici di controllo degli errori, 16 bit per il CRC;
32 allocazioni di 4 bit per ciascuna sottobanda;
Fattori di scala(32 codici di 6 bit ) che dicono come ciascuna banda è trattata dalla compansion.
Campioni divisi in 32 insieme di 12 campioni ciascuno, con variazione dei bit da 0 a 15 per insieme.
Pacchetto viene chiuso da eventuali info aggiuntive.
Decoder
ricostruisce le sequenze per sotto-banda sulla base dei blocchi di 12 campioni prendendo in considerazione l'allocazione dei bit e il fattore di scala.
Se una sottobanco non ha bit allocati , i corrispondenti campioni della sotto-banda sono messi a 0.
Una volta che l'intera sequenza di campioni di ciascuna delle 32 sottobanco è stata recuperata, si applica il banco di filtri in modalità di sintesi, e si calcolano 32 campioni audio in codifica PCM.
Elementi pratici della compressione MPEG
Successo MP3 è la sua versatilità nelle applicazioni,.
Modalità operative
MPEG I lavora con quattro modalità possibili:
segnali mono;
canali duali(due canali indipendenti, stesso parlato in lingue differenti);
segnali stereo;
joint stereo(combinazione dei segnali sinistro e destro in modo efficente);
Più Tassi di campionamento
MPEG I consente la compressione audio di segnali:
32, 44.1, 48 Khz
MPEG II estende alla loro metà
16, 22.05, 24 Khz
Bit-rate
[numero medio di bit consumati da un secondo di dati audio, kbps]
La selezione del bit-rate è lasciato quasi interamente all'implementatore.
Standard definisce una gamma di bit-rate che va da
32 a 320 kbps MPEG.
layer III permette anche la variazione di bit-rate tra i frame, che però deve essere supportata dal decoder.
La qualità del segnale ottenuto dalla decompressione dipende dal valore di bit-rate, cioè dalla forza della compressione.
bit-rate CD Audio è 1411.2 kbps
bit-rate con compressione MP3 per ottenere un segnale di qualità CD per musica pop/rock è 128 kbps.
Fattore di compressione 10-12.
La compressione a 128 kbps occupa all'incirca 1 mb/minuto: buon compromesso tra spazio occupato, velocità di codifica, e qualità del suono.
Musica acustica conviene salire a 192 o 256 kbps, molte armoniche
bit-rate dipende dalle esigenze del singolo progetto, non solo dalla qualità del suono decompresso.
Prestazioni MP3:
- qualità telefonica: compressione 96:1 (larghezza banda 2.5 kHz / mono / bit-rate 8 kbps)
- meglio di AM radio: 24:1 (7.5 kHz / mono / 32 kbps)
- simile a FM radio: 24:1 (11 kHz / stereo /64 kbps)
- quasi-CD: 16:1 (15 kHz / stereo / 96 kbps)
- CD: 12:1 (>15 kHz / stereo / 128kbps)
Programmi che eseguono codifiche: MP3 encoder, decomprimono: MP3 player o decoder.
Alla base vi sono librerie di funzioni che permettono di effettuare codifiche e decodifiche: Codec.
Scelta encoder dipende dalle esigenze.
Genere, più encoder è veloce più si perde in fedeltà audio.
Se necessario creare MP3 con basso bit-rate è opportuno utilizzare encoder lenti, in qualto altrimenti si rischia di perdere ancora qualità(essendo il bit-rate già basso).
Autore: Fabrizio Garis
Compressione by Fabrizio Garis is licensed under a Creative Commons Attribuzione - Non commerciale 3.0 Italia License.