BALUG (8929 bytes)

Grabaciones en formato Ogg/Vorbis

En este pequeño texto explicamos como se hicieron las grabaciones en formato Ogg de las charlas del evento del 22 de octubre del 2002.
El método usado es lo primero que se nos ocurrió y no sabemos si es el óptimo. El texto es simplemente para ayudar a los que lo necesiten.
Las grabaciones que teníamos eran el audio de una de las videocámaras, eso no es bueno y lo ideal es grabar el audio directamente de la salida de monitor del amplificador. Teníamos planeado esto pero lamentablemente falló.

Grabación a la PC

Para grabar utilizamos el programa sox. Este programa permite no sólo grabar sino manejar varios formatos distintos y aplicar filtros.
Las grabaciones las hicimos en formato WAV usando 16 bits de resolución y una frecuencia de sampleo de 44,1 KHz. Estos son los valores aconsejables, después podemos reducir la calidad usando sox, pero lo mejor es grabar con buena calidad primero. Basicamente usamos calidad CD, pero monoaural. Esto consume alrededor de 5,167 MB por minuto de grabación.
Para grabar usamos el siguiente script:

#!/bin/sh
sox -t ossdsp -w -s -r 44100 -c 1 /dev/dsp -t wav -

Este comando graba usando el dispositivo /dev/dsp y generando formato WAV. El resultado es enviado a la salida standard. Al script lo llamamos SoloGraba16bwav.sh y un ejemplo de uso sería:

./SoloGraba16bwav.sh > Marlon.wav

Para verificar la calidad usamos XMMS. Es importante ajustar la ganancia de entrada para que no sature excesivamente. Para esto y para seleccionar que entrada grabar usamos gmix. Hay que notar que es preferible una leve saturación en los picos a desperdiciar rango dinámico, pero hay que evitar que la saturación sea audible.
Sox está disponible en el paquete Debian homónimo.
Para entender un poco mejor que hace esa simple línea: todos los parámetros que están antes de /dev/dsp seleccionan las opciones relacionadas con la entrada de audio. En este caso estamos diciendo que el formato es el de los dispositivos OSS, 16 bits (word), signed, 44100 Hz de sampleo y un canal. Luego le indicamos cual es el archivo de entrada (en este caso un dispositivo). Todos los parámetros que siguen son las opciones que afectan al archivo de salida. En este caso indicamos que se use formato WAV. Y finalmente viene el nombre del archivo de salida, en este caso el - indica que se envíe a la salida estandar.
Hay que destacar que es posible usar sox para generar .oggs en forma directa usando la opción de formato vorbis, pero no es recomendable ya que normalmente querremos probar varias opciones de codificación o aplicar filtrados.

Normalización

Si fuimos conservadores en el volumen de grabación es muy probable que nuestra grabación no haya aprovechado todo el rango dinámico disponible. En este caso es recomendable aumentar el nivel de la grabación para que el máximo pico use el máximo valor posible.
Para lograr esto utilizamos el siguiente script Perl que denominamos Normaliza.pl:

#!/usr/bin/perl
# Copyright (c) 2002 by Salvador Eduardo Tropea
# Covered by the GPL license
#
$arch=$ARGV[0];
die "Archivo de entrada inexistente" unless -e $arch;
print "Procesando $arch\n";
system("sox $arch -e stat 2> stat.txt");
open(FIL,"stat.txt") || die;
$ajuste=-1;
while ($a=<FIL>)
  {
  
if ($a=~/Volume adjustment:\s*([\d\.]+)/)
     {
     
$ajuste=$1;
     }
  }
die "No pude encontrar el ajuste" if ($ajuste<0);
die "Ajuste innecesario" if ($ajuste==1);
print "Ajustando volumen con $ajuste\n";
rename($arch,"old.wav");
system("sox old.wav -v $ajuste $arch");
unlink('old.wav');
0;

Para usarlo basta con pasarle el nombre del archivo a normalizar.

Codificación a Ogg

El formato Ogg es muy eficiente por lo que es posible obtener buenos resultados para bitrates tan bajos como 27 Kb/s. Nuestro problema es que algunas de las charlas estaban en portuñol y que el audio tomado de la cámara tenía una reverberancia muy grande. Por estas razones decidimos crear dos versiones del audio: Una de unos 27 Kb/s y otra de alrededor de 61 Kb/s.
Para realizar la codificación usamos el programa oggenc v0.9 rc3 incluido en el paquete Debian vorbis-tools 1.0rc3-1. El mismo incluye un programa reproductor de línea de comandos de muy buena calidad: ogg123.
Para generar los .ogg usamos el siguiente script Perl que llamamos Wav2Ogg.pl:

#!/usr/bin/perl
# Copyright (c) 2002 by Salvador Eduardo Tropea
# Covered by the GPL license
#
# Genera los dos Ogg (~27 kb/s y ~61 kb/s) a partir del WAV (44.1 KHz, 16
# bits con signo, mono)
# El primer argumento es el .wav
# El segundo argumento es el comentario en el Ogg
$nombre=$ARGV[0];
$coment=$ARGV[1];

$chico="sox $nombre.wav -t wav -r 11025 - | oggenc -o $nombre-27kb.ogg -t \"GNU/Linux: Experiencia y situacion del Software Libre en el Mercosur\" -c \"$coment\" -";
$grande="oggenc -o $nombre-61kb.ogg -t \"GNU/Linux: Experiencia y situacion del Software Libre en el Mercosur\" -c \"$coment\" $nombre.wav";

print "Corriendo $chico\n";
system($chico);
print "Corriendo $grande\n";
system($grande);

Un ejemplo de uso sería:

./Wav2Ogg.pl Marlon "Marlon Dutra (Debian-RS, Brasil)"

Esto convierte el archivo Marlon.wav a los dos Ogg deseados.
La primer conversión usa sox para bajar el sample rate a 11,025 KHz y envía la información en formato RAW a oggenc. La opción -t indica el título del Ogg y -c un comentario.
La ventaja de usar el formato WAV es que el mismo es soportado por muchas herramientas y que el header del archivo le da toda la información necesaria a oggenc.
Para verificar el resultado conviene usar ogg123 y ogginfo.


Texto Copyleft by Salvador E. Tropea (c) 2002. Scripts exportados con SETEdit. webmaster.
Hosted by:
SourceForge.net Logo
Valid HTML 4.01!
Valid CSS!
GIMP Any browser!
Open Content!