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

De Proyecto Butiá
Saltar a: navegación, buscar
(Página creada con '==Integrantes== * Mercedes Marzoa * Florencia Clerici ==Tutor== * Andrés Aguirre ==Introducción== A continuación presentamos el proyecto Paleta para primitivas de reconoci...')
 
(Desarrollo del problema)
 
(No se muestran 17 ediciones intermedias de 3 usuarios)
Línea 1: Línea 1:
 
==Integrantes==
 
==Integrantes==
 
 
* Mercedes Marzoa
 
* Mercedes Marzoa
 
* Florencia Clerici
 
* Florencia Clerici
Línea 8: Línea 7:
  
 
==Introducción==
 
==Introducción==
A continuación presentamos el proyecto Paleta para primitivas de reconocimiento de voz en tortuga.
+
El proyecto consiste en programar mediante instrucciones de voz funcionalidades básicas para el butiá.
  
 
==Motivación==
 
==Motivación==
El proyecto surge a partir de una reunión del Proyecto Butiá en la que una maestra que trabaja en la escuela (?) planteo la necesidad de contar con una herramienta que le permitiera trabajar a sus alumnos con TurtleBot y el robot butiá. 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.
+
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==
 
==Objetivos==
 
* Tener un módulo de reconocimiento de voz
 
* Tener un módulo de reconocimiento de voz
* Definir un gramática básica para poder usar las operaciones básicas del robot butiá en el TurtleBot  
+
* Definir un gramática para poder usar las operaciones básicas del robot butiá en TurtleBot
 
* Integrar el módulo en el TurtleBot
 
* Integrar el módulo en el TurtleBot
  
 
==Desarrollo del problema==
 
==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 —PocketSphinx 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.
  
Hay dos tipos de modelos para describir un lenguaje: gramáticos o estáticos. Los modelos gramáticos son muy simples y se utilizan para reconocer comandos y controles. En este caso como se quiere reconocer comandos se define un modelo de lenguaje gramático.
 
  
Para poder utilizar la biblioteca de reconocimiento tienen que estar definidos:
+
'''Los modelos necesarios para el reconocimiento de voz son los siguientes:'''
*''butia-listens.gram:'' es donde se define la gramática.
+
*''butia-listens.dic:'' es donde se define el diccionario (todas las palabras que se reconocerán).
+
*''modelo acustico:'' es lo que va a utilizar la biblioteca como fuente de datos para hacer el reconocimiento.
+
  
 +
—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.
  
Una vez se tiene definido lo anterior, podemos empezar a desarrollar el modulo de reconocimiento. El primer paso es instalar la biblioteca y sus dependencias. Para eso hay que descargar: Pocketsphinx y Sphinxbase, siguiendo el tutorial en [1].
+
'''¿Porque utilizamos VoxForge?'''
  
La estructura básica del programa que usamos para reconocer se encuentra publicada en [2].
+
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.
  
* Describir modulo de escucha
+
'''Creando el modelo de lenguaje'''
* Describir proceso de entrenamiento del modelo acústico
+
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.
*''butia-listens.transcription:'' es donde asociamos los comandos a reconocer con los archivos de audio.
+
* Describir paleta
+
* Recorte y video de un ejemplo
+
  
 +
'''Gramática:'''
  
==Conclusiones==
+
[[Archivo: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==
 +
 +
[[Archivo: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 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:
 +
 +
<youtube>UVaBrpXh3s4</youtube>
 +
 +
Aclaración: El problema del ultimo bloque que agrega luego de recibir el comando ejecutar ya fue arreglado.
 +
 +
Ejemplo de limpiar bloques:
 +
 +
<youtube>85LtJ-DWd5Q</youtube>
 +
 +
Ejemplo de instrucciones con error al final:
 +
 +
<youtube>A5dZr13dnHY</youtube>
 +
 +
==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==
 
==Trabajo a futuro==
* Ampliar la gramática para abarcar mas funcionalidades del TurtleBot
+
* Ampliar la gramática para abarcar mas funcionalidades del TurtleBot.
* Seguir entrenando el modelo acústico
+
* Entrenar el modelo acústico con más personas y en ambientes con ruido.
 +
* Ampliar a otros idiomas
  
  
 
==Referencias==
 
==Referencias==
[1] http://cmusphinx.sourceforge.net/wiki/tutorialpocketsphinx
+
[1] Modelo acustico VoxForge: http://www.voxforge.org/es
[2] http://cmusphinx.sourceforge.net/wiki/gstreamer
+
[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‎ ]]

Revisión actual del 10:31 16 sep 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 —PocketSphinx 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

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 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:

Ejemplo de instrucciones con error al final:

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

Plugin

Archivo:Butia listens.zip