Tuesday, October 30, 2012

Entrega 3 [Proyecto Clase]

Control de un Sistema mediante el Reconocimiento de Voz

Introducción

Durante las últimas décadas se ha estudiado la posibilidad de desarrollar interfaces hombre-computador controlados por voz para sustituir  en ciertas aplicaciones a las interfaces tradicionales basadas en teclados o ratones. El Reconocimiento Automático de Voz es un campo de investigación de creciente relevancia que día a día gana mas partidarios.

Los reconocedores actuales manejan cada vez vocabularios más grandes, logran menores tasas de error de reconocimiento y menores tiempos de procesamiento gracias al uso de algoritmos mas eficientes, a la aplicación de equipos más potentes y económicos, y al aumento de la complejidad de estos sistemas, al emplearse modelados más sofisticados y refinados. No obstante, a pesar de los grandes avances realizados, se está todavía muy lejos de un sistema de reconocimiento automático de voz universal que funcione bien en cualquier aplicación a la que sea destinado.

Hoy en día la mayoría de los sistemas reconocedores en funcionamiento, se basan en la técnica de modelos ocultos de Markov, debido a que requieren menos memoria física, ofrecen menor tiempo de respuesta y una menor tasa de error con respecto a otras herramientas matemáticas utilizadas en reconocimiento de patrones. En este caso el reconocimiento es basado en la comparación de patrones de referencia denominados modelos con los vectores de características generados para la palabra a reconocer.

Resumen del Proyecto

La primer idea de nuestro proyecto se basaba en la implementación de un sistema de reconocimiento de voz desarrollado en Python para GNOME 3 que controlara algunas acciones de las acciones de un Sistema Operativo Linux.

Ya conforme la marcha, se empiezan a surgir nuevas ideas en Java, inclusive cambiar prácticamente el giro del proyecto a ser implementado en algún dispositivo móvil utilizando la parte adaptativa que sería el auto-ajuste de ciertos parámetros siguiendo una metodología de reconocimiento de patrones.

Hasta el momento se logra, gracias también a la práctica 3 del Laboratorio, solamente hacer el reconocimiento de voz gracias a la libreria TalkingJava SDK de Cloudgarden.

Avance del Proyecto

Se ha conseguido realizar el reconocimiento de ciertas palabras mediante un diccionario que cumple con JSGF, el cual es un conjunto de convenciones para la gramática en el reconocimiento de Voz.

Entre los problemas que se han suscitado está al utilizar el micrófono integrado con la webcam de una laptop y con el ruido del entorno se tarda en reconocer y confunde ciertas palabras similares.

A continuación se presenta un fragmento del programa:

  
public class Palabras extends ResultAdapter {
  static Recognizer rec;
  String Palabra;

  public void reconocerPalabra(ResultEvent e){
 try {
  Result res = (Result)(e.getSource());
  ResultToken tokens[] = res.getBestTokens();
  String Frase[]= new String[1];
  Frase[0]="";

  for (int i=0; i < tokens.length; i++){
   Palabra = tokens[i].getSpokenText();
   Frase[0]+=Palabra+" "; 
   System.out.print(Palabra + " ");
  }
  System.out.println();
  if (Palabra.equals("Fin")) {
   rec.deallocate();
   System.out.println(Frase[0]);
   System.exit(0);
  }
  else if(Palabra.equals("Adelante")){
              System.out.println("ADELANTE");
  } 

  else if(Palabra.equals("Atras")){
   System.out.println("ATRAS");
  } 

  else {
   getPalabra();
   rec.suspend();
    rec.resume();
  }
 }catch(Exception ex){
 }
  }

  public String getPalabra(){
 return Palabra;
  }
}

Recursos y Herramientas


CloudGarden ha producido una plena aplicación de la API de Sun Java Speech para las plataformas Windows, lo que permite una amplia gama de SAPI4 y SAPI5 compatible con Text-To-Speech y Reconocimiento del Habla a ser programadas usando la API estándar de Java Speech.

El formato de la gramática JSpeech (JSGF) es una plataforma independiente en representación textual de gramáticas para su uso en el reconocimiento de voz. Es utilizado por los reconocedores de voz para determinar lo que el reconocedor debe escuchar, y así describir los enunciados que un usuario puede decir.
  • TalkingJava SDK with Java Speech API implementation Current Version 1.7.0, el cual es un conjunto de convenciones para la gramática en el reconocimiento de Voz.
  • http://www.sicuma.uma.es/sicuma/independientes/argentina08/Liliana/JSAPI.htm
  • http://www.w3.org/TR/jsgf/