Esistono vari metodi per comprimere con perdita
di qualità del segnale audio. Alcuni metodi sono specifici per voce,
altri sono più generici. Alcuni sono semplici, e permettono la codifica
in tempo reale, altri impiegano molte risorse, almeno nella fase di compressione.
Io non posso, almeno qua e al momento, confrontare tutti i metodi per molte
differnti possilità di segnale. Mi limiterò a mostrare alcuni
esperimenti dai risultati interessanti. I metodi di codifica più
sofisticati sono diversi, in particolare sono Mpeg Audio 1 Layer III, AAC,
AC3, Vqf e Real Audio 5. Per i formati AC3 e AAC non ho nessun compressore
efficiente al momento per cui non posso fare prove.
Dei tre rimanenti, che chiamerò Mp3, Vqf
e Ra5, l'ultimo ha la codifica più veloce, ed quello che dà
spesso risultati peggiori.
Mp3 è forse il più diffuso, specialmente
per audio di alta qualità (benchè alcuni dicono che la massima
qualità si ottiene col Mpeg Layer II, a data-rate molto alti).
Vqf è piuttosto recente, si basa su un
metodo di codifica del tutto differente, ed è il più lento
nella codifica e decodifica. Questo metodo permette risultati migliori
del mp3, a parità di data rate, e apparentemente i risultati mi
sembrano confermare questo fatto. In effetti Vqf sarà uno dei metodi
usati nella futura codifica Mpeg IV.
Ho fatto parecchie prove, ma come ho detto non
sono massimamente sistematiche, hanno solo lo scopo di mostrare le caratteristiche
più evidenti e le peculiarità di ciascun formato di compressione.
La prima prova ha lo scopo
di mostrare la banda passante e la qualità della codifica per un
suono reale, per tutti e tre i compressori, ed al variare del data rate.
Il suono originale è lo strumento n.5
chiamato BrassSection, simile alla Brass, estratto dal modulo musicale
S3M A Wedding in the Leaves, composto da Electric Keet
(a.k.a. Jason-Roo). Lo si può trovare nel sito della Furry
Music Foundation. L'originale ha 21166 campioni, 10773 Hz, 8 bit/camp.
Col CoolEditPro l'ho portato a 16 bit/camp e gli ho riassegnato una frequenza
di riproduzione di 22050 Hz (senza ricampionamento), questo è il
risultato: BrassSection.
(Le prossime immagini-mappa sono in formato Png per motivi di spazio, Explorer3 non le legge, mentre Netscape4 si.) La prima immagine mostra gli spettrogrammi di una parte centrale di Brass, codificati con i tre formati, a differeti data rate. Per realizzarli ho usato il CoolEditPro 1.0, con finestrature di Hanning distinte (window 100%), Fft a 256 pt., Range intensità logaritmico a 130dB. Gli spezzoni di spettrogramma corrispondono a 0.05s di segnale e hanno tutti scala varticale (lineare) fino a 22050 Hz. La prova è stata fatta con convertitori Mpeg L3Enc (che ha la migliore qualità) senza parametro Hq, Real Audio 5.0, e TwinVQ Yamaha in qualità normale settato sempre alla banda più larga per data rate fissato. (ad esempio a 8kbps a 11Khz). [N.B. le seguenti sono tutte mappe cliccabili]



All'ascolto, ai data rate più alti, non si notano molte differenze fra i metodi, mentre ad 8kbps si nota bene la maggiore banda passante del Vq (quasi 6Khz effettivi, quasi 11 armoniche) rispetto al mp3 (circa 2500Hz, solo 4 armoniche). Ho fatto altre prove, con datra rate non confrontabili, per permettere al lettore di farsi una idea più completa (il numero accanto al codificatore è il data rate in kbps):

