5 de noviembre de 2013

Cómo hacer un traductor simultáneo con Raspberry Pi

raspberry pi

Un tutorial muy sencillo de seguir y con pocos riesgos para poder usar tu Raspberry Pi como un traductor simultaneo de voz mediante el uso de un par de scripts y los servicios en la nube de Google y Microsoft.


Montañas de bits se han escrito sobre el Raspberry Pi, pieza de Hardware que ha conquistado los corazones de miles de fanáticos de la informática en todo el mundo. Lo que hace tan especial al Pi siempre ha sido, mas que el bajo costo, la gran cantidad de aplicaciones que se le pueden dar gracias al impresionante numero de desarrolladores que lo utilizan en sus proyectos y posteriormente comparten el código fuente.


Muchos dueños del Raspberry Pi suelen preguntarse qué hacer con sus equipos, mientras que otras personas aun no lo tienen, pero están esperando la excusa correcta para hacerse con uno. Si tu caso es alguno de estos dos, te tenemos una interesante propuesta. Convierte tu Pi en un traductor simultáneo . Así es, un aparato que pueda escuchar lo que dices y traducirlo a otro idioma con audio, mediante un tutorial que si sigues al pie de la letra no te dará ningún problema.


Requisitos previos



  • Tener instalada la ultima versión de Rapsbian (Debian para Raspberry Pi).

  • Conexión a Internet en tu Pi.

  • Los Drivers correctos para el tipo de audífonos que vayas a utilizar.


Lo que necesitarás



  • Un Raspberry Pi, evidentemente.

  • Un cable micro USB.

  • Audífonos USB. Recomendamos el modelo H390 de Logitech, con soporte confirmado para Raspverry Pi.

  • Memoria SD (mínimo 4GB clase 4).

  • Opcional: Si ya tienes unos audífonos con conectores de 3.5", puedes adquirir un adaptador USB, estos son los soportados.


Configurar y probar los audífonos


Lo normal, si no hemos hecho modificaciones en el sistema operativo, es que en lugar de funcionar con los audífonos que hemos conectado por USB, el Raspberry Pi intente usar su propio Hardware. El hecho es que usando ese método no hay manera de ingresar audio, por lo que debemos modificar el modo en que nuestro Pi transmite audio.


Antes que nada debemos confirmar lo expuesto, para ello en la terminal introduciremos las siguientes lineas después de haber conectado los audífonos.


cat /proc/asound/cards

cat /proc/asound/modules


Con lo que obtendrás algo así:


alsa-before-update


Como puedes ver, en la primera posición (0), se encontraremos al Hardware para audio del Raspberry (bcm2835), mientras que en la segunda posición (1), nos encontramos nuestros headsets conectados por USB (USB-Audio).


Una vez confirmado lo predicho, haremos algunas modificaciones a fin de que el audio sea transmitido por el puerto USB.


sudo nano /etc/modprobe.d/alsa-base.conf


En el archivo que se te ha abierto busca la siguiente linea:



options snd-usb-audio index=-2



Donde cambiaras el -2 por un 0 . Guarda los cambios y reinicia tu Pi con el siguiente código:


sudo reboot


Una vez que el sistema haya vuelto, debemos volver a comprobar el modo en el que se transmite el audio en nuestro Pi, para estar seguros de que todo esta como debería:


cat /proc/asound/cards

cat /proc/asound/modules


Y ya deberíamos ver el USB-Audio en la posición 0:


alsa-after-update


Si todo esta bien, podemos proseguir a una ultima prueba de audio antes de continuar con el tutorial. Para esto grabaremos una pequeña nota de voz con el micrófono:


arecord -d 5 -r 48000 daveconroy.wav


Y lo reproduciremos por los audifonos:


aplay daveconroy.wav


Si quieres ajustar los niveles de volumen de grabación y reproducción puedes usar alsamixer:


sudo alsamixer


Reconocimiento de voz


