Diferencia entre revisiones de «Grupo 3»

De Proyecto Butiá
Saltar a: navegación, buscar
(Demostración)
(Demostración)
Línea 62: Línea 62:
 
'''Subir y bajar scroll'''
 
'''Subir y bajar scroll'''
  
A continuación se adjunta una demostración de la funcionalidad que permite subir y bajar el scroll mediante los comandos de voz "Subir" y "Bajar"
+
A continuación se adjunta una demostración de la funcionalidad que permite subir y bajar el scroll mediante los comandos de voz "Subir" y "Bajar".
 +
 
  
 
<youtube>pwnOLB_7D1I</youtube>
 
<youtube>pwnOLB_7D1I</youtube>
 +
  
 
'''Deshacer'''
 
'''Deshacer'''
  
 
La demostración del comando "Deshacer" se separa en 5 casos:
 
La demostración del comando "Deshacer" se separa en 5 casos:
* El último bloque insertado es uno simple (adelante/atrás/derecha/izquierda/detener Butiá)
+
* El último bloque insertado es uno simple (adelante/atrás/derecha/izquierda/detener Butiá).
* El último bloque insertado es uno compuesto por dos bloques (cualquiera de los "Esperar")
+
* El último bloque insertado es uno compuesto por dos bloques (cualquiera de los "Esperar").
* El último bloque insertado es una estructura de repetición ("Por siempre" o cualquiera de los "Repetir")
+
* El último bloque insertado es una estructura de repetición ("Por siempre" o cualquiera de los "Repetir").
 
* El último bloque insertado viene inmediatamente después de salir de una estructura de repetición (mediante el comando "Fin"). En este caso hay que notar que, luego de deshacer, el siguiente bloque que se inserte puede quedar adentro o afuera de la estructura de repetición. Nosotros decidimos que quede fuera y esto se puede ver en el video.
 
* El último bloque insertado viene inmediatamente después de salir de una estructura de repetición (mediante el comando "Fin"). En este caso hay que notar que, luego de deshacer, el siguiente bloque que se inserte puede quedar adentro o afuera de la estructura de repetición. Nosotros decidimos que quede fuera y esto se puede ver en el video.
 
* El último caso se puede ver como una continuación del anterior, con la diferencia de que, luego de insertado el bloque afuera de la estructura de repetición, se deshace más de una vez. De esta forma, se borra el bloque exterior (como en el caso anterior) pero también algunos de los interiores. Lógicamente, al insertarse un bloque nuevo a continuación de lo mencionado, el mismo quedará adentro de la estructura de repetición.
 
* El último caso se puede ver como una continuación del anterior, con la diferencia de que, luego de insertado el bloque afuera de la estructura de repetición, se deshace más de una vez. De esta forma, se borra el bloque exterior (como en el caso anterior) pero también algunos de los interiores. Lógicamente, al insertarse un bloque nuevo a continuación de lo mencionado, el mismo quedará adentro de la estructura de repetición.
 +
  
 
<youtube>0mAKes-7qQI</youtube>
 
<youtube>0mAKes-7qQI</youtube>
 +
  
 
'''Demostración completa'''
 
'''Demostración completa'''
  
 
Finalmente se adjunta una demostración de todas las funcionalidades agregadas en este proyecto.
 
Finalmente se adjunta una demostración de todas las funcionalidades agregadas en este proyecto.
 +
  
 
<youtube>9kdOFACfQ0Y</youtube>
 
<youtube>9kdOFACfQ0Y</youtube>

Revisión del 17:31 14 ago 2014

Integrantes

  • Álvaro Pardo
  • Fernando Penadés

Tutor

  • Mercedes Marzoa

Introducción

En el año 2013 comenzó un proyecto denominado Paleta para primitivas de reconocimiento de voz en tortuga que tuvo como objetivo el agregar una paleta al TurtleBot que trabaje con reconocimiento de voz. La idea central de ese proyecto fue acercar el Proyecto Butiá a estudiantes con discapacidades físicas tales que no les permitan usar el mouse para manejar el TurtleBots. Se planteó entonces la opción de crear un módulo de reconocimiento de voz que permita programar las funcionalidades del robot mediante comandos de voz. Dicho proyecto inició la investigación del área del reconocimiento de voz, creó la nueva paleta y agregó las primeras funcionalidades a la misma.

El proyecto sobre el que trata esta wiki es una continuación del anteriormente mencionado y tiene como objetivo fundamental el mejorar las funcionalidades del anterior, así como agregar nuevas a la paleta.

Motivación

Nos pareció buena idea continuar con este proyecto, con el fin de mejorarlo y acercarlo más a el objetivo final de insertarlo en el mundo educativo, dando así nuevas posibilidades a los chicos con capacidades diferentes de trabajar con el robot Butiá. Las principales dificultades que notamos a la hora de programar mediante voz con la paleta anterior, pasaban por la imposibilidad de desplazarse por la pantalla (moviendo el scroll) y de deshacer. Creímos conveniente orientar nuestro trabajo hacía la implementación de dichas funcionalidades.