Si vede ad esempio che vqf a 8kbps, con banda
passante a 8Khz, produce una specie di aliasing di frequenze (probabilmente
è soltanto dovuto al sottocampionamento grezzo che ha effettuato
prima della compressione).
Mp3 anche ad un alto data rate (che se raddoppiato,
in stereo è detto di qualità Cd), mostra di avere banda passante
inferiore a 22.1Khz.
All'ascolto del Vqf a 24kbps si notano delle
distorsioni.
La seconda serie di prove
è stata effettuata su un segnale sintetico estremamente semplice.
Un tono sinusoidale che crese linearmente in cinque secondi da zero alla
massima frequenza, 44.1Khz. Tale segnale non è qui presente per
motivi di spazio, ma viene fornito un eseguibile per Pc che lo genera.
Su un Pentium 75Mhz occorre mezzo minuto per la generazione del file grezzo
chiamto Tonoc.raw di 431KByte. Dovrà essere interpretato
come file audio Pcm 16bit/camp. a 44.1Khz di freq. di campionamento. Eseguibile
GeneraTonoC_0020_19981119.exe
e sorgente Turbo Pascal molto grezzo: GenTonoC_0020_19981119.pas.
(N.B. Explorer restituisce il file nel Desktop, Netscape non ne permette
l'esecuzione, ma solo lo scaricamento. Il programma genera il tono nella
stessa directory in cui è fatto funzionare).
Ecco lo spettrogramma del segnale originale,
ottenuto nella stessa maniera dei precedenti, con la differenza che uso
una finestratura di BlackMann-Harris, per ottenere una immagine un pochino
più pulita (a scapito di un poco di risoluzione in frequenza):
Una breve nota sul segnale: bisogna fare attenzione
perchè contiene tutte le frequenze: all'inizio subsuoni che potrebbero
danneggiare le casse e a metà frequenze molto elevate che potrebbero
dare molto fastidio alle orecchie. Per cui è meglio tenere bassa
l'amplificazione. Da notare che spesso si dice che i giovani esseri umani
riescono a sentire fino a 22kHz circa, ma in realtà un tono a 15Khz
suona già estremamente acuto e io, che ho un buon udito, non riesco
a sentire questo Tono originale alle frequenze più elevate neppure
con una ottima cuffia cuffia...
Comprimendo con Mp3 otteniamo i risultati aspettati:
la banda passante è ridotta, ma il segnale rimanente è di
buona qualità. Eccolo a 56kbps:
ed a 32kbps (il risultato è stato ricampionato
a 44.1KHz):
Comprimendo con Ra si notano alcune distorsioni, più o meno indudibili. A 80kbps:
e a 32kbps (banda passante 16Khz, ricampionato a 44.1Khz):
L' Mpeg II mostra la sua minore efficienza, specialmente ai data rate più bassi.(layer II ottenuto con Plug-in GNU di CoolEdit, Model II (AT&T), De-emphasis for decoder: none, No error protection). Comunque anche a quelli più alti, 96kbps, si nota parecchio rumore:
a 32kbps l'Mp2 mostra una banda passante ridotta e parecchio rumore, comunque non ancora a livelli fastidiosi:
Infine ho fatto le prove col Vqf. Qui riporto solo il massimo data rate possibile, 44kbps, ottenuto con High Quality. I risultati con data rate inferiori sono simili. L'immagine seguente è una Jpeg a bassa qualità, ma non occorrono i dettagli per rimanere impressionati:
all'ascolto il risultato è altrettanto pessimo. Da cosa è causato tale risultato? Nel comprimere musica reale i risultati del Vqf sono molto buoni, direi superiori al Mp3. Questo particolare segnale deve mettere in difficoltà l'algoritmo di quantizzazione vettoriale su cui si basa Vqf. La mia teoria è che forse dato che il segnale è così puro e sempre crescente, sempre diverso, l'algoritmo non trova mai degli spezzoni precedenti adatti a produrre il segnale nel momento successivo.
Ho misurato anche i tempi di codifica dei precedenti
risultati, e altri:
(Compressione segnale TonoC, lungo 5s, mono 44.1Khz,
16 bit con Pentium 75, win95, 32MB Ram)
L3enc (mp3) 32kbps hq => 26s
L3enc (mp3) 56kbps hq => 27s
Ra5 32kbps, banda 16Khz => 7s
Ra3 Dual Isdn (79.9kbps), banda 44.1kHz
=> 10s
YamahaVq 40Kbps quality High, priority low
=> 59' !!!
YamahaVq 44Kbps quality High, priority high
=> 5' 32s
YamahaVq 32Kbps quality High, priority high
=> 1' 12s
Si vede che Vqf è molto più lento
degli altri, e che non andrebbe mai usato in bassa priorità. L'Mp2
richiede circa lo stesso oridine di tempo del Mp3.
Da notare che i tempi del Vqf variano molto al
variare del tipo di segnale in ingresso, ad esempio con uno spezzone di
musica di Mozart, dall'inizio della Salzburger Sinfonien KV 136,
(mono 44khz, 16 bit, corrispondono agli ultimi 5s di Mozart16 della
Sfida
Compressori):
Vqf 40kbps, High Qual., priority high
=> 61s
Vqf 40kbps, Med. Qual., priority high
=> 38s
Vqf 40kbps, Low. Qual., priority high
=> 32s
All'ascolto non riesco ad avvertire differenze fra la muscica originale e quella compressa a qualità minore; sullo spettrogramma si notano lievi differnze fra le varie qualità di compressione, e si nota una perdita di definizione alle alte frequenze (il segnale originele fornito è solo relativo allo spettrogramma, per motivi di spazio, mentre le versioni compresse sono gli interi cinque secondi):

