Diferencia entre revisiones de «Paleta para primitivas de reconocimiento de voz en tortuga»

De Proyecto Butiá
Saltar a: navegación, buscar
Línea 84: Línea 84:
  
 
==Demo==
 
==Demo==
Ejemplo de ejecutar: http://youtu.be/UVaBrpXh3s4
+
Ejemplo de ejecutar:  
 +
 
 +
<youtube>UVaBrpXh3s4</youtube>
  
 
Aclaración: El problema del ultimo bloque que agrega luego de recibir el comando ejecutar ya fue arreglado.
 
Aclaración: El problema del ultimo bloque que agrega luego de recibir el comando ejecutar ya fue arreglado.

Revisión del 02:10 22 jun 2014

Integrantes

  • Mercedes Marzoa
  • Florencia Clerici

Tutor

  • Andrés Aguirre

Introducción

El proyecto consiste en programar mediante instrucciones de voz funcionalidades básicas para el butiá.

Motivación

La idea nuestra de elegir este proyecto surge luego de una reunión a la que fuimos donde una maestra que trabaja con niños con capacidades diferentes planteó la necesidad de agregarle funcionalidades al Butiá para poder trabajar con sus alumnos. Si bien el proyecto no puede resolver toda la problemática, la idea es que se pueda extender y que quede planteado el problema para motivar otras soluciones.

Objetivos

  • Tener un módulo de reconocimiento de voz
  • Definir un gramática para poder usar las operaciones básicas del robot butiá en TurtleBot
  • Integrar el módulo en el TurtleBot

Desarrollo del problema

Para realizar nuestro proyecto utilizamos una parte del proyecto CMU Sphinx. CMU Sphinx es un sistemas de reconocimiento de voz desarrollado en la Universidad de Carnegie Mellon compuesto por una serie de programas para reconocimiento de voz. En nuestro caso utilizamos —PocketSohinx que es una biblioteca escrita en c para el reconocimiento de voz basada en SphinxBase, en particular elegimos esta biblioteca por ser liviana, especial si se necesita velocidad y portabilidad. También usamos otra herramienta de CMU Sphinx llamada SphinxTrain que sirve para entrenar el modelo acústico.


Los modelos necesarios para el reconocimiento de voz son los siguientes:

—Modelo acústico: VoxForge[1]. Contiene la probabilidad de que aparezcan ciertas palabras en un determinado orden. —Diccionario fonético: Relaciona cada palabra con su fonética. Gramática: Define el conjunto de combinaciones de palabras.

¿Porque utilizamos VoxForge?

A pesar de que existen corpus disponibles para poder crear modelos acústicos, la mayoría (especialmente los grandes y mejor construidos, con los que se podrían construir buenos modelos acústicos) deben ser adquiridos bajo licencias restrictivas. VoxForge es un proyecto que intenta recoger transcripciones de textos mediante voz para ser usada como herramienta de reconocimiento de voz libre y de código abierto.

Creando el modelo de lenguaje Hay dos tipos de modelos para describir un lenguaje: Dependiendo de la aplicación se usará o bien una gramática (se definen una serie de frases, con un cierto formato) o un modelo de lenguaje (empleado para aplicaciones de dictado), en nuestro caso usamos una gramática ya que solo nos interesa reconocer unas frases determinadas.

Gramática:

Gramatica.jpg

Adaptando el modelo acústico Si bien CMUSphinx tiene varios modelos acústicos muy bien preparados, los mismos no están en español. Incluso en voxForge no existe, todavía, un Corpus de voz o un modelo acústico en castellano para poder ser descargado. Lo que hicimos entonces fue grabar a varias personas diciendo las palabras que necesitamos para los comandos.

Para poder adaptar el modelo fue necesario definir lo siguiente:

  • butia-listens.dic: es donde se define el diccionario, todas las palabras que se reconocerán con su correspondiente fonética.
  • butia-listens.fileids - Lista de archivos a entrenar
  • butia-listens.transcription - Transcripción para entrenar, asocia las palabras con los archivos de audio
  • wav - Carpeta con los archivos de audio de las voces grabadas

Luego de tener todas estas cosas definidas adaptamos el modelo usando el script correspondiente [4]

Preparando la plataforma

Pocketsphinx como ya mencionamos es una biblioteca que depende de otra llamada SphinxBase, por este motivo es que se necesita instalar las dos. Entonces, primero que nada instalamos las dos bibliotecas, siguiendo el tutorial en [3].

Luego hay que instalar las dependencias para que puedan funcionar las bibliotecas, es necesario instalar las siguientes:

  • gstreamer
  • gstramer-python
  • pocketshpix-plugin.x86_64

El programa

Para hacer el programa nos basamos en [3] Lo que hace el programa es escuchar el micrófono y usando pockesphinx y el modelo adaptado por nosotros devuelve el comando en texto. Luego según el comando elegido se llama al bloque correspondiente. Si el comando es ejecutar detiene el esuchar y ejecuta, si es limpiar borra todos los bloques y sigue escuchando para poder ingresar nuevamente los comandos.

Paleta

Paleta.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 válidos:

  • 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


Demo

Ejemplo de ejecutar:

Aclaración: El problema del ultimo bloque que agrega luego de recibir el comando ejecutar ya fue arreglado.

Ejemplo de limpiar bloques: http://youtu.be/85LtJ-DWd5Q

Ejemplo de instrucciones con error al final: http://youtu.be/A5dZr13dnHY


Conclusiones

Aprendimos como hacer una platea en turtlebots, como se trabaja con reconocimiento de voz y lo complejo que es esto. También vimos la importancia de tener una buena base de datos de voz para que funcione bien, aunque no pudimos lograrlo.

Trabajo a futuro

Ampliar la gramática para abarcar mas funcionalidades del TurtleBot Entrenar el modelo acústico con más personas y en ambientes con ruido 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