2.Elaborazione audio

In questa fase verranno manipolati i file necessari al/i flusso/i audio del vostro videoclip. I dati audio verranno espansi, analizzati (se necessario modificati) e ricompressi, e alla fine saranno pronti per essere uniti al flusso video.



Che cosa manipoliamo adesso?

Cominciamo dall'audio, e per semplici motivi. Innanzitutto è probabilmente la fase più noiosa (per qualcuno potrà addirittura essere terrorizzante, a causa della riga di comando!), dunque meglio sbrigarla subito. In secondo luogo, al momento di comprimere il video avremo la necessità di conoscere esattamente quanto spazio occupa il flusso audio complessivo (con questa espressione indico tutto l'audio, a prescindere dal numero di tracce diverse).

Va bene. Partiamo?

Non ancora. Adesso presentiamo qualche piccolo accorgimento che tornerà utile in futuro. Se osserviamo il nome che il ripper ha dato ai vari file AC3, possiamo notare che alla fine indica "Delay" (ritardo) e un valore che può essere positivo o negativo (in genere uguale per tutti i file): questo numero indica uno sfasamento (in millisecondi) dell'audio rispetto al video e conviene annotarlo perché, quando aggiungeremo l'audio al videoclip, il suo esatto inserimento ci assicurerà il perfetto sincronismo fra immagini e sonoro.
Se è stato rippato l'intero film probabilmente varrà 0 (zero), perché i flussi audio e video cominciano insieme, mentre se avete rippato solo qualche capitolo non lo sarà (credo che sia proprio a causa della divisione dei flussi in capitoli) ma in ogni caso è sempre meglio annotarlo.
Se volete utilizzare solo l'audio AC3 così com'è potete anche passare all' elaborazione video.

Suggerimento: create un nuovo file di testo e rinominatelo. Il nuovo nome sarà "Delay" e il valore del ritardo (potete omettere il segno + se è positivo); non modificatelo, avete finito! Otterrete così un doppio vantaggio: in fase di creazione non aprirete una nuova applicazione per modificare il testo (risparmio di tempo) e in fase di lettura basterà dare un'occhiata al contenuto della cartella per reperire l'informazione che vi serve (doppio risparmio di tempo). Vi pare poco?

Veniamo al secondo accorgimento. Qualcuno si starà chiedendo: "Ma se il nome del file AC3 contiene già l'informazione sul ritardo, perché devo annotarla da un'altra parte?". E' una giusta osservazione, non serve replicare le informazioni, e la risposta è che stiamo per distruggerne la prima copia. Proprio così: il nome del file AC3 è lunghissimo ed antipatico da digitare alla riga di comando, dove stiamo per apprestarci, dunque lo cambieremo. E, visto che contiene anche l'informazione sulla lingua contenuta nella traccia, sintetizzeremo il nome con solo tre lettere che la indicano: sarà dunque "eng.ac3" per la lingua inglese, "ita.ac3" per l'italiano, "esp.ac3" per lo spagnolo e così via.

Qual è il primo passo?

Come prima cosa decomprimiamo i file AC3. Aprite una shell DOS e spostatevi nella cartella in cui sono stati copiati tutti i file (se non sapete come, scopritelo qui); lanciate il comando:

a52dec -o wav ita.ac3 >ita.wav

oppure

a52dec -o wavdolby ita.ac3 >ita.wav

In tal modo il file ita.ac3 (italiano compresso, da 2 a 6 canali, risoluzione 16 bit, campionamento a 48 KHz) verrà convertito nel nuovo file ita.wav (italiano non compresso, 2 canali, risoluzione 16 bit, campionamento a 48 KHz), un formato molto più manipolabile. Notate che il decoder (a52dec con patch che trovate su questo sito) mostra molte informazioni sullo stream audio, compreso il bitrate: segnatelo, potrebbe servirvi al momento della compressione video.
I due comandi utilizzano due diversi driver di output, per mostrare due diversi risultati: sia wav sia wavdolby riducono l'audio a due canali ma usano, come sorgente, un diverso sottoinsieme dei canali originali. L'effetto è che mentre il primo genera uno stereo reale ma "piatto", il secondo offre un sonoro più ricco detto "spazializzato", particolarmente evidente nelle scene con molti effetti. In genere la scelta dell'uno o dell'altro dipende dal video clip, per cui provateli entrambi e scegliete quello che rende meglio nel caso particolare.
Usiamo lo stesso comando per convertire tutti gli altri file AC3; se, ad esempio, avessimo rippato anche le tracce inglese e spagnolo, digiteremmo:

