Confronto fra compressori audio lossy: VQF , Mpeg1 layer III e Real Audio 5

17 Dic. 98
 N.B.: Per motivi di occupazione questa pagina contiene immagini in formato Png che Explorer 3 non visualizza, a differenza di Netscape 4. Per ascoltare i file audio di questa pagina sono necessari un player Vqf, Mpeg3 e Real Audio 5.

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]

Brass Wav OriginaleBrass Mp3 32kbpsBrass Ra 32kbpsBrass Vqf 32kbpsBrass Mp3 16kbpsBrass Ra5 16kbpsBrass Vqf 16kbpsBrass Mp3 8kbpsBrass Ra5 8kbpsBrass Vqf 8kbps
I risultati sono piuttosto interessanti. Per vedere meglio riporto anche degli spettri 1D relativi a data rate di 32kbps. Sono stati ottenuti sempre col CoolEdit pro, mediando (comando Scan) su intervalli di 0.05s, Fft a 1024 pt., range di intensità logaritmico a 90 dB, e lineare in frequenza.
Brass Wav originaleBrass Mp3 32kbpsBrass Ra 32kbpsBrass Vqf 32kbps
Questo è un test indicativo, dato che il segnale è molto semplice, in pratica sono delle armoniche di intensità e frequenza costante, ma già si nota che l'Mp3 ha sempre banda passante più stretta fra i tre, vq la più larga e Ra5 intermedia. Però lo spettro del risultato del mp3 è più pulito fra le armoniche, perfino più pulito dell'originale! Questo è dovuto alla codifica percettiva del Mp3: il segnale fra armoniche tanto intense non è udibile dall'orecchio umano, a causa del fenomeno del mascheramento. Per cui Mp3 non trasmette neppure tali dati, e lo spettro risultante risulta privo di segnale tra le armoniche.
Vq paga la sua maggiore banda passante con maggiore rumore tra le armoniche, e quelle più alte sono meno definite. Comunque non credo che un orecchio umano riesca a individuare più di 7 armoniche circa. Altre peculiarità emerse in questa prova sono l'intenso rumore presente all'inizio del segnale codicato con Mp3 (non visibile in queste figure); forse è un pre-eco della codifica a blocchi? Nella codifica Mp3, specialmente a bassi data rate, si notano dei blocchi privi di segnale fra le armoniche, la loro causa non mi è nota (spettro con parametri uguali a prima):
BrassSection compresso col Mp3 a 16kbps

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):

Brass Ra 80KbpsBrass Mp3 56KbpsBrass Ra 40KbpsBrass Vqf 24KbpsBrass Vqf 8-8Kbps

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):

Spettrogramma del tono crescente: Tonoc.raw

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:

Spettrogramma del Tono compresso a 56kbps con Mp3

ed a 32kbps (il risultato è stato ricampionato a 44.1KHz):
Spettrogramma del Tono compresso a 32kbps con Mp3

Comprimendo con Ra si notano alcune distorsioni, più o meno indudibili. A 80kbps:

Spettrogramma del Tono compresso a 79.9kbps con Ra5

e a 32kbps (banda passante 16Khz, ricampionato a 44.1Khz):

Spettrogr. del Tono compresso a 32kbps con Ra3 (Banda 16kHz)

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:

Spettrogramma del Tono compresso a 96kbps con Mp2

a 32kbps l'Mp2 mostra una banda passante ridotta e parecchio rumore, comunque non ancora a livelli fastidiosi:

Spettrogramma del Tono compresso a 32kbps con Mp2

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:

Spettrogramma del Tono compresso a 44kbps con Vqf

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):

Mozart OriginaleMozart Vqf 40kbps HqMozart Vqf 40kbps Lq
 

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.

Spettrogramma di un richiamo di rondine

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.

Rondine Mp3 256kbps HqRondine Mp3 128kbps HqRondine Mp3 96kbps HqRondine Mp3 56kbps HqRondine Mp3 32kbps HqRondine Mp3 16kbps HqRondine Mp3 8kbps Hq
Nel caso dell'Mp3 si vede che neppure 128kbps sono sufficienti per avere una banda passante pari a quella del Cd (44.1Khz), la si ha solo a 256kbps, che sono moltissimi per un compressore tanto sofisticato. 128 e 96 hanno la stessa banda passante, ma nel secondo caso si notano delle zone dello spetrogramma non trasmesse, perchè ritenute inudibili (mascherate da altre frequenze). In effetti all'ascolto il 56 risulta pressochè trasparente, mentre in cuffia il 32 risulta chiaramente peggiore. a 16 e 8 mp3 ha una banda passante inferiore all'armonica più intensa del segnale, la rondine non è più udibile. A 16 si sentono soltanto le campane, a 8 si sente quasi solo rumore.

Rondine Ra5 80kbpsRondine Ra5 40kbpsRondine Ra5 32kbpsRondine Ra5 12kbpsRondine Ra5 8kbps
Il Real Audio 5 ha comportamento simile al Mp3, ma a 8kbps ha un comportamento migliore. Dagli spettrogrammi pare che anche a 80 si comporti meglio dell'mp3 a 96, ma la differnza non riesco a discriminarla all'ascolto.

Rondine Vqf 48 HqRondine Vqf 40 HqRondine Vqf 20 HqRondine Vqf 16 HqRondine Vqf 10 (11kHz) HqRondine Vqf 8 (8kHz) Hq
Per questo segnale la differenza fra Vqf a 44kbps, e 40kbps è inudibile. A 16 è migliore di mp3: ha una banda passante di 16kHz, più che sufficiente per fra sentire la rondine, ma è bem udibile anche il rumore.
A 40 appare migliore del mp3 a 56, ma la differenza per me è inudibile.
 

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