Receptor de Comandos por Voz

ELO329 – Programación de Sistemas

Proyecto Grupal 2º Semestre 2010

 

             

Integrantes:

Juan Chacón

nankutremo [at] gmail [dot] com

 

José González

koringap [at gmail [dot] com

Profesor:

Agustín González V.

 

 

 

Índice:

 

 

Resumen:

 

            Ocupando herramientas de reconocimiento de patrones de voz y base de datos de modelos de voz ya establecidos, se diseña  un programa que reconoce la voz como entrada estándar para esta consola. De esta manera permite ejecutar procesos con sólo dictar el comando deseado. Además se agregó un servidor TCP que también permite ejecutar estos comandos.

 

 

Introducción:

 

            En ciertos casos, la digitación por teclado de comandos puede ser algo dificultoso o no muy rápido. Para personas con discapacidad motriz es aún mayor el problema.  Cuando se quiere ser práctico a uno se le olvida que el teclado no es la única entrada de lectura hacia el computador, también puede ser la voz propia.

           

            En el mercado existe muchos productos, pero los realmente buenos están en Windows y son pagados. Por lo que nuestra misión fue buscar una herramienta simple con el cual pudiésemos manipular el texto que retorna cuando uno dice una palabra. Establecer una interfaz entre esta herramienta y la ejecución de procesos.

 

            Nuestro objetivo fue:

·        Utilizar un programa Open-Source de conversión  de voz a texto.

·        Mediante un popen, ejecutar un programa y procesar su salida

·        Permite ejecutar comandos en un servidor TCP remoto.

….Subir al Índice

 Desarrollo:

Herramientas usadas.

         Se hizo una búsqueda para un programa  que implemente  un Sistema de Reconocimiento por voz en Linux. Actualmente no existe hay una herramienta que sea competente. Nos basamos en un desarrollo en estado beta Open-Source llamado CMU Sphinx, que fue el de los pocos que nos entregó resultados suficientes.

 

            Además se usó la biblioteca QT para establecer los sockets con mayor facilidad entre el cliente y el Server TCP que accionará los procesos, que tiene la ventaja de ser multiplataforma, por lo que el proyecto tiene alcance a otros sistemas.

 

            Y finalmente se implemento la  una función  GetOpt que permite la concatenación de parámetros en vez que establecer cada argumentos por separador.

 

….Subir al Índice

 

Esquema.

 

 

Modos de uso,

 

                        El programa Cliente tiene 4 formas de ejecutarlo:

·        Modo Prueba: No activa el programa Sphinx-Demo y  ejecuta por consola los comandos por voz.

·        Modo Local: No establece conexión con un servidor remoto y desde la misma máquina ejecuta los procesos solicitados

·        Modo Debug: Imprime comando de voz capturado.

·        Modo Remoto: Establece conexión con un servidor TCP y ejecuta los procesos solicitados remotamente.

 

El programa Servidor TCP, solo es un programa pasivo que recibe una petición y luego de ejecutarse e proceso se cierra.

 

 

Ejemplos.

 

            Inicio del cliente

           

            El programa inicializa sphinx  y espera por una petición

           

           

 

            Ejecuta la opción “ls-l”

           

            El programa se cierra y deja al proceso recién iniciado.

 

 

….Subir al Índice

 

Conclusiones.

 

            La gran herramienta que creemos que aprendimos en el proyecto y en la asignatura en general, fue la reutilización de soluciones ya implementadas, y acondicionarlos a un nuevo contexto para solucionar algo diferente. El uso de pipas, comunicación entre procesos y máquinas remotas permiten un sinfín de innovaciones con objetos “antiguos”. Además de ahorrar código, ahorra tiempo en resolver problemáticas que son independientes de uno. Pero esta misma característica dispone una dependencia que no se puede manejar, que son los bugs o fallas no producidos por uno, sino por estos programas externos.

 

            Es por eso que  hay que tener un buen conocimiento de las herramientas a usar, tal como nos pasó con el reconocedor de voz que  se encuentra en una etapa un poco prematura por lo complicado que es procesar audio para convertirlo en un texto gramaticalmente bien. Por lo que su retorno era muy pocas veces bueno como para aceptar su petición.

           

Aunque de todas maneras quedamos satisfechos el poder hacerlo correr y comprobar que funciona, sin necesidad de Sphinx. Por que está diseñado para que se establezcan pequeñas modificaciones para comunicarse con otras herramientas de procesamientos de audio.

 

Finalmente el programa tiene bastante alcance para optar a otras plataformas y desarrollar una interfaz gráfica y amigable.

 

….Subir al Índice

 

Obtener Código.

 

            Los códigos se encuentran acá:

·        Cliente

·        Servidor

 

Para compilarse deben escribir “make” para cada programa

 

Requisitos (Entorno Linux):

·        Festival

o       sudo apt-get install festival

·        Sphinx2

o       sudo apt-get install sphinx2-bin

·        Librería QT

 

 

….Subir al Índice