Reconocedor De Voz

De Proyecto Butiá
Revisión del 17:02 14 dic 2011 de Guillermo (Discusión | contribuciones)

(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

RECONOCEDOR DE VOZ "RECO"


Integrantes

  • Fabricio Benitez
  • Guillermo Amorín
  • Victoria Rocha

Objetivos

  • Objetivos generales:
    • Control del robot mediante el habla desde otra XO o desde la misma que está conectada al Butiá.
  • Objetivos específicos:
    • Mover el robot mediante el habla.
    • Utilizar sensores del robot mediante el habla.
    • Crear un programa que dada una línea de texto proporcionada por un reconocedor de voz, busque los comandos correspondientes a la acción que se desea realizar.

Desarrollo del problema

Comenzamos buscando un reconocedor de voz que funcione en Linux.

Probamos varios programas (Simon, Julius, etc) pero no logramos hacer funcionar ninguno de ellos. Nos reunimos con un integrante de un grupo anterior que trabajó con un proyecto similar a éste; él obtuvo buenos resultados usando Sphinx con un modelo de lenguaje en inglés, pero nosotros pretendíamos que el programa reconociera la voz en español. De igual manera nos fue bastante útil la info que obtuvimos de su parte para pruebas que hicimos luego.

Probamos nuevamente con Sphinx, se pudo compilar y lograr que "funcionara" pero nos causó problemas al momento de reconocer, intentamos calibrar varias veces pero seguía presentando la falla.

A partir de ahí probamos otros reconocedores para Linux, pero no pudimos hacer funcionar ninguno de la manera que nosotros precisabamos. Nos contactamos vía mail con el desarrollador de Sphinx pero no obtuvimos respuesta alguna.

Al ver que no conseguiamos reconocedor, decidimos cambiar un poco el rumbo de nuestro proyecto; en ese momento nos propusimos realizar un programa que funcione para cualquier reconocedor de voz "externo" (no necesariamente debe estar integrado a nuestro programa) y de acuerdo a los objetivos.

El programa "RECO" consiste en que dada una línea de texto proporcionada por el reconocedor de voz, busque primero la palabra butia con la que se indica que se le esta hablando al robot, a partir de ahí se busca el comando que deseamos ejecutar seguido de los parámetros necesarios. Hay que aclarar que le debemos indicar al robot que le hablamos con la palabra butia una vez antes de cada comando que deseamos ejecutar. Por ejemplo si deseamos que el robot se mueva hacia atrás por 5 segundos, basta con decir: "BUTIA ATRAS 5". Otra forma de hacerlo y por la cuál se obtendría el mismo resultado sería diciendo: "Por favor robot BUTIA movete hacia ATRAS durante 5 segundos".

Luego de realizar el programa encontramos un reconocedor de voz que viene impolementado en windows 7, y reconoce muy bien el español. Por lo que decidimos utilizarlo. Para conectar el equipo al que se le habla con el robot Butiá, se utiliza una conexión por socket.

Conclusiones

No logramos cumplir todos los objetivos, ya que no encontramos ningún reconocedor de voz que funcione en la XO. Se logró realizar el programa que recibe una línea de texto del reconocedor de voz, y envía los comandos a ejecutarse de acuerdo a lo que el usuario desea que el robot haga.

Funcionamiento de RECO

Para controlar el robot con el habla es necesario contar con dos PCs (podría ser una también). Una en la que haya un micrófono, python 2.7, reco.py y un programa de reconocimiento de voz (en nuestro caso el que viene incorporado en Windows 7). La otra debe poder correr los programas necesarios para controlar el robot (bobot-server.lua, telnet, etc). Ambos equipos deben conectarse entre sí para pasar los comandos de uno a otro.

Trabajo a futuro

  • Encontrar un reconocedor de voz que funcione correctamente en la XO para porder utilizar nuestro programa allí.
  • Modificar el código para que quede mas claro y legible.
  • Modificar el código para poder utilizar todas las funciones del butia como por ejemplo avanzar una determinada cantidad de centímetros, girar una determinada cantidad de grados, etc.

Documentación