jueves, 30 de enero de 2014

Grabar audio en la Raspberry Pi

En esta oportunidad voy a mostrarles como grabar un audio (10 segundos de música) con la Raspberry Pi.

Como sabemos, nuestra placa no tiene entrada de linea o para micrófono. Por lo tanto le voy a conectar esta placa de audio USB que tiene entrada para Microfono y salida de auriculares:

Lo que voy a testear es la entrada de Micrófono principalemente. Para eso voy a usar un iPod como fuente de música conectado con un cable de audio (ambas puntas con ficha Plug 3.5mm) a la entrada de mic de la placa USB.

Luego de iniciada la Pi y estando logeado en la shell (command line) verificamos si se ve la placa USB con el siguiente comando:

 $ lsusb
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 0d8c:000e C-Media Electronics, Inc. Audio Adapter (Planet UP-100, Genius G-Talk)

el último item es mi placa USB conectada a uno de los puertos de la Pi. Según la placa que usemos se verá otro texto.

Tenemos que tener a nuestro usuario dentro del grupo "audio", asi que verificamos esto:

$ groups pi
pi : pi adm dialout cdrom sudo audio video plugdev games users netdev input indiecity

Si no aparece audio al hacer lo anterior corremos lo siguiente:

$ sudo usermod -a -G audio <username>

Ahora vamos a realizar una actualización del Firmware de la Pi. Esto es para evitar un problema existente con los puertos USB que pueden sobrecalentarse con datos y esto causa ruidos en las grabaciones:

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install rpi-update
$ sudo rpi-update

Continuando con los pasos, vamos a ejecutar el programa que se utiliza para grabar y reproducir audio, alsa-utils. Ya lo tenemos instalado en nuestra imagen de Raspbian por lo que solo repasaremos sus programas:

  • alsamixer – GUI para establecer los niveles de grabacion y reproducción
  • amixer – Command Line para establecer los niveles de grabación y reproducción
  • alsactl – para guardar las opciones seteadas en alsamixer o amixer para usar luego de un reboot
  • arecord – para grabar los sonidos
  • aplay – para reproducir lo grabado
Todas estas tienen una opción de ayuda con -help
Básicamente tenemos dos formas de configurar el mic en nuestra placa, la primera es alsamixer:


Para obtener esto ejecutamos:

$ alsamixer

Presionando F6 vamos a seleccionar nuestra placa de audio desde una lista. Una vez que identificamos nuestra placa, la seleccionamos y nos fijamos el número de la placa. En mi caso es el 1. Ahora seleccionamos el Mic y le incrementamos el nivel hasta 54 aprox (que es el primer nivel pintado de blanco). Luego lo podemos cambiar. El Auto Gain Control deber estar apagado, seleccionamos esto y presionamos M para pasarlo a Mute (veremos MM). 
Con Esc  salimos y guardamos lo configurado escribiendo:

$ sudo alsactl store 1
Donde 1 es el número de nuestra placa de audio.

Existe otro método donde usamos amixer pero no lo veremos ahora, pueden consultar la fuente para esto.

Dicho lo anterior, ya estamos listos para hacer una grabación corta solamente para testear nuestra placa. Hacemos esto con el comando arecord
Antes verificamos que este comando vea nuestra placa con:

 $ arecord -l
**** List of CAPTURE Hardware Devices ****
card 1: Device [Generic USB Audio Device], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

Y para realizar la grabación corta escribimos:

$ arecord -D plughw:1 --duration=10 -f cd -vv ~/rectest2.wav

(este comando creará un archivo llamado rectest2.wav en nuestro directorio /home. Recordemos que se debe setear el dispositivo que grabará con el número de nuestra placa --> -D plughw:1)

La opción -vv nos muestra información extra en pantalla y el nivel de volumen.

Para reproducir lo grabado hacemos:

$ aplay ~rectest2.wav

Por defecto el audio saldrá por HDMI (si tenemos un TV conectado por ahi debemos escuchar), para reproducir el audio por la placa USB conectada hacemos lo siguiente:

$ aplay -D plughw:1 ~rectest2.wav

Listo! ya tenés tu Raspberry Pi configurada para grabar sonidos. Acordate que podés experimentar con los niveles de audio pero tené en cuenta que muy alta puede implicar distorisión en la grabación.

Fuente: 

1 comentario: