Il problema dell'allineamento dell'audio
Ascoltando tracce audio diverse spesso percepiamo differenti livelli di volume. Questi continui sbalzi di volume tra una traccia e la successiva possono essere molto fastidiosi, possono farci perdere la concentrazione e constringerci a cambiare in continuazione il livello del volume manualmente.
Il problema riguarda tutti quei casi in cui è necessario concatenare tracce audio/video (Simple Media Player, TV, ecc...)
Cosa fare?
Ci proponiamo di bilanciare il livello di volume tra differenti sorgenti sonore.
Il primo problema è trovare una funzione che descriva nel modo migliore possibile il livello di pressione sonora di un suono.
Il livello di pressione sonora (
) è la misura logaritmica della pressione sonora rispetto ad un valore di riferimento: 
La pressione sonora รจ un parametro, espresso in Pa, che rappresenta il cambiamento di pressione rispetto ad una condizione di pace.
Useremo la funzione Root Mean Square (RMS) per trovare il livello di pressione sonora di uno stream, si calcola in questo modo; dato un inzieme
la RMS è:
Mentre se dobbiamo calcolarla su una funzione continua
nell'intervallo
la sua
sarà:
Di quanto modificare il volume?
Con la funzione RMS possiamo calcolare il livello sonoro medio di tutto uno stream ottenedo così
. Sia
il fattore di amplificazione e
il valore medio del volume dedio che vorremmo in output, allora:
Il fattore di amplificazione andrà da
ad
per attenuare il volume,
per lasciarlo invariato e maggiore di
per amplificarlo.
Conclusioni
Se abbiamo più stream audio con livelli di volume differenti possiamo allinearli portandoli tutti ad uno stesso volume medio. Per fare quanto dobbiamo prima analizzare ogni stream in ingresso, calcolare la sua
, da questa ricavare il fattore di amplificazione
e applicarlo alla traccia stessa.
Ho scritto un piccolo programmino in Python che fa al caso nostro. Consiste in una libreria che si occupa di tutte le trasformazioni del volume dell'audio ed in un piccolo eseguibile per eseguire delle prove con file audio.
Esempi
Vediamo l'output di qualche esempio.
$ ./testgain --help
./testgain vesion 0.2
Usage: ./testgain [OPTINS] [MP3/OGG FILE...]
This program is used for testing volumegain library.
OPTIONS:
-p --play : play the stream
-r <n> --rms <n> : set the default normalized rms and
apply it to the stream
-q --quiet : quiet mode
-v --verbose : more verbose
-V --version : print version info and exit
-h --help : display this help end exit
Report bugs to <danilo.abbasciano@gmail.com>
$ ./testgain -v audio\ example/1.ogg
Audio file: audio example/1.ogg
Type: ogg
Channel: 0 Mean RMS: 0.198368826507 Pa
Mean RMS: -14.0505315166 dB
Channel: 1 Mean RMS: 0.229194515258 Pa
Mean RMS: -12.7959155894 dB
Mean:
All channel Mean RMS: 0.213781670882 Pa
$ ./testgain audio\ example/[1-3].ogg -r 0.12 Audio file: audio example/1.ogg All channel Mean RMS: 0.213781662184 Pa Audio file: audio example/2.ogg All channel Mean RMS: 0.0407199536201 Pa Audio file: audio example/3.ogg All channel Mean RMS: 0.206117526775 Pa -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ Changing volume. File: audio example/1.ogg All channel Mean RMS: 0.119991210077 Pa -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ Changing volume. File: audio example/2.ogg All channel Mean RMS: 0.119997166635 Pa -~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ Changing volume. File: audio example/3.ogg All channel Mean RMS: 0.119992128875 Pa
Downloads
Se vuoi saperne di più scarica la presentazione in PDF (in inglese) quì:
[download file='volumegain-summercamp-presentation.pdf' name='volumegain presentation']
Se vuoi programma compreso di librerie, testgain ed esempi scarica questo archivio:
[download file='volumegain-0.2.tgz' name='volumegain-0.2.tgz' version='0.2']


Vorrei sapere se esiste uno standard per cio' che concerne
la pressione audio RMS,applicata ai diversi generi musicali,oppure se il tutto e' a discrezione del fonico?
(Esempio:Electro Rock -15 db RMS. DISCO -10 db RMS ecc...ecc)
Grazie per la cortese attenzione.
GIUSEPPE.
Non esiste nessuno standard che lega la RMS della pressione sonora con il genere musicale.
Ho scaricato Volumegain-0.2,con estensione TGZ.
Il sistema operativo che utilizzo e' Windows XP,il sistema
non sa' con che applicazione aprire il file.
Per favore mi daresti qualche dritta per poter utilizzare
la libreria.
Ti ringrazio infinitamente.
GIUSEPPE.
TGZ e` un archivio compresso, puoi aprirlo usando WinZip o WinRar o qualsiasi altro programma di compressione. Utilizzare la libreria con Windows non e` semplice. Dovrai prima installare Python (http://www.python.org/), poi le librerie Gstreamer (http://gstreamer.freedesktop.org/) che non sono ben supportate per Windows e necessitano anche delle lib pygtk.
Ti consiglio di cambiare sistema operativo e passare a Linux o un qualsiasi Unix-like.