Objetivos

  • Agregar varias funcionalidades básicas a las ya existentes.
  • Permitir al usuario una más cómoda edición del código, mediante comandos para mover del scroll y la operación "Deshacer".
  • Agregar más entrenamiento a las operaciones pre existentes, con el fin de mejorar la capacidad de reconocimiento de las mismas.

Desarrollo del problema

En el proyecto anterior se realizó una extensa investigación del área de reconocimiento de voz, recabándose información e implementándose la paleta en base a ella. La completa explicación sobre el funcionamiento del reconocimiento de voz dentro del proyecto y sobre como fue implementado, se puede leer en la siguiente sección Desarrollo del problema de la wiki anterior.

Gramática: Al implementar nuevas funcionalidades, fue necesario modificar la gramática original. La nueva gramática, luego de las modificaciones de esta iteración, es la siguiente: Gram.jpg

Paleta

PaletaEscuchar.png

La paleta como se ve en la imagen consta de un solo bloque llamado escuchar. Lo que hace este bloque es iniciar el programa que escucha. Luego simplemente se comienza a decir las instrucciones.

Comandos soportados desde antes:

  • Empezar
  • Adelante Butiá
  • Atrás Butiá
  • Derecha Butiá
  • Izquierda Butiá
  • Esperar [número] donde número es la cantidad de tiempo a esperar de 1 a 10
  • Limpiar: Borra todos los comandos
  • Ejecutar: Deja de escuchar y ejecuta el programa

Comandos nuevos:

  • Bajar: Baja el scroll
  • Subir: Sube el scroll
  • Deshacer
  • Por siempre
  • Repetir [número] donde número es la cantidad de veces a repetir de 1 a 10
  • Fin: Comando utilizado para terminar de poner bloques dentro de una estructura de repetición (Repetir o Por siempre) y comenzar a ponerlos abajo de la misma

Notas:

  • El bloque escuchar no debe ser borrado y no debe estar conectado a ningún otro bloque
  • Para poder utilizar el comando ejecutar es necesario que se haya colocado un bloque empezar, de modo que la ejecución comience desde el mismo

Demostración

Subir y bajar scroll

A continuación se adjunta una demostración de la funcionalidad que permite subir y bajar el scroll mediante los comandos de voz "Subir" y "Bajar".



Deshacer

La demostración del comando "Deshacer" se separa en 5 casos:

  • El último bloque insertado es uno simple (adelante/atrás/derecha/izquierda/detener Butiá).
  • El último bloque insertado es uno compuesto por dos bloques (cualquiera de los "Esperar").
  • El último bloque insertado es una estructura de repetición ("Por siempre" o cualquiera de los "Repetir").
  • El último bloque insertado viene inmediatamente después de salir de una estructura de repetición (mediante el comando "Fin"). En este caso hay que notar que, luego de deshacer, el siguiente bloque que se inserte puede quedar adentro o afuera de la estructura de repetición. Nosotros decidimos que quede fuera y esto se puede ver en el video.
  • El último caso se puede ver como una continuación del anterior, con la diferencia de que, luego de insertado el bloque afuera de la estructura de repetición, se deshace más de una vez. De esta forma, se borra el bloque exterior (como en el caso anterior) pero también algunos de los interiores. Lógicamente, al insertarse un bloque nuevo a continuación de lo mencionado, el mismo quedará adentro de la estructura de repetición.



Demostración completa

Finalmente se adjunta una demostración de todas las funcionalidades agregadas en este proyecto.


Conclusiones

Logramos implementar las funcionalidades que nos propusimos y concluímos que aún quedan varias funcionalidades importantes que desarrollar, como las estructuras "if-then-else" y la utilización de cajas. Centramos nuestro trabajo en agregar algunas estructuras básicas, como repetir (de 1 a 10) y por siempre, y funcionalidades de edición, como movimiento del scroll y el deshacer. Esta última es fundamental, dado que el reconocimiento de voz es aún inexacto y es necesario poder volver atrás sin necesidad de borrar todo. El otro objetivo que nos propusimos fue el de mejorar el entrenamiento de las funcionalidades preexistentes. Logramos duplicar la base de datos de voz y mejorar el reconocimiento adecuado de los comandos anteriores. Sin embargo, notamos que todavía hace falta trabajo de entrenamiento para que la paleta pueda ser usada convenientemente.

Trabajo a futuro

  • Agregar más funcionalidades básicas y más complejas, como por ejemplo guardado de proyecto, uso de cajas, estructuras "if" y sensores.
  • Entrenar aún más el modelo acústico.
  • Ampliar a otros idiomas.

Referencias

[1] Modelo acustico VoxForge: http://www.voxforge.org/es

[2] Tutorial Pocketsphinx http://cmusphinx.sourceforge.net/wiki/tutorialpocketsphinx

[3] Using PocketSphinx with GStreamer: http://cmusphinx.sourceforge.net/wiki/gstreamer

[4] Adapting the default acoustic model: http://cmusphinx.sourceforge.net/wiki/tutorialadapt

Plugin

Archivo:Butia listens.zip (31,07 MB)