Profili di codifica dei file audio

Questo articolo è più un appunto personale che altro. Non chiedetegli più di quello che offre, perché è solo una nota. Se vi trovate qualcosa di utile, meglio così! 🙂

In poche parole ho appuntato alcuni parametri di codifica per i file audio nei formati Flac, Vorbis, Mp3 ed Spx.

Flac

Flac (Free Lossless Audio Codec) è un codec multimediale che consente di creare file audio compressi senza perdita in termini di qualità (lossless). È utile, ad esempio, per l’archiviazione dei nostri cari (e costosi!) CD. Chiaramente in termini di occupazione di spazio sul disco fisso, Flac occupa più di un Vorbis o di un Mp3.

Cli per Flac

Da terminale possiamo convertire un file (.wav, ad esempio) con questo comando:

flac inpufile

dove inputfile è il file da comprimere. Alla fine ci ritroviamo con un file .flac compresso.

Per dare un esempio di compressione, il file non compresso dei Pink Floyd “Comfortably Numb” dell’album “Pulse” pesa circa 100 mega, mentre compresso in Flac pesa circa 63 mega.

Per decomprimere un flac basta il comando:

flac -d nomefile

o addirittura una intera cartella:

flac -d *

Ovviamente, per ascoltare un flac non è necessario decomprimere prima il file: i nostri player preferiti li gestiscono così come sono.

Gui per Flac

Possiamo usare una Gui per convertire uno o più wav in flac: sound-converter.
Installiamolo con

sudo apt-get install soundconverter

Questa è la semplice ma efficace interfaccia: 🙂

e questa è la finestra delle preferenze:

Come vedete, possiamo convertire un file in un altro: l’unica raccomandazione è di evitare la conversione da un formato con perdita (lossy, cioè tipo Vorbis, Mp3) in uno senza o con perdita. È più logica la conversione da un formato lossless (Flac o Wav) a uno lossy (Vorbis o Mp3).

Per codificare un intero Cd (o anche soltanto alcune canzoni) in Flac possiamo usare Sound Juicer, Rhythmbox o Exaile.
La stringa da inserire nelle preferenze di codifica è la seguente (la trovate già inserita nelle preferenze):

audio/x-raw-int,rate=44100,channels=2 ! flacenc name=enc

A causa di un bug nella gestione delle finestre e dei profili di conversione, risulta difficoltoso cambiare i profili di conversione direttamente nella finestra di dialogo. Io sono riuscito a farlo usando gconf-editor alla posizione /system/gstreamer/0.10/audio/profiles

Ogg Vorbis

Il Vorbis è il “nostro” codec preferito! 😀 È migliore dell’Mp3 e soprattutto è libero. Il Vorbis, come sappiamo, va sempre inscatolato dentro un file Ogg. Ecco come lo otteniamo.

Cli per Ogg Vorbis

Da terminale:

oggenc -q 6 nomefile

dove nomefile sta per il file non compresso da comprimere in Vorbis, mentre l’opzione -q 6 sta per il bitrate con cui codificare il file. Ecco una tabella per capire a cosa corrispondono i valori da -2 a 10:

Fonte: Hydrogenaudio

Fonte: Hydrogenaudio

Gui per Ogg Vorbis

Apriamo le preferenze del nostro player e osserviamo la relativa riga della Pipeline Gstreamer:

audio/x-raw-float,rate=44100,channels=2 ! vorbisenc name=enc quality=0.8 ! oggmux

dove l’opzione quality=0.8 corrisponde in decimale ai valori interi della tabella di sopra; ad esempio:

qualità 0    =  64 kbps
qualità 0.5  = 160 kbps
qualità 0.6  = 192 kbps
qualità 0.8  = 256 kbps

Mp3

È il formato che non dobbiamo preferire, ma in caso di necessità ecco le impostazioni.

Cli per Mp3

In Linux usiamo l’encoder Lame. Ecco la sintassi per il terminale:

lame -b 256 nomefile

dove nomefile è il file da convertire e -b 256 è il bitrate (in kbps) con cui convertirlo (che può essere quindi 128, 192 ecc.).

Gui per Mp3

Utilizzando il nostro player, ecco la stringa che troviamo:

audio/x-raw-int,rate=44100,channels=2 ! lame name=enc vbr=0 bitrate=256 ! id3v2mux

dove bitrate=256 è il valore di bitrate con cui codificare; inseriamo il valore che preferiamo.

Wav

Il formato Wav è un formato non compresso, utile quando il file contenente la registrazione debba essere elaborato in post-produzione. Può essere utilizzato, ad esempio, in Sound recorder per registrare la nostra voce.

Questa la pipeline per Gstreamer per codificare alla massima qualità:

audio/x-raw-int,rate=44100,channels=2 ! wavenc name=enc

mentre questa è consigliata per la voce (campionamento inferiore e mono):

audio/x-raw-int,rate=22050,channels=1 ! wavenc name=enc

Speex

Se, però, dobbiamo registrare la nostra voce e non dobbiamo apportare modifiche al file, possiamo usare un codec opensource pensato appositamente per la voce umana: Speex.

Questa è la pipeline:

speexenc name=enc ! oggmux

Photo courtesy: phamtu1509, Senza titolo, CC0 Public Domain.