Para poder traducir lo que le decimos a nuestro Raspberry Pi, hará falta convertirlo primero a texto. Como no hay muchas opciones para hacer esto, usaremos los servicios de Google, que funcionan bastante bien. Como puedes empezar a ver, la conexión a Internet sí que será un requisito indispensable.


Para hacer esto de un modo sencillo, crearemos un script que haga todo el proceso por nosotros:


sudo nano stt.sh


Usando el siguiente codigo:



echo "Grabando... (Presiona Ctrl+C al terminar de hablar)"

arecord -D plughw:0,0 -q -f cd -t wav -d 0 -r 16000 | flac - -f --best --sample-rate 16000 -s -o daveconroy.flac;


echo "Convirtiendo audio a texto..."

wget -q -U "Mozilla/5.0" --post-file daveconroy.flac --header "Content-Type: audio/x-flac; rate=16000" -O - "http://www.google.com/speech-api/v1/recognize?lang=es-es&client=chromium" | cut -d\" -f12 > stt.txt


echo "Dijiste:"

value=`cat stt.txt`

echo "$value"



Ahora hay que convertir el script en un ejecutable:


sudo chmod +x stt.sh


Y para poder usar el script instalamos algunos codecs no incluidos es Raspbian:


sudo apt-get install flac


Siguiente, ejecutamos el script desde el terminal:


./stt.sh


Al ejecutar el script instantáneamente comenzaremos a grabar, por lo que debemos hablar y al terminar presionar Ctrl+C para que el audio sea convertido a texto. Si te interesa saberlo el archivo se ha guardado como stt.txt.


Traduciendo el texto


Google tiene ciertas limitaciones sobre sus APIs, y cobra 20$ para poder usar la traducción. Sin embargo, Microsoft ofrece lo mismo de manera gratuita, por lo que en esto nos echarán una mano. Pero claro, para poder usar este API necesitamos registrarnos por una cuenta de Microsoft Azure Marketplace API key. Para hacerlo, solamente entra en el enlace aquí atrás, registra una aplicación y obtendrás un ID y un código secreto.


Para continuar con el proceso de traducción hace falta un script python mucho mas complejo del que usamos mas arriba. Así que procedemos a crearlo:


sudo nano PiTranslate.py


Y rellenamos con el siguiente código, que no podemos poner directamente aquí, pero encontrarás en este enlace. Recuerda sobreescribir #aquí va el ID y #aquí el codigo secreto con tu ID y cogido secreto respectivamente.


Antes de ejecutar el script necesitaremos instalar algunas librerías python:


sudo apt-get install python-pip mplayer

sudo pip install requests


Y ya esta todo listo para traducir. Probemos:


sudo python PiTranslate.py -o es -d en -t "hola mundo, escribo desde gizmologia"


Donde -o es en lenguaje de entrada, -d el lenguaje de salida, y -t el texto a ser traducido.


Hagamos funcionar todo como un engranaje


Finalmente, con el sistema de audio a voz listo, y hecho lo propio para traducir este texto y convertirlo en lenguaje, solo hace falta hacer que todo funcione perfectamente en conjunto, y eso es realmente sencillo. De entrada, los dos scripts que hicimos deben estar en el mismo directorio. Lo siguiente que haremos es modificar el script stt.sh:


sudo nano stt.sh


Y agregamos la siguiente linea de código al final de todo:



python PiTranslate.py -o es -d en -t "$value"



Y así el código de tu stt.sh debería quedar como este. Nota que con este cogido vamos a traducir de español a ingles, si deseas cambiar el idioma de salida debes modificar el en por alguno de los aquí listados.


Y ya con esto todo debería funcionar como la seda. Cada vez que desees hacer uso de de tu traductor simultaneo solamente deberás pararte con el terminal en el directorio donde tienes los scripts y ejecutar:


./stt.sh


Esperemos que te diviertas siguiendo este tutorial tanto como nosotros adaptándolo.


















vía Gizmología


No hay comentarios:

Publicar un comentario