a52dec -o [wav/wavdolby] eng.ac3 >eng.wav
a52dec -o [wav/wavdolby] esp.ac3 >esp.wav

Col semplice script elabora.bat avremmo risparmiato un po' di tempo davanti al monitor (sì, l'operazione può essere lenta ma non richiede interazione), ottenendo gli stessi risultati:

@Echo off
a52dec -o [wav/wavdolby] ita.ac3 >ita.wav
a52dec -o [wav/wavdolby] eng.ac3 >eng.wav
a52dec -o [wav/wavdolby] esp.ac3 >esp.wav

Fatto! I file in questo popolare formato possono essere manipolati da tutti i software in circolazione, così siamo pronti alla mossa successiva.

Dunque usiamo l'audio stereofonico: due canali sono sempre la scelta giusta?

La verità è che nessuno ci obbliga, ovviamente. Se decidiamo di non usare l'audio multicanale, lo stereo va generalmente bene per ogni tipo di video clip, ma è possibile risparmiare ancora un po' di kilobit sul sonoro. L'audio monofonico, infatti, ha il vantaggio di richiedere bitrate più "economici" e non è sempre una scelta da scartare: non ne verrebbero sacrificate colonne sonore di vecchi film (monofoniche per nascita), né di nuovi, quando basati su dialoghi. Vediamo allora come convertire in mono i nostri file audio con l'uso del tool SoX:

sox -V -c 2 input_due_canali.wav -c 1 output_un_canale.wav avg 0.5,0.5

La sintassi di SoX prevede la presenza di due file, uno di ingresso e uno d'uscita (con rispettive opzioni), e l'effetto da applicare con relativi parametri. Qui indichiamo con -c 2 che il file di input ha due canali, con -c 1 che quello d'uscita ne avrà solo uno e che l'effetto avg (average, media aritmetica) da applicare va usato con parametri 0.5 (fattore peso del canale sinistro) e 0.5 (fattore peso del canale destro); notate che si usa il punto per indicare le cifre decimali e la virgola per separare i pesi (ma non aggiungete spazi tra di essi!).
L'opzione generale -V (maiuscola), indicata per prima, richiede al programma di essere più prolisso, mostrando in dettaglio l'avanzamento della procedura.

Adesso vanno analizzati?

Sì. L'audio dei DVD è normalmente basso, e per poterlo poi ascoltare dalle casse del PC bisognerebbe alzare il volume al massimo! Invece noi aumenteremo il livello dell'audio prima di inserirlo nel videoclip, semplicemente utilizzando SoX. Digitiamo:

sox -V ita.wav -e stat -v

In questo caso particolare utilizziamo, al posto del file d'uscita, l'opzione -e (empty, vuoto), un accorgimento che ci permette di risparmiare tempo e un bel po' di spazio su disco perché SoX non utilizzerà un secondo file, accelerando le operazioni.
Ma torniamo al livello del volume: l'effetto stat con opzione -v indica di calcolare la massima amplificazione che possiamo applicare senza distorcere il suono, e di restituirci questo valore. Potremmo riscrivere, utilizzando la stessa sintassi, il comando che ci serve per analizzare gli altri file ma, ora più che mai, ci viene in aiuto la flessibilità dei file batch: una nuova stesura di elabora.bat potrebbe somigliare alla seguente:

@Echo off
rem *** Decompressione e riduzione a 2 canali con il driver preferito ***
a52dec -o [wav/wavdolby] ita.ac3 >ita.wav
a52dec -o [wav/wavdolby] eng.ac3 >eng.wav
a52dec -o [wav/wavdolby] esp.ac3 >esp.wav
rem *** Le prossime tre righe convertono l'audio in mono, qualora servisse ***
sox -c 2 ita.wav -c 1 ita1.wav avg 0.5,0.5
sox -c 2 eng.wav -c 1 eng1.wav avg 0.5,0.5
sox -c 2 esp.wav -c 1 esp1.wav avg 0.5,0.5
rem *** Sostituite il nome di file corretto all'occorrenza ***
sox ita-definitivo.wav -e stat -v
sox eng-definitivo.wav -e stat -v
sox esp-definitivo.wav -e stat -v

Questo script fa da sè tutto ciò che abbiamo spiegato fin qui, e non ha bisogno di input aggiuntivi.
Potete lanciare lo script e minimizzare la shell per fare qualcos'altro, ma abbiate cura di non chiudere la finestra appena SoX avrà finito, perché dovrete prendere nota dei risultati che vi restituirà.

Ora i file sono pronti?

No di certo, li abbiamo solo analizzati; adesso procediamo all'amplificazione.

Attenzione: l'aver calcolato il giusto valore dell'amplificazione per ogni traccia ci potrebbe suggerire di applicarli rispettivamente tutti, anche se diversi (e generalmente lo sono). Un'altra scuola di pensiero prevede l'applicazione dello stesso valore per tutte le tracce, ossia il minore restituito da SoX. Se con la prima scelta si ottiene un volume ottimale per ogni traccia, lo switch ad un canale audio diverso potrebbe costringerci ad alzare o abbassare il volume (ricordiamo che nel DVD originale erano memorizzati a volumi diversi). D'altro canto la seconda strada dà un livello accettabile per tutte.
A voi la scelta.

Per applicare l'amplificazione al livello livello digitiamo:

sox -v livello ita.wav ita2.wav