La terza serie di prove mostra il comportamento dei codificatori con un suono composto quasi solamente da frequenze molto elevate, uno stridio di una rondine con un sottofondo a bassa intensità di campane (Wav mono circa 0.8s, 16 bit/camp., 44.1kHz camp.). Apparentemente la prima armonica è a circa 6kHz. Però si notano delle tracce anche a circa 9 e 16kHz, per cui forse la fondamentale è a circa 3kHz, ma è silente e sono presenti in realtà le pari di sei armoniche.

Le seguenti prove sono realizzate coi compressori
suindicati, anche gli spettrogrammi sono realizzati sempre col CoolEditPro
1.0 (Fft 256pt., finestratura hanning, window 100%, plot intensità
logaritmica 130dB max, poi aggiunti 3s di silenzio in coda, posterizzati
per ridurre occupazione).
Le seguenti mappe sensibili mostrano molti dei
formati possibili con Mpeg III, RealAudio 5 e Vqf, quando possibile ho
settato la migliore qualità possibile dal codificatore, gli stessi
usati prima.



Infine ho fatto una prova per
mostrare l'effetto del Vqf alle alte frequenze. Si può fare un paragone
coi metodi di compressione di immagine. Jpeg ad alti tassi di compressione
mostra le tassellature 8x8, mentre compressori basati su wavelet a parità
di data - rate sfuocano i dettagli. Mp3 e Vqf mostrano un comportamento
analogo sullo spettrogramma. Ho usato uno spezzone di circa 1.18s di canto
di allodola, Wav 16 bit mono 44kHz, e l'ho compresso con Vqf a 40kbps.
(la figura è ottenuta col CoolEditPro, finestratura Hanning, 256pt.
Fft, 100% window, 120dB Log., spettro colori invertito,
fascia da 7 a 18Khz circa per il segnale originale
e il codificato. Ridotto 80% in larghezza e portato in b/n per motivi di
occupazione)

La differenza è quasi inudibile.
Conclusioni
Per ottenere una qualità Cd si consiglia
Mp3 ad almeno 56-64kbps per canale, oppure Vqf a 40-48kbps.
Per qualità davvero trasparenti credo
che mp2 a data rate molto elevati (es. 256kbps) sia il più adatto.
Le opzioni massima qualità dei
compressori hanno un effetto limitato, ma richiedono parecchio tempo macchina
extra, specialmente col Vqf. Da usarsi solo per lavori definitivi.
Il Real Audio è estremamente veloce, ed
è adatto a chi ha poco tempo, mentre Vqf è lentissimo (consiglio
di non usare la modalità a bassa priorità, specialmente con
la massima qualità).
Per avere una qualità da radio FM, o leggermente
minore, si può usare Mp3 a 32kbps, oppure Vqf a 20kbps. Il secondo
ha banda passante più alta, benchè abbia un poco di rumore
in più. Probabilmente per bassi data
rate Vq è più conveniente. Per data rate minimi il Ra arriva
fino a 4900bps circa.
A livelli di compressione estremamente elevati
il Vqf a 8kbps può dare una banda passante reale di quasi 6Khz,
spesso sufficiente, per cui è probabilmente il più adatto.
Per codificare solo voce esistono formati specifici,
che si spingono fino a circa 260bps.
Link:
Su vqf.com
si possono trovare informazioni e il codificatore,
Real Audio 5 e successivi
alla Real.com,
Uno dei migliori player per
Mp3 e Vqf è Winamp 2.03: winamp.com,
Il mio editor preferito per
audio digitale è CoolEditPro, della syntrillium.com.
Un altro ha scritto cose simili:
Robin Whittle, Melbourne, Australia rw@firstpr.com.au