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.
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,
con F6 seleccionas la fuente de sonido, que en nuestro caso es el “Generic USB Audio Device”
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.
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.
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
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
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
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
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
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!
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
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.
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
Hola nos podemos comunicar, necesito si me puedes ayudar hacer un proyecto por favor, saludos y atento a tu mensaje
Estimado Roberto, puede contactarnos en nuestro formulario de contacto https://iot.cl/contacto/
Saludos
JZ
hola, gracias por el aporte pero no me graba, se escucha bien el sonido de las ballenas pero lo demas no funciona