Abstract:
El siguiente trabajo de graduación tiene como objetivo principal el desarrollo e implementación de un sistema de interacción verbal en tiempo real entre un usuario y el rostro animatrónico de la Universidad del Valle de Guatemala. Luego de un trade study, se seleccionó TensorFlow, específicamente la librería de Keras, para el desarrollo de un modelo capaz de reconocer y clasificar una entrada de texto basandose en la temática de la oración.
Se implementa un sistema de reconocimiento de voz, un sistema de sintetización de voz para responder y movimientos del rostro al momento de responder.
Para el reconocimiento de voz y conversión a texto se utilizó la librería de Python
“Speech_Recognition” y se utiliza específicamente la API de Google para este procedimiento, de manera que la consulta y generación del texto reconocido es bastante rápida y ofrece dicho servicio tanto para inglés como español latino.
El desarrollo del modelo de reconocimiento y clasificación de temas constó de varias
partes. La primera es la estructuración y desarrollo de una base de datos que funje como
Dataset para el entrenamiento del modelo. Esta se desarrolló en formato JSON y cuenta
con una estructura tipo diccionario, de modo que resulta sencillo acceder a la información.
Cada diccionario cuenta con un identificador; patrones, los cuales se usarán para entrenar
al modelo y respuestas para dar al usuario.
Debido a la complejidad de la tarea, es necesario procesar los datos tanto para el entrenamiento del modelo como para recibir los datos del usuario. Por ello, se usaron técnicas de Natural Language Processing para procesar dichos datos; una de ellas fue la lematización de palabras y una forma inteligente de entrenamiento del modelo a base de listas codificadas.
Con ello, se diseña el modelo de una red neuronal entrenada a partir de los datos encontrados en la base de datos para reconocer y clasificar temáticas de conversación. Se utilizaron técnicas, como algoritmos de optimización, para mejorar los resultados del modelo y evitar overfitting. Se desarrolló una serie de funciones capaz de implementar el modelo para poder ser utilizado en algún proceso.
Finalmente, se desarrolló por medio de la librería de Kivy una interfaz gráfica capaz de mostrar al operador el flujo de la conversación que existirá entre el usuario y el animatrónico.
Por medio de un proceso de diseño, se obtiene un modelo atractivo y con base en este se desarrolla el apartado gráfico del proyecto. Para poder implementar el modelo en la interfaz, se hace uso de la técnica “Multithreading” que nos permite ejecutar una parte del código en paralelo con la ejecución de la interfaz gráfica, de modo que ambas partes comparten información, pero sus procesos no se ven interrumpidos entre sí. Se hace uso de las funciones desarrolladas para la implementación del modelo y se desarrolla un bucle, el cual siempre escuchando activamente todo el tiempo, pero no responderá si no se le saluda primero, de modo que el bot no responderá a personas que no le están dirigiendo la palabra a él. Cada vez que el bot comience a hablar mandará una señal por medio de comunicación serial al microcontrolador para que este mueva la boca; este proceso se hace de manera muy exacta y síncrona, por lo que la sincronización entre el tiempo de habla y el movimiento de la boca es bastante atractiva.
(A)