Archivo por meses: septiembre 2010

Convertir un fichero wav comprimido con el codec G729A

Recientemente me ha surgido la necesidad de convertir unos ficheros de audio que estaban en formato .WAV comprimido con el codec G729A a un formato .WAV reproducible en cualquier PC para hacer unas pruebas. Se trataba de poder escuchar ficheros .WAV que estaban comprimidos con ese codec, pero dada la dificultad de encontrar el codec gratuitamente para poder instalarlo en Windows he encontrado una alternativa que sirve igualmente.

En la página de Voice Age he encontrado una librería gratuita para windows con ejemplos y ejecutables de cómo extraer el audio comprimido con un codec G729A. Si se va a usar comercialmente se debe pedir una licencia a sipro que es quien tiene los derechos de licenciamiento.

El problema con los ejecutables de Voice Age es que convierte de formato G729A a formato RAW, pero ni el origen tiene los datos por sí sólo (están embebidos en un fichero .wav) ni en la conversión se pasa a un fichero .wav reproducible en windows.

Por ello he creado un programa de consola en Visual C++ 6.0 que hace uso de la librería .lib que ofrece VoiceAge para hacer esos dos pasos. La idea es leer unos datos del fichero wav y moverse hasta el byte 44 del fichero wav de origen, accediendo así a los datos de audio directamente; crear un fichero .wav de destino,  introduciendo en este la cabecera de un fichero .wav con el tamaño de los datos de audio descomprimido e indicando que tiene formato PCM; finalmente leer los datos de audio comprimido, descomprimirlos con la librería y escribirlos en el fichero de destino.

Este es el código fuente del mismo:

Y aquí dejo el fichero ejecutable:

G729AtoPCM

El Bus Pirate

Bueno, pues me ha llegado el bus pirate y es una maravilla.

Se trata de una placa open hardware que sirve para medir y/o interactuar de una forma simple con un montón de cosas. Se conecta por puerto usb a un ordenador y con una interfaz serie podemos enviar comandos al bus pirate. Esto es lo que puede hacer:

  • Tomar medidas de 0 a 6 voltios.
  • Medir frecuencias de 1 Hz a 40 MHz
  • Generar PWM de 1 kHz a 4 MHz
  • Interactuar con dispositivos UART, SPI, I2C, MIDI, teclado, LCD, JTAG, etc
  • Analizador lógico de 10 Hz a 1 MHz
  • Se pueden hacer scripts desde Perl, Python, etc.
  • Se puede reprogramar para ser un programador de AVR o de PIC

Mi primera prueba ha sido medir la temperatura de un LM35:

Que indica que en la habitación tengo 32 grados (calorcito hace, si :))

La verdad es que es muy cómodo y muy rápido para probar todos aquellos componenes que en otro caso tendríamos que desplegar un montón de componentes para obtener algún resultado.