(Si, la v è minuscola e fa un'altra cosa!)
e similmente per tutte le tracce audio. Anche adesso potremmo risparmiare tempo e lanciare un solo comando, creando e lanciando lo script volume.bat:

@Echo off
sox -v livello1 ita.wav ita2.wav
sox -v livello2 eng.wav eng2.wav
sox -v livello3 esp.wav esp2.wav

Con quale tool comprimo le tracce audio?

Per ciò che riguarda la compressione bisogna porre attezione alla scelta perché essa influenza il risultato finale del backup. Poiché con VirtualDubMod potete creare file .Avi e .Ogm, ecco cosa potete mettere dentro ciascuno di essi:

File OGg Media (.Ogm)
File Audio-Video Interleave (.Avi)
Video Mpeg4
Video Mpeg4
Audio Vorbis (è a bitrate variabile)
Audio Mpeg e/o Ac3 a bitrate fisso
Audio Mpeg a bitrate variabile
Audio Mpeg e/o Ac3 a bitrate fisso
Informazioni sui capitoli Nessuna informazione sui capitoli

Per comprimere l'audio nel formato Vorbis useremo il tool oggenc fornito insieme agli altri vorbis-tools, mentre per comprimere l'audio nel formato Mpeg (scegliendo il livello III dello standard Audio Mpeg 1, meglio conosciuto come mp3, che fornisce il miglior audio di questo tipo) useremo il tool lame (se non sapete scegliere tra loro o non avete idea di quali vantaggi offra l'uno rispetto all'altro cliccate qui).

Qual è il comando per comprimere in formato Vorbis?

Digitiamo:

oggenc -q num ita2.wav

Il programma comprimerà il file ita2.wav nel file ita2.ogg, al livello di qualità desiderato num; questo valore varia da -1 a 10 (potete immettere numeri con un massimo di due cifre decimali ma usate la virgola per indicarle, non il punto) e indica la qualità del file prodotto secondo una logica crescente (più alto è il valore, più elevata la qualità). Il bitrate medio che potete aspettarvi si ottiene da questa tabella:

q:qualità, b:bitrate (in kbps)
q da -1,00 a 0
q da 0 a 4,00
q da 4,00 a 8,00
q da 8,00 a 9,00
q da 9,00 a 10,00
b=19*q+64
b=16*q+64
b=32*q
b=64*(q-4)
b=180*q-1300

Badate, come già detto si tratta di un bitrate orientativo (il formato Vorbis è a bitrate variabile) e il valore medio effettivo potrete saperlo alla  fine dell'encoding di oggenc, nel resoconto della compressione, alla voce Average bitrate (a proposito, prima di andare avanti appuntate questo valore: anche questo vi servirà al momento di comprimere il video). Se avete sempre compresso in Mp3, e dunque concepite la qualità a partire dal bitrate, probabilmente vorrete sapere quale qualità richiedere per ottenere più o meno un dato bitrate; ecco la tabella delle conversioni:

q:qualità, b:bitrate (in kbps)
b da 45 a 64
b da 64 a 128
b da 128 a 256
b da 256 a 320
b da 320 a 500
q=(b-64)/19
q=(b-64)/16 q=b/32 q=b/64+4
q=b/180+65/9

I valori mostrati nelle tabelle si riferiscono all'encoding di tracce stereofoniche, nel caso di codifiche mono le cose cambiano leggermente (non riporto più quelle formule astruse: chi di voi utilizzerà mai la qualità 2,73?...):

q:qualità, b:bitrate (in kbps)
q=-1
q=0
q=1
q=2
q=3
q=4
q=5
q=6
q=7
q=8
q=9
q=10
b=32
b=48 b=60 b=70 b=80 b=86 b=96
b=110 b=120 b=140 b=160 b=240

Questo proliferare di formule e numeri potrebbe confondere molti, ma l'approccio basato sulla qualità offre, sul rovescio della medaglia, una sorprendente semplicità che risulterà senz'altro gradita. Che il vostro audio sia stereofonico o monofonico, la qualità 3 vanta una resa sonora ottima e, se cercate di fare economia, non abbiate timore di scendere fino alla qualità 1 (pensateci bene però, prima di scendere ancora e, in ogni caso, ascoltate attentamente il risultato): l'efficienza della compressione Vorbis vi sorprenderà!
Anche il comando che abbiamo appena visto potrebbe essere usato in uno script per facilitare l'operazione. Come esempio, potremmo creare e lanciare comprimi-ogg.bat:

@Echo off
oggenc -q num ita2.wav
oggenc -q num eng2.wav
oggenc -q num esp2.wav

Ed ecco tutte e tre le tracce audio, pronte per essere inserite nel videoclip!

Qual è il comando per comprimere in mp3?

Digitiamo:

lame -q 0 -b bitrate --nssafejoint ita2.wav ita2.mp3

L'encoder lame comprimerà il file ita2.wav nel nuovo file ita2.mp3 con un bitrate fisso pari al valore di bitrate; l'opzione -q accetta valori da 0 a 9 ed indica la qualità degli algoritmi MPEG utilizzati secondo una logica decrescente (minore è il valore, maggiore la qualità, ma anche la complessità e la lentezza); il team di sviluppo suggerisce come ottimali valori dall'1 al 3, che offrono una buona qualità senza allungare eccessivamente i tempi di encoding, ma chi scrive è dell'idea che, se proprio bisogna rinunciare all'originale, tanto vale non scendere a compromessi sulla qualità della compressione. L'opzione --nssafejoint impone a lame di usare una modalità di encoding joint stereo più evoluta rispetto allo standard.
E il bitrate? Tenete presente che l'audio di un film è più semplice di una canzone (il parlato, la colonna sonora e gli effetti non sono mai insieme e raramente di elevata intensità) e non riuscirete mai a cogliere i "tagli" della compressione mp3 anche abbassando fortemente il bitrate: vanno dunque benissimo valori da 64 a 112 kbps, 128 kbps o superiori sono, il più delle volte, uno spreco di cui non apprezzerete la differenza.
Per comprimere tutte le tracce insieme basta creare e lanciare comprimi-mp3.bat:

@Echo off
lame -q 0 -b bitrate --nssafejoint ita2.wav ita2.mp3
lame -q 0 -b bitrate --nssafejoint eng2.wav eng2.mp3
lame -q 0 -b bitrate --nssafejoint esp2.wav esp2.mp3

Ed ecco pronte anche le tracce audio mpeg!

L'audio è compresso con bitrate costante. Perché non usare la modalità VBR per ottenere una compressione più efficiente?

Ecco, lo sapevo, io non volevo parlarne e invece... uffa! Bene, vi dirò quello che so: è vero, l'encoding audio con bitrate variabile è effettivamente più adatto (e le prestazioni del formato Vorbis sono lì a dimostrarlo) perché dà delle belle soddisfazioni riuscire a comprimere musica mantenendo un file finale di dimensioni contenute.
Ma è altrettanto vero che il formato Avi NON SUPPORTA l'audio a bitrate variabile (avete visto la tabella qualche riga fa?). Su Internet gira molto materiale video in questo formato con audio VBR (ottenuto probabilmente col vecchio software NanDub, una delle prime versioni "arricchite" di VirtualDub) ma si tratta di una forzatura del formato e non è per nulla garantito che funzioni sempre.
Quello che so è che se volete un videoclip che funzioni (davvero) e che sfrutti l'efficienza dell'audio a bitrate variabile, fareste bene a prendere in considerazione il formato Ogg/Ogm (che è nato apposta!) e diffondere il verbo dell'open-source ;-).
Per un approfondimento potete consultare l'help di VirtualDubMod, nel quale gli autori affrontano in maniera esauriente l'argomento: la discussione (nata su irc, in inglese) scende nei dettagli implementativi e mostra perché sarebbe meglio evitare questa tecnica e, dunque, perché gli sviluppatori hanno scelto di non supportare l'audio mpeg VBR in contenitori AVI.

Però quante complicazioni per aumentare il volume delle tracce audio! Possibile che non esista un metodo più semplice, un trucchetto, per ottenere lo stesso risultato?

In realtà sì, e si chiama ReplayGain (traducibile, più o meno, con amplificazione in riproduzione).
Sia lame sia oggenc, durante la fase di encoding, analizzano tutto il file audio calcolando, tra l'altro, un fattore di scala (il ReplayGain, appunto) che indica il volume del brano rispetto ad un volume di riferimento; alla fine, aggiungono questa informazione (insieme a molte altre) nell'intestazione del file all'interno di un tag (etichetta di presentazione). Lo scopo è intuibile: indicare, al software che effettuerà la riproduzione, l'amplificazione da applicare per ottenere il massimo volume senza aver preventivamente modificato il brano originale: abbiamo appena visto che è un'operazione lunga. Il player, da parte sua, durante la riproduzione modificherà al volo i dati audio, subito dopo la decompressione, utilizzando proprio questo valore: un meccanismo molto semplice.
Purtroppo la realtà è diversa ed è che non esiste la certezza che il decoder utilizzi il valore di ReplayGain, o perché nascosto nella moltitudine di opzioni da specificare su una riga di comando o tra decine di finestre di dialogo (spesso disabilitato per default), o perché deliberatamente trascurato dai programmatori del player; per non parlare degli encoder che non lo calcolano o, quando lo fanno, sbagliano. Per la vostra tranquillità lame ed oggenc lo calcolano (correttamente) per default, ma la realtà è che non sapete se e come verrà usato il valore di ReplayGain.

Ma allora noi non lo usiamo mai?

Ma certo: lo abbiamo fatto (senza saperlo, è vero) per ogni file che è stato compresso! Dato, però, che avevamo modificato con SoX tutte le tracce, amplificandole, il ReplayGain calcolato avrà per tutte un valore che, anche quando fosse utilizzato correttamente, provocherebbe un aumento del volume pressoché impercettibile. Nel caso peggiore, se proprio il decoder non volesse saperne, ci andrà ancora bene, anzi meglio: infatti, non solo il sonoro del nostro videoclip sarà comunque ad un livello ottimale, ma il player non modificherà i dati audio durante la riproduzione, riducendo il carico computazionale.

Speed-up: per chi volesse utilizzare il formato mp3 per l'audio del proprio video clip, ecco un'opzione di lame che dovrebbe far risparmiare del tempo durante l'encoding: --noreplaygain (devo proprio spiegare a cosa serve?)

Torna al ripping. Torna su. Vai all'elaborazione video.