Integrantes: |
Juan
Chacón |
nankutremo [at] gmail [dot]
com |
|
José González |
koringap [at gmail [dot] com |
Profesor:
|
Agustín
González V. |
|
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.
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.
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.
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.
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.
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.
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