Grabando e Interpretando Sonidos con la Raspberry Pi

 

wpid-20140901_222255.jpg En esta oportunidad probaremos agregar la capacidad de grabar sonido a la raspberry pi y luego poder interpretarlo, para ello usaremos parte de lo aprendido en un artículo anterior para el Beaglebone Black

Con lo aprendido aquí podremos agregar grabación y sonido a otras pruebas que podamos realizar en el futuro

 

Tras el salto te indicamos los materiales  y el procedimiento para realizar esta prueba

 

Materiales usados

  • Adaptador audio USB
  • Raspberry Pi con SD (ver el pack que tenemos en nuestra tienda)
  • Fuente de poder 5V @ 1A
  • Micrófono
  • Parlante

Procedimiento

Con la Raspberry Pi apagada conectas el adaptador de audio usb, el micrófono y el parlante.

 

Hardware conectado
Hardware conectado

 

Encendemos la Raspberry Pi y nos conectamos vía ssh, desde la línea de comando ejecutas lo siguiente,

pi@raspberrypi ~ $ 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)

En la ultima línea podemos ver que él adaptador de audio USB ya fue reconocido. Este adaptador es un modelo muy económico que encontramos en Santiago centro.

Comencemos instalando o actualizando las dependencias necesarias.

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install alsa-base alsa-utils
sudo apt-get install libasound2-dev

Luego simplemente se escribe

sudo alsamixer

Aparece algo similar a lo de la figura,

alsamixer01
Pantalla inicial alsamixer

con F6 seleccionas la fuente de sonido, que en nuestro caso es el “Generic USB Audio Device”

Seleccion de fuente de sonido
Selección de fuente de sonido

Luego con las flechas < o > te puedes mover entre las opciones disponibles, se eligen los niveles de micrófono y parlante apropiados y en la opción “Auto Gain Control” presionas “M” para dejar apagado. La configuración queda como se muestra a continuación.

Configuracion de prueba para microfono
Configuracion de prueba para microfono

Se sale con exit

Luego se graba con el comando

sudo alsactl store 1

Para probar que el audio esta bien, bajamos un sonido de prueba

wget http://members.tripod.com/~MLaputka/sounds/whales.wav

Y ejecutamos con el siguiente comando

aplay -D plughw:1 ~/whales.wav

Si el sonido se oye va todo bien 🙂

Ahora para probar el micrófono usaremos el siguiente comando de prueba

arecord -D plughw:1 -d 10 -f cd rectest01.wav

A continuación explicamos las opciones, -D plughw:1 se elige la fuente de sonido, -d 10 la duración de la grabación es de 10s, -f CD es el formato

Para oír lo grabado usaremos un comando ya visto

aplay -D plughw:1 ~/rectest01.wav

otra forma de grabar es con el siguiente comando

arecord -D plughw:1 -d 10 -f cd --vumeter=mono rectest01.wav

Con este último comando agregamos un medidor de sonido.

Bien! Con esto tenemos lo básico para poder usar sonido en nuestra Raspberry Pi para las aplicaciones que podamos hacer.

No olvides contactarte con nosotros en nuestra página de facebook o en nuestro Twitter.

Author: manuel

Ingeniero Eléctrico, Institutano, instructor certificado Cisco, en twitter @mcarrasco con comentarios y opiniones personales.

13 thoughts

  1. Saludos seguí sus lineas de código y funciona todo bien excepto la grabación no se realiza, y el archivo de audio se graba muchas veces como en un bucle, espero me ayude con ese problema

    1. Efren, en el ejemplo el archivo de audio a grabar deberia durar 10 segundos, estos se definen con el parametro ‘-d 10’, estas usandolo?

      Saludos
      JZ

  2. Me pasa lo mismo con esta linea: arecord -D plughw:1 -d 10 -f cd rectest01.wav, queda atrapado en un bucle y aparecen miles de archivos con el nombre de rectest01-01.wav y luego rectest01-02.wav y asi …. nunca para

  3. Hola , conecte una tarjeta de sonido steinberg , y parece que encontro el driver .
    Pero no me da opciones para configurar la ganacia.
    En vez aparece : 0 validity 41 .
    No funciona con estas tarjetas?
    Gracias

    1. Estimado Esteban, lamentablemente no tenemos una tarjega steinberg para probar, tendrias que ver en el sitio del fabricante si tienen algun driver para Linux: Ubuntu o Debian son compatibles con Raspberry Pi.
      Saludos
      JZ

  4. Es posible ejecutar desde un archivo .py?
    quiero crear un script y escribirle un texto para cuando ejecute el archivo .py la raspberry responda con ese texto… seria muy importante tu ayuda, gracias!

    1. Nelson
      Todos los lenguajes de programacion tienen funciones para hacer llamadas al sistema operativo, es decir puedes ejecutar casi cualquier comando desde el mismo lenguaje. En python la libreria que debes importar es os.

      Si utilizas espeak (explicado en este tutorial http://www.internetdelascosas.cl/2014/03/13/sonido-y-tts-en-el-beaglebone-black-con-ubuntu-12-04/ para BeagleBone, que es muy similar a la Raspberry Pi) deberias crear un archivo habla.py con el siguiente contenido

      #!/usr/bin/python
      import os
      os.system(“espeak -v es 'Bienvenidos a la Internet de las Cosas' 2>/dev/null”)

      y ejecutarlo con

      sudo habla.py

      Saludos
      JZ

  5. muy buen trabajo pero tengo una duda, al ingresar este codigo( aplay -D plughw:1 ~/whales.wav) me sale aplay : main:788: audio open error : no existe el fichero en el directorio, agradeceria cualquier ayuda.

    1. Hola, basicamente el error es que no puede encontrar el archivo whales.wav, el simbolo «~/» al comienzo del archivo indica el directorio HOME del usuario, es decir debes tener el archivo en esa ubicacion para que puedas ejecutar el comando. Por ejemplo si tienes el archivo en /tmp deberias ejecutar

      aplay -D plughw:1 /tmp/whales.wav

      Saludos
      JZ

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *