| AAC
( Advanced Audio Codec ) - 1° Parte |
Se
l'MP3 rappresenta il passato allora la soluzione che al momento
si presenta come la più promettente è senza dubbio l'AAC.
AAC sta per Advanced Audio Coding ed è stata sviluppata dal
Fraunhofer Institute (sì, sempre lui!) e tre partner
internazionali: Dolby laboratories, AT&T e Sony
Corporation . Il fatto che tra i promotori vi sia la Dolby,
che è attivamente impegnata nella ricerca di algoritmi di
compressione audio che possano supportare l'effetto sorround
impegnando dei bassi bit-rate,e la AT&T, che è il gigante
per le telecomunicazioni americane e che quindi ha tutto l'interesse
a poter usufruire di mezzi che consentano di stipare più comunicazioni
sullo stesso mezzo in modo da contenere i costi delle infrastrutture,
la dice lunga sulle speranze che vengono riposte nella diffusione
di questo standard; standard che, come vedremo, non è esattamente
recente, visto che è stato approvato in via definitiva dall'ISO/IEC
nel lontano 1997! Da non sottovalutare neanche la presenza
di Sony, generalmente abituata a sviluppare formati proprietari.
Domanda:
ma se l'AAC esiste da quasi un lustro, perchè non abbiamo
MAI visto in giro dei brani codificati con questo formato?
E perchè se ne parla solo ora così diffusamente? La risposta
va ricercata probabilmente nell'immenso e inaspettato successo
che ha riscosso l'MP3 come standard per la diffusione della
musica via Internet . Il fatto che fosse pure retrocompatibile
con le precedetni versioni layer 1 e 2, senza che fosse quindi
necessrio dover operare un ricampionamento dei file musicali,
lo ha fatto veramente "decollare". Inoltre i decoder MP3 ad
uso personale sono freeware, cioè gratutiti, e il fatto che
esistano diversi tipi di encoder ha fatto sì che la situazione
in parte sfuggisse di mano ai creatori . La pirateria musicale
si può dire che è divenuta fenomeno su scala mondiale grazie
all'MP3 . Vi siete mai domandati perchè tante attese sull'uscita
del formato DVD? Per motivi legati al contrasto della pirateria
musicale (Hollywood ha di fatto veicolato le scelte sugli
standard DVD limitando la libertà informatica). Stesso discorso
vale per l'AAC, di cui fino a qualche mese fa non si trovava
in giro neanche uno straccio di demo di encoder . Dopo questo
breve preambolo, passiamo all'analisi del funzionamento dell'AAC
.
Come
funziona AAC
L'AAC
si propone come un formato con una qualità superiore del 30%
a quella dell'MP3 a parità di bit-rate. In altri termini,
per fare un esempio pratico, l'AAC che corre ad un tasso di
128Kbit/s mantiene una qualità analoga ad un MP3 che gira
con un data-rate di 192Kbit/s ! Straordinario, vero? Si, ma
c'è un prezzo da pagare! L'AAC infatti non è retrocompatibile
con i passati standard MPEG! Questo significa che il lettore
AAC non è in grado, per esempio, di riprodurre gli MP3. Si
tratta di un prezzo assai caro da pagare, considerando che
nel mondo girano ormai miliardi di canzoni in MP3. Tuttavia,
l'AAC è compatibile con le specifiche Dolby dell'audio
multicanale, e supporta fino a 48 canali ognuno con un bit-rate
pari a 96KHz. Magrado quello che uno sarebbe portato a
pensare, l'AAC non presenta una riproduzione della banda a
20KHz, pari cioè alla totalità dello spettro sonoro
percebibile dal nostro udito. Infatti in genere oltre i 16KHz
non registra più nulla. Lo sforzo della codifica è infatti
concentrato sulla riduzione dell'errore spettrale fra
il file sorgente e il file compresso, fattore critico per
mantenere elevata la qualità in sistemi multi canale.
Passiamo all'esame del diagramma a blocchi:

Il
percorso principale, quello dei dati processati, è evidenziato
dalle freccette spesse. Le freccette sottili invece indicano
i segnali di controllo. Notiamo subito che il blocco del
modello psicoacustico è quello che fa da "regista" durante
tutto il percorso che i dati compiono passando dall'ingresso
all'uscita. Un altro blocco importante è quello del controllo
di distorsione, che supervisiona l'errore di quantizzazione
. Ricordo che la quantizzazione, cioè la decisione sul numero
di bit che devono rappresentare un campione dati, è una fase
estremamente delicata del processo perchè se i bit sono pochi,
il segnale che si avverte è pesantemente distorto, se sono
troppi invece il data-rate viola le specifiche imposte sulla
massima banda occupabile.
Blocco
pre-processing (Gain control e Filters)
La
sequenza di campioni di ingresso viene suddivisa in blocchi.
Su ogni blocco viene applicata una sagomatura che fa sì che
i campioni situati all'inizio e alla fine di ogni blocco siano
meno "pesanti" di quelli situati in mezzo, cioè assumono in
genere valori più bassi dei campioni interni. Questo fa si
che quando i diversi blocchi verranno ricombinati, dopo l'elaborazione,
non vi siano effetti di eco o distorsioni . Quanto sto dicendo
fa parte della teoria dell'elaborazione numerica di un segnale
e una spiegazione approfondita del meccanismo esula dallo
scopo dell'articolo. Ora, un punto chiave è la scelta della
dimensione "ottima " delle finestre temporali dei campioni.
Più lunga è la finestra, maggiore è l'informazione che essa
contiene, migliore è la visione "dall'alto" dell'andamento
del segnale ma, d'altronde, più lungo è il tempo di elaborazione
perchè maggiore il numero di campioni prelevati. L'AAC sceglie
fra due finestrature temporali predefinite : una "long" da
2048 campioni, l'altra "short" da 256 campioni. La commutazione
fra le due è comandata dal modello percettivo.
La caratteristica rimarchevole dell'AAC è il fatto
che ai long blocks possono essere applicati due tipi di funzione
per trattare i campioni: la funzione seno, che si rivela
adatta se il blocco è molto ricco di componenti spettrali(caso
di un segnale impulsivo che passa da alto a basso o viceversa
in breve tempo) oppure la funzione KBD adatta nel caso
in cui invece le componenti spettrali del segnale sono ben
spaziate, come nel caso delle armoniche prodotte dalla voce.
Blocco
TNS
La tecnica Temporal Noise Shaping è fondamentale
ai fini della qualità finale: infatti è a questo stadio che
viene valutato il rumore di quantizzazione che i campioni
si portano dietro. A quest stadio si riconosce ad esempio
il transiente di un segnale, ovvero una rapida variazione
del segnale che richiede molti più bit per essere rappresentato
rispetto ad una parte di segnale che invece resta pressochè
costante. Se però il transiente cade in una zona mascherata
in frequenza, ecco che non è neanche necessario rappresentarlo,
perchè sarà inudibile! Della "spazzatura" che può essere eliminata
dai blocchi di ingresso si occupa appunto il TNS, ovviamente
sotto la supervisione del modello percettivo.
Intensity Stereo (Coupling)
L'informazione stereo è trasportata dal canale destro
e dal canale sinistro. Spesso però entrambi i canali portano
gli stessi bit, o comunque sequenze di bit che differiscono
poco tra di loro. Poichè la differenza alle alte frequenze
si fa sentire ancora meno, ecco che questo blocco provvede
a rappresentare le alte frequenze con un solo canale che in
sede di decodifica verrà poi sdoppiato.
Prediction
Pensiamo ad una vocale: quando diciamo per esempio
la vocale "a", essa è composta da segnale periodico, come
tanti vagoni di un treno attaccati fra di loro ed identici.
Sarebbe un bel risparmio se io decidessi di rappresentare
solo il primo vagone e poi dicessi semplicemente da quanti
altri vagoni uguali a ques'ultimo è composto il treno, anzichè
descriverli tutti quanti! Più o meno è così che funziona questo
stadio dell'AAC. Si individua una zona in cui il segnale varia
poco, si preleva l'informazione di un elemento che si ripete
nel tempo, e si passa quindi l'informazione sul numero di
ricorrenze di quell'elemento. La prediction opera sui blocchi
"long", quelli in cui c'è una migliore "visione dall'alto".
A voler essere puntigliosi, opera un pò come la ADPCM, in
cui si usa la storia passata dei bit per prevedere il comportamneto
dei bit futuri, considerando che questi varieranno poco e
che si commetterà quindi un errore modesto nell'approssimazione.
Mid/Side Stereo coding
Se nel blocco Intensity stereo
facevamo in modo che passasse un solo canale per le alte frequenze,
qui il discorso si fa più delicato. Si analizzano blocco per
blocco i contenuti dei canali sinistro e destro valutando
la differenza fra le coppie di campioni. Se la differenza
è minima, allora si trasmette un solo canale con in più l'informazione
relativa alla differenza, esprimibile con pochi bit, fra questo
canale e quello non trasmesso, in modo che il lettore possa
poi ricostruire l'effetto stereo (effetto joint stereo).
Quantization and Noiseless coding
Eccoci quasi alla fine dei passi di codifica! Tutto
questo pò pò di elaborazione per arrivare al punto più delicato
del software: la quantizzazione vera e propria. È a questo
stadio che avviene la maggiore riduzione dei dati. Il modello
psicoacustico la fa da padrone calcolando le bande critiche,
gli effetti di mascheramento e decidendo quali dati devono
passare in uscita e quali no. Ma soprattutto determina con
quanti bit ogni dato sarà campionato : se i bit sono troppo
pochi, il rumore di quantizzazione la fa da padrone e la qualità
finale è scarsa; se i bit invece sono in numero eccessivo,
si contravviene alla specifica data dall'utente, che per esempio
può essere quella di non superare i 96Kbit/s. Ma non finisce
qui : guardando alle stringhe binarie con le quali sono codificati
i campioni di uscita, il software guarda alle ricorrenze ,
e associa sequenze binarie più brevi alle stringhe più frequenti
e sequenze binarie più lunghe alle stringhe meno ricorrenti
(codifica di Huffman, vedi
l'apposito Box).