UNIVERSIDAD POLITÉCNICA DE MADRID ESCUELA TÉCNICA SUPERIOR DE INGENIEROS DE TELECOMUNICACIÓN DEPARTAMENTO DE INGENIERÍA ELECTRÓNICA PROYECTO FIN DE CARRERA Diseño e implementación de un asistente personal capaz de expresar emociones CARLOS SANZ MORENO Madrid, 2009
233
Embed
Diseño e implementación de un asistente personal capaz de ...lorien.die.upm.es/juancho/pfcs/csm/MemoriaPFC.pdf · capaz de expresar emociones que posibilite una relación entre
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
UNIVERSIDAD POLITÉCNICA DE MADRID
ESCUELA TÉCNICA SUPERIOR DE INGENIEROS
DE TELECOMUNICACIÓN
DEPARTAMENTO DE INGENIERÍA ELECTRÓNICA
PROYECTO FIN DE CARRERA
Diseño e implementación de un asistente personal capaz de expresar emociones
CARLOS SANZ MORENO
Madrid, 2009
TÍTULO: Diseño e implementación de un asistente personal
capaz de expresar emociones.
AUTOR: Carlos Sanz Moreno.
TUTOR: D. Juan Manuel Montero Martínez.
DEPARTAMENTO: Ingeniería Electrónica.
TRIBUNAL:
Presidente: D. Javier Ferreiros López.
Vocal: D. Juan Manuel Montero Martínez.
Secretario: D. Fernando Fernández Martínez.
Vocal Suplente: D. Rubén San Segundo Hernández.
Fecha de Lectura: Madrid, de de 2009
CALIFICACIÓN:
UNIVERSIDAD POLITÉCNICA DE MADRID
DEPARTAMENTO DE INGENIERÍA ELECTRÓNICA
ESCUELA TÉCNICA SUPERIOR DE INGENIEROS
DE TELECOMUNICACIÓN
PROYECTO FIN DE CARRERA
Diseño e implementación de un asistente personal capaz de expresar emociones
- Proyecto becado por la Cátedra Indra-Adecco-UPM -
CARLOS SANZ MORENO
Ingeniero de Telecomunicación
Tutor del Proyecto
JUAN MANUEL MONTERO MARTÍNEZ
Doctor Ingeniero de Telecomunicación
Septiembre, 2009
RESUMEN
El presente proyecto versa sobre el diseño e implementación de un asistente personal
capaz de expresar emociones que posibilite una relación entre las personas y las máquinas
sencilla e intuitiva. La motivación principal de este proyecto ha sido la, cada vez más frecuente,
complejidad tecnológica de los hogares sumada a los avances en todo tipo de interfaces.
Se ha creado un sistema con diferentes características: una interfaz multimodal capaz de
procesar información heterogénea que permita eliminar las barreras de comunicación con las
máquinas, es decir, se ha incluido reconocimiento y síntesis de voz, tratamiento de imágenes y
sensores físicos; un conjunto de aplicaciones domóticas destinadas al contexto de un hogar que
permita mostrar a los usuarios la utilidad de los sistemas electrónicos en la vida cotidiana
(control de luces, control de aspiradora, control de equipo de música…); por último, se ha creado
un modelo de emotividad que permita que la relación entre las personas y las máquinas diste de
un simple conjunto de órdenes.
Ajustándose a estas características, el presente proyecto ha profundizado en el diseño de
una arquitectura que permitiese dar soporte a las funcionalidades descritas para, una vez
incluidas, centrarse en el diseño del módulo de emotividad. En concreto se ha creado un modelo
de usuarios que sea capaz de analizar la relación entre el usuario y el sistema para poder ajustar
el comportamiento de éste en función de ella. Finalmente, también se ha desarrollado un
sistema emocional escalable que simplifique la generación de emociones separándola de las
appraisal theory, Maslow, domótica, sistema emocional.
A mis padres, por vuestra gran dedicación
A mis hermanos, por vuestro maravilloso ejemplo
A Ainhoa, por tu cariño incondicional
Es de bien nacidos ser agradecidos…
En estas líneas quería realizar un paréntesis y recordar, brevemente, a todos aquellos que han contribuido, de una u otra forma, a conseguir que este proyecto saliese adelante.
Mis agradecimientos al grupo de Control Inteligente, especialmente a Diego por su espléndida labor en el sistema de comunicaciones. A los alumnos Jorge, Daniel, Enrique, Juan Carlos, José Manuel y Jorge sin los cuales no se podría haber realizado este sistema. También a Alexander Zlotnik por su maravillosa infraestructura. Al personal del Departamento de Ingeniería Electrónica, en especial a Luis García, Julián Sánchez Osorio y Oscar García González por su gran trabajo con la cara robótica.
Por supuesto agradecer al todo Grupo de Tecnología del Haba su apoyo con cuantos problemas he tenido. En especial a Javier Ferreiros, Juan Manuel Lucas, Fernando Fernández
Agradecer a la cátedra INDRA-ADECCO su apoyo en este proyecto, en especial a su director, José Manuel Menéndez, y a Carlos A. Martín.
No obstante, querría seguir con la tradición de nuestro querido Almodóvar dando las gracias a José Miguel y Víctor, por su compañía y por estar siempre disponibles para echarme una mano o para tener una conversación en una tarde de esas “donde se ganan las ligas”. A Syaheerah por su paciencia, por la cantidad de horas que hemos pasado intentando comunicarnos y por su ayuda a la hora de enfocar este proyecto. A Rober por ser la “mano anónima” que activaba el sintetizador cada vez que había uno de los muchos apagones.
También quería agradecer especialmente a Juancho todo su trabajo, todos los días dedicados a este proyecto sin escatimar esfuerzos, por pedirme mucho pero por darme más. Por estar siempre disponible para enseñarme cualquier cosa. Por demostrarme lo fácil que es hacer las cosas si tienes claro lo que quieres y, por supuesto, por hacerme una estrella mediática de youtube.
No escapan de mi cabeza todos aquellos que han contribuido a que esta aventura haya concluido. Vienen a mi recuerdo muchos nombres, Fer, Huanluih, Alberto, Ana, Noemí, Isabel… mucha gente para nombrar. Por supuesto no me puedo olvidar de mi gran compañero y amigo MA, con quién siempre es agradable tomar un café y echar un vistazo atrás. 6 años dan para tanto…
Por supuesto soy incapaz de olvidar a aquellos con los que he pasado tan buenos momentos. Laura y Agus que siempre han servido como ejemplo de amistad y de buen rollo. A Carlos porque eres un ejemplo de persona excepcional, porque nunca tienes una mala cara y porque siempre estás dispuesto a echar una mano. A Cris, mi “pescaíto”, por tantos y tantos buenos ratos, por compartir conmigo las esperas del autobús y porque sé que me quieres aunque tu orgullo no te permita reconocerlo (¡Deja de mirarme el culo!) ;). A Ele y Jose por todos los ratos
que hemos pasado juntos, porque siempre estáis dispuestos a dar una vuelta y, sobretodo, a Elena por demostrarme cómo se puede ser fan de un McDonald´s jeje.
Sin embargo sería imposible terminar aquí estos agradecimientos. Necesito dedicar unas líneas a todos aquellos que estaban mucho antes de que toda esta aventura empezase y que seguro estarán mucho tiempo después. Mi familia.
Empezaré con los más recientes: Gracias Laura porque siempre estás dispuesta para un rato de conversación, cosa que ha hecho tus visitas muy importantes para poder seguir cuerdo tras tantas horas en el cuarto trabajando. Tampoco me olvido de Ramón, que siempre has aguantado estoicamente los “coñazos” que te meto: que si mira mi proyecto, que si te digo la presentación, que si vamos a tocar tal o vamos a cual. Gracias por ser tan paciente y tan buena gente, y ya sabes, cuida de mi hermanita ;).
Además me gustaría recordar a mis tíos y primos, Cande, Santi Raúl y Álvaro, por ser más que mis primos mis hermanos, porque cada vez que estoy con vosotros noto el calor de estar con personas que te quieren, y eso no es fácil de encontrar.
Cómo no recordad a mi otro hermano, Pablo. Dice el dicho que quien tiene un amigo tiene un tesoro y eso es precisamente lo que he descubierto contigo, aún recuerdo cuando estábamos bajo el frío de Diciembre iluminados por la tenue luz de una farola enfrente de tu calle totalmente vacía, con las tuberías de plástico que habíamos sacado de no sé dónde, ¿quizás de alguna expedición al bosque?, intentando matar “apachis”. De aquello hace ya algún tiempo, pero creo que nuestra amistad no ha sufrido ningún cambio. Gracias.
También quería tener un breve recuerdo para “la Mari” porque me has acogido y me has tratado con el cariño de una madre y porque aún te debo una visita a las casas colgadas de Cuenca.
A Ainhoa por ser un apoyo constante, por estar siempre disponible para calmarme y orientarme, por no mandarme muy muy lejos cuando me pongo obcecado, por hacerme sentir tan feliz contigo y porque nunca a un ser extraño le llamé mi familia.
No puedo continuar sin hacer un paréntesis y recordar a aquellos que ya no están conmigo… Aunque nunca lo confesé, tenía tantas ganas de que pudierais verme acabar…
Quisiera recordar a mi hermano Alberto que, aunque eres un poco rarito, siempre he notado tu protección como hermano pequeño que soy (faltaría más :P) y porque has sido en muchas ocasiones uno de mis mejores amigos, los veranos en La Beltraneja con Carlos, Alberto y Julio jugando al fútbol o haciendo marchas en bici los guardo con mucho cariño.
A mi hermana Raquel por todo el tiempo que has dedicado a enseñarme, me enseñaste a caminar, me ayudaste cuando estaba atascado en el colegio, aunque ahí Alberto también contribuía. Me enseñaste a patinar, a montar en bici cuando te seguíamos como patitos. Gracias porque a pesar de sacarme 7 años nunca has tenido ningún problema en que fuese contigo, gracias por ser el espejo en el que tanto Alberto como yo nos hemos mirado durante todos estos años, ya que sin tu ejemplo dudo mucho que estuviese aquí hoy y gracias, porque, aunque la vida avanza, nunca nos has echado de la tuya.
Finalmente, a mis padres, es increíble el pensar como una persona puede mostrar tanta entrega, tanto cariño, tanto sacrificio sin esperar nada a cambio. Cómo son capaces de ser un ejemplo durante todo el día. Cómo nunca están cansados y siempre son capaces de dar un poco más. Gracias papá por el sacrificio que has hecho ¿durante, cuántos años ya, 7? Yendo
diariamente a Toledo sin mostrar ni una pizca de cansancio en casa, por ser un ejemplo de superación y de profesionalidad y sobre todo porque gracias a tu valía seguimos aquí hoy. Gracias mamá por demostrarme cómo es en la sinceridad y la honestidad en donde reside realmente la grandeza de las personas, gracias por tu comportamiento siempre ejemplar, porque siempre te has sacrificado por los demás, porque si alguien tiene que estar incómodo para que los demás sean felices eres la primera en hacerlo.
Por tantas y tantas cosas…. GRACIAS A TODOS.
GLOSARIO
- Adaboost: Adaptative Boosting.
- API: Aplication Programming Interface.
- BIC: Bayesian Information Criterion.
- Bluetooth: Estándar para interconexión inalámbrica de dispositivos.
- CPU: Central Processing Unit.
- DIE: Departamento de Ingeniería Electrónica.
- DISAM: División de Ingeniería de Sistemas y Automática.
- DVD: Digital Versatile Disc.
- FHSS: Frequency Hopping Spread Spectrum.
- GTH: Grupo de Tecnología del Habla.
- Hi-Fi: High Fidelity.
- HMM: Hidden Markov Models.
- HTTP: HyperText Transfer Protocol.
- IA: Inteligencia Artificial.
- IP: Internet Protocol.
- iRTrans: Módulo transmisor de infrarrojos.
- ISM: Industrial, Scientific and Medical.
- KNN: K Nearest Neighbors.
- MIT: Massachusetts Institute of Technology.
- NIF: Need Independent Feature.
- NLP: Natural Language Processing.
- n-value: Valor del nivel de necesidad de Maslow.
- OpenCV: Librería de procesado de imágenes.
- PC: Personal Computer.
- RFID: Radio Frequency Identification.
- RNA: Redes Neuronales Artificiales.
- Roomba: Robot aspiradora.
- SERVIVOX: Conjunto de aplicaciones para gestión de diálogo.
- SOAP: Simple Object Acces Protocol.
- SPP: Serial Port Profile.
- TCP: Transmission Control Protocol.
- TDT: Televisión Digital Terrestre.
- TIF: Task Independent Feature.
- TTS: Text To Speech.
- UC: University of Colorado.
- WA: Word Accuracy.
- Wifi: Wireless Fidelity.
- X10: Protocolo de comunicación para aplicaciones domóticas.
I
ÍNDICE DE CONTENIDOS
1 INTRODUCCIÓN - 1 -
1.1. Objetivo de este proyecto - 3 -
1.2. Estructura de la memoria - 3 -
1.3. Fases de Trabajo - 4 -
2 DESCRIPCIÓN GENERAL DEL SISTEMA - 7 -
2.1. Definición de requisitos - 8 -
2.2. Arquitectura general del sistema - 8 -
2.3. Modelo de Comportamiento - 10 - 2.3.1. Estado del arte: Módulo de comportamiento. - 10 -
2.3.2. Módulo de comportamiento implementado - 12 - 2.3.2.1. Mensajes procedentes de la interfaz de entrada - 13 - 2.3.2.2. Mensajes destinados a la interfaz de salida - 15 - 2.3.2.3. Mensajes del modelo emocional - 16 - 2.3.2.4. Secuencia del módulo de comportamiento - 17 -
3 SUBSISTEMA DE COMUNICACIONES - 19 -
3.1. Estado del arte: Arquitecturas de comunicaciones. - 19 -
4.1. Interfaz Verbal - 39 - 4.1.1. Estado del arte - 41 -
4.1.1.1. Reconocimiento de voz - 41 - 4.1.1.1.1. Métodos de reconocimiento - 43 -
4.1.1.1.1.1. Reconocimiento de patrones - 44 - 4.1.1.1.2. Variabilidad de la señal de voz - 46 - 4.1.1.1.3. Prestaciones - 48 -
4.1.1.2. Identificación de usuario - 49 - 4.1.1.3. Síntesis de voz - 53 -
II
4.1.1.3.1. Arquitectura general de un sintetizador de habla - 54 - 4.1.1.3.1.1. Procesamiento de Lenguaje Natural (NLP) - 55 - 4.1.1.3.1.2. Proceso de Síntesis - 55 -
4.1.1.3.2. Creación del Corpus - 58 - 4.1.1.3.3. Elección de unidades que concatenar - 58 - 4.1.1.3.4. Marcado de las unidades - 59 - 4.1.1.3.5. Síntesis por Selección de unidades: - 59 - 4.1.1.3.6. Síntesis por HMM. - 61 - 4.1.1.3.7. Comparación de los métodos de síntesis - 62 -
4.1.2. Reconocimiento de voz e Identificación de Usuario (SERVIVOX) - 63 - 4.1.2.1. Adaptación del SERVIVOX - 64 - 4.1.2.2. Proceso de reconocimiento de una nueva frase - 64 - 4.1.2.3. Pruebas de identificación - 66 -
4.1.2.3.1. Modo 1 - 68 - 4.1.2.3.2. Modo 2 - 71 -
4.1.3. Síntesis de voz con emociones - 73 -
4.2. Interfaz Visual - 75 - 4.2.1. Estado del arte: Reconocimiento de objetos - 76 -
6.1.1.1. Actualización de usuarios - 116 - 6.1.1.2. Presentación de nuevos usuarios. - 117 -
6.1.2. Influencia de relaciones en el comportamiento del sistema - 119 - 6.1.3. Conclusiones sobre el modelo de relaciones - 120 -
6.2. Emociones - 121 - 6.2.1. Estado del arte: Teorías emocionales. - 122 -
6.2.1.1. La teoría de Ortony, Clore and Collins - 124 - 6.2.1.2. La teoría de Roseman - 127 - 6.2.1.3. La teoría de Scherer - 128 - 6.2.1.4. La teoría de Frijda - 130 - 6.2.1.5. La teoría de Oatley & Johnson-Laird - 133 -
6.2.2. Diseño del modelo emocional: Requisitos del sistema emocional - 135 - 6.2.3. Definición de objetivos de alto nivel: la teoría de Maslow. - 138 - 6.2.4. Diseño del modelo emocional: Arquitectura propuesta - 142 -
6.2.4.1. Relación tareas-necesidades - 144 - 6.2.4.2. Variación de necesidades. - 145 -
6.2.4.2.4. Nivel Fisiológico - 146 - 6.2.4.2.5. Nivel de Seguridad - 147 - 6.2.4.2.6. Nivel de Afiliación - 149 - 6.2.4.2.7. Nivel de Estima - 154 - 6.2.4.2.8. Nivel de Autorrealización - 157 -
8.2. Condiciones generales a todos los programas - 184 -
8.3. Condiciones generales de prueba - 185 -
8.4. Recursos materiales - 185 -
8.5. Recursos lógicos - 185 -
9 PRESUPUESTO - 187 -
9.1. Presupuesto de ejecución material - 188 - 9.1.1. Relación de salarios - 188 - 9.1.2. Relación de obligaciones sociales - 188 - 9.1.3. Relación de salarios efectivos totales - 189 -
IV
9.1.4. Coste de la mano de obra - 189 - 9.1.5. Coste total de materiales - 189 - 9.1.6. Importe total del presupuesto de ejecución material - 190 -
9.2. Importe de ejecución por contrata - 190 -
9.3. Honorarios Facultativos - 191 -
9.4. Importe Total del Proyecto - 191 -
BIBLIOGRAFÍA - 193 -
APÉNDICE A: Vocabulario del Reconocedor - 197 -
APÉNDICE B: Listado de Frases para Sintetizar - 199 -
APÉNDICE C: Experimento de Identificación - 201 -
APÉNDICE D: Relación entre Clases - 203 -
V
ÍNDICE DE FIGURAS.
FIGURA 1. EVOLUCIÓN TECNOLÓGICA DE LOS HOGARES (37) ............................................................................. - 2 - FIGURA 2. ARQUITECTURA GENERAL DEL SISTEMA ........................................................................................... - 9 - FIGURA 3. ARQUITECTURA GALAXY-II ....................................................................................................... - 11 - FIGURA 4. SCRIPT HUB MODELO GALAXY-II ................................................................................................ - 12 - FIGURA 5. PROCESO DE COMUNICACIÓN CON LA INTERFAZ DE ENTRADA ............................................................. - 14 - FIGURA 6. PROCESO DE COMUNICACIÓN CON LA INTERFAZ DE SALIDA ................................................................ - 16 - FIGURA 7. TOPOLOGÍAS DE REDES PEER-TO-PEER. .......................................................................................... - 21 - FIGURA 8. ESQUEMA GENÉRICO DE ARQUITECTURA CLIENTE-SERVIDOR. ............................................................. - 22 - FIGURA 9. ESTRUCTURA DE CLIENTE-SERVIDOR DE LA IMPLEMENTACIÓN ............................................................ - 26 - FIGURA 10. SOLICITUD XML-RPC................................................................................................................ - 29 - FIGURA 11. RESPUESTA XML-RPC .............................................................................................................. - 29 - FIGURA 12. SOLICITUD SOAP ..................................................................................................................... - 31 - FIGURA 13. RESPUESTA SOAP .................................................................................................................... - 31 - FIGURA 14. ESTRUCTURA FÍSICA IMPLEMENTADA ............................................................................................ - 32 - FIGURA 15. ROBOT URBANO ....................................................................................................................... - 36 - FIGURA 16. OPEL EYE ................................................................................................................................ - 37 - FIGURA 17. NEXI (ROBOT EMOCIONAL DEL MIT) ........................................................................................... - 38 - FIGURA 18. DISPOSITIVOS CON PANTALLA TÁCTIL. ........................................................................................... - 38 - FIGURA 19. DIAGRAMA DE BLOQUES DE UN RECONOCEDOR OBTENIDO DE (7) ....................................................... - 42 - FIGURA 20. ARQUITECTURA BÁSICA DE UN SISTEMA RECONOCEDOR OBTENIDO DE (9) ............................................ - 42 - FIGURA 21. ESQUEMA DE UN RECONOCEDOR DE DOS ETAPAS, OBTENIDO DE (7) ................................................... - 44 - FIGURA 22. ESQUEMA DE UN SINTETIZADOR DE HABLA ..................................................................................... - 54 - FIGURA 23. PROCESO DE SÍNTESIS MEDIANTE SELECCIÓN DE UNIDADES TOMADO DE (50). ....................................... - 59 - FIGURA 24. PROCESO DE SÍNTESIS MEDIANTE HMM TOMADO DE (50). .............................................................. - 61 - FIGURA 25. SECUENCIA DE MENSAJES DEL RECONOCEDOR. ................................................................................ - 66 - FIGURA 26. ALTERNATIVAS DE IDENTIFICACIÓN DE USUARIOS: USUARIO NUEVO VERSUS USUARIO CONOCIDO .............. - 66 - FIGURA 27. MODO 1 CON 30 LOCUTORES Y LAMBDA 4,5 ................................................................................. - 69 - FIGURA 28. MODO1 CON 30 LOCUTORES E HISTORIA DE 5 FRASES ..................................................................... - 70 - FIGURA 29. MODO 1 CON 30 LOCUTORES, HISTORIA DE 5 Y LAMBDA DE 4,5 ........................................................ - 70 - FIGURA 30. MODO 2 CON 1 LOCUTOR, HISTORIA 5 Y POBLACIÓN DE 30. ............................................................. - 71 - FIGURA 31. MODO 2 CON 10 LOCUTORES, HISTORIA DE 30 Y POBLACIÓN DE 30. .................................................. - 72 - FIGURA 32. PROCESO DE SÍNTESIS ................................................................................................................ - 73 - FIGURA 33. MECANISMO PING-PONG .......................................................................................................... - 74 - FIGURA 34. ESQUELETIZACIÓN DE LA MANO (15) ............................................................................................ - 78 - FIGURA 35. EJEMPLO DE UNA NEURONA ARTIFICIAL ......................................................................................... - 79 - FIGURA 36. EJEMPLO DEL ALGORITMO KNN PARA K = 4 Y K = 8 ......................................................................... - 80 - FIGURA 37. PLANTILLAS DE CARACTERÍSTICAS TIPO HAAR PROPUESTAS POR VIOLA Y JONES Y LIENHART ..................... - 81 - FIGURA 38. ESQUEMA DE UN CLASIFICADOR EN CASCADA .................................................................................. - 82 - FIGURA 39. FILTRADO PARA DETECCIÓN DE LUZ ............................................................................................... - 83 - FIGURA 40. BRAZO ROBÓTICO ..................................................................................................................... - 86 - FIGURA 41. A LA IZQUIERDA GROUCHO A LA DERECHA ROBOT URBANO ............................................................... - 87 - FIGURA 42. GESTOS (DE ARRIBA IZQUIERDA ABAJO DERECHA) ENFADO, NEUTRAL, ALEGRÍA, TRISTEZA Y MIEDO ............ - 88 - FIGURA 43. CARA DE LEVE ENFADO ............................................................................................................... - 88 - FIGURA 44. MECANISMO DE DETECCIÓN DE CARICIAS. ...................................................................................... - 90 - FIGURA 45. ESTIMACIÓN DE FRECUENCIA DE LAS CARICIAS ................................................................................. - 91 - FIGURA 46. DIAGRAMA DE HERENCIA DE LAS TAREAS ....................................................................................... - 95 - FIGURA 47. PILA DE PROTOCOLOS BLUETOOTH PARA SPP (13) .......................................................................... - 98 - FIGURA 48. ARQUITECTURA GENERAL DEL SISTEMA IRTRANS (19) .................................................................... - 100 - FIGURA 49. TRAMA X10 .......................................................................................................................... - 102 - FIGURA 50. ARQUITECTURA SISTEMA DRAC EXTRAÍDO DE (20) ....................................................................... - 103 - FIGURA 51. SCRIPT EN PERL PARA EL CONTROL DE DISPOSITIVO X10 ................................................................. - 104 -
VI
FIGURA 52. SECUENCIA DE CÁLCULO DEL MEJOR MOVIMIENTO. ........................................................................ - 105 - FIGURA 53. ESQUEMA DE ARQUITECTURA DE TAREA ....................................................................................... - 107 - FIGURA 54. ICAT CHESS PLAYER ................................................................................................................. - 110 - FIGURA 55. GUARDERÍA ROBÓTICA DEL PROYECTO FEELIX GROWING ................................................................. - 111 - FIGURA 56. URBANO EN UNA EXPOSICIÓN .................................................................................................... - 111 - FIGURA 57. ESQUEMA DEL MODELO DE RELACIONES ...................................................................................... - 115 - FIGURA 58. MÁQUINA DE ESTADOS DEL PROCESO DE IDENTIFICACIÓN ................................................................ - 117 - FIGURA 59. ESTRUCTURA DEL TIPO DE EMOCIONES (30) ................................................................................. - 125 - FIGURA 60. SISTEMA EMOCIONAL DE FRIJDA (41) ......................................................................................... - 133 - FIGURA 61. ARQUITECTURA MEDIANTE TIF .................................................................................................. - 136 - FIGURA 62. PIRÁMIDE DE MASLOW ............................................................................................................ - 138 - FIGURA 63. ADAPTACIÓN DE LA PIRÁMIDE DE MASLOW. ................................................................................ - 141 - FIGURA 64. ARQUITECTURA EMOCIONAL IMPLEMENTADA ............................................................................... - 142 - FIGURA 65. LISTA DE EVENTOS Y RELACIÓN CON NECESIDADES .......................................................................... - 144 - FIGURA 66. SIMULACIÓN DE SURVIVAL ........................................................................................................ - 147 - FIGURA 67. SIMULACIÓN DE SAFETY ............................................................................................................ - 148 - FIGURA 68. SIMULACIÓN DE HISTOGRAMAS PARA LUZ .................................................................................... - 151 - FIGURA 69. VENTANA DE PARZEN SOBRE HISTOGRAMA PARA EL PUNTO 1.72X10
FIGURA 70. SIMULACIÓN COMPLETA DE CHANGES ......................................................................................... - 154 - FIGURA 71. SIMULACIÓN DE SUCCESS .......................................................................................................... - 156 - FIGURA 72. SIMULACIÓN DE ETHICS ............................................................................................................ - 158 - FIGURA 73. SIMULACIÓN DE DESEABILIDAD. ................................................................................................. - 160 - FIGURA 74. SIMULACIÓN DE INESPERADO CON CAMBIOS SUAVES. ..................................................................... - 161 - FIGURA 75. SIMULACIÓN DE INESPERADO CON CAMBIOS ABRUPTOS .................................................................. - 162 - FIGURA 76. SIMULACIÓN DE URGENCIA CON CAMBIOS SUAVES ......................................................................... - 164 - FIGURA 77. SIMULACIÓN DE URGENCIA CON CAMBIOS ABRUPTOS ..................................................................... - 165 - FIGURA 78. SIMULACIÓN DE RELEVANCIA ..................................................................................................... - 166 - FIGURA 79. SIMULACIÓN DE INFRECUENTE ................................................................................................... - 168 - FIGURA 80. SECUENCIA DE CÁLCULO EMOCIONAL.......................................................................................... - 171 - FIGURA 81. PROCESO DE RESPUESTA EMOCIONAL .......................................................................................... - 172 - FIGURA 82. DEFINICIÓN DE CLASE CEMOTION .............................................................................................. - 203 - FIGURA 83. JERARQUÍA DE CLASES PARA LAS NECESIDADES .............................................................................. - 204 - FIGURA 84. DIAGRAMA DE IMPLEMENTACIÓN DEL MÓDULO EMOCIONAL .......................................................... - 204 - FIGURA 85. FUNCIONALIDAD DE CMODULOBASESOAP ................................................................................... - 204 - FIGURA 86. JERARQUÍA DE CLASES DE TAREAS REMOTAS ................................................................................. - 204 - FIGURA 87. ÁRBOL DE LLAMADAS DEL MÉTODO MAIN .................................................................................... - 204 - FIGURA 88. ÁRBOL DE LLAMADAS PARA EL SERVIDOR DE SÍNTESIS ..................................................................... - 204 - FIGURA 89. ÁRBOL DE LLAMADAS PARA EL SERVIDOR DE CARA ......................................................................... - 204 -
VII
ÍNDICE DE TABLAS
TABLA 1. RESULTADO DE PRUEBA DE IDENTIFICACIÓN DE EMOCIONES............................................................... - 63 - TABLA 2. CORRESPONDENCIA ENTRE ACCIONES Y COMANDOS ........................................................................ - 99 - TABLA 3. LOCAL VARIABLES IN THE THEORY OF ORTONY, CLORE AND COLLINS ................................................. - 126 - TABLA 4. PLAN JUNCTURES .................................................................................................................... - 134 - TABLA 5. RELACIÓN DE PESOS PARA CÁLCULO EMOCIONAL ........................................................................... - 169 - TABLA 6. SUELDOS DE LAS PERSONAS QUE HAN INTERVENIDO EN EL PROYECTO ................................................ - 188 - TABLA 7. SALARIOS EFECTIVOS TOTALES ................................................................................................... - 189 - TABLA 8. OBLIGACIONES SOCIALES .......................................................................................................... - 188 - TABLA 9. COSTE DE LA MANO DE OBRA. ................................................................................................... - 189 - TABLA 10. COSTE DE MATERIALES ............................................................................................................. - 190 - TABLA 11. PRESUPUESTO DE EJECUCIÓN MATERIAL ...................................................................................... - 190 - TABLA 12. RELACIÓN DE CONCEPTOS ADICIONALES ....................................................................................... - 191 - TABLA 13. IMPORTE DE EJECUCIÓN POR CONTRATA ...................................................................................... - 191 - TABLA 14. HONORARIOS FACULTATIVOS .................................................................................................... - 191 - TABLA 15. HONORARIOS TOTALES............................................................................................................. - 191 - TABLA 16. IMPORTE TOTAL DEL PROYECTO ................................................................................................. - 192 - TABLA 17. EXPERIMENTO IDENTIFICACIÓN DE USUARIOS MODO 1 ................................................................... - 201 - TABLA 18. EXPERIMENTO IDENTIFICACIÓN DE USUARIOS MODO 2 BASE DE DATOS GTH ...................................... - 202 - TABLA 19. SECUENCIA DEL BUCLE PRINCIPAL ............................................................................................... - 204 -
Capítulo 1 – Introducción
- 1 -
CCCCAPÍTULO 1APÍTULO 1APÍTULO 1APÍTULO 1
1 INTRODUCCIÓN
En los últimos años se ha asistido a un incremento considerable del equipamiento
tecnológico presente en cada hogar. De hecho, si se comparan cifras del instituto nacional de
estadística (INE) para el año 2003 y para el 2008 la evolución queda más que patente.
Estas tendencias generan
de determinados colectivos. Por ejemplo, según el INE, uno de los principales motivos
el porcentaje de penetración de acceso a internet en los hogares sea de aproximadamente un
50% en el 2008 es que, dichos colectivos
(26,1%)”. Además, mientras el uso de los ordenadores
“…es prácticamente universal (94,1%)…”
utilizado el ordenador en los últimos tres meses
sustenta la idea de que es necesario un cambio
electrónicos.
Es importante señalar que este proyecto se enmarca en una línea de trabajo desarrollada
en el Grupo de Tecnología del Habla (GTH) del Departamento de Ingeniería Electrónica (DIE) de
la Escuela Técnica Superior de Ingenieros de Telecomunicaci
la investigación para la integración
Figura 1.
0
10
20
30
40
50
60
70
80
90
100
Diseño e implementación de un asistente personal capaz de expresar emociones
- 2 -
Estas tendencias generan nuevos problemas relacionados con la dificultad de adaptación
de determinados colectivos. Por ejemplo, según el INE, uno de los principales motivos
el porcentaje de penetración de acceso a internet en los hogares sea de aproximadamente un
dichos colectivos, “…tienen pocos conocimientos para utilizarlos
Además, mientras el uso de los ordenadores, por parte de menores de 10 a 15 años
es prácticamente universal (94,1%)…”, el porcentaje de personas entre 16 y
utilizado el ordenador en los últimos tres meses, se reduce a “…el 61,0% de la población
sustenta la idea de que es necesario un cambio en la forma de interactuar con
Es importante señalar que este proyecto se enmarca en una línea de trabajo desarrollada
en el Grupo de Tecnología del Habla (GTH) del Departamento de Ingeniería Electrónica (DIE) de
Técnica Superior de Ingenieros de Telecomunicación (ETSIT) que tiene como objetivo
la investigación para la integración de sistemas de gestión de diálogos en entornos domóticos.
Figura 1. Evolución tecnológica de los hogares (37)
Evolución tecnológica en los hogares
Porcentaje de Penetración en 2003
Porcentaje de Penetración en 2008
Diseño e implementación de un asistente personal capaz de expresar emociones
relacionados con la dificultad de adaptación
de determinados colectivos. Por ejemplo, según el INE, uno de los principales motivos por el que
el porcentaje de penetración de acceso a internet en los hogares sea de aproximadamente un
tienen pocos conocimientos para utilizarlos
de 10 a 15 años,
74 años, que ha
el 61,0% de la población…”. Esto
con los aparatos
Es importante señalar que este proyecto se enmarca en una línea de trabajo desarrollada
en el Grupo de Tecnología del Habla (GTH) del Departamento de Ingeniería Electrónica (DIE) de
ón (ETSIT) que tiene como objetivo
en entornos domóticos.
Porcentaje de Penetración en
Porcentaje de Penetración en
Capítulo 1 – Introducción
- 3 -
1.1. Objetivo de este proyecto
Actualmente cualquier aparato electrónico que se pueda adquirir viene con un manual de
instrucciones para aprender a utilizarlo. Esto es un claro reflejo de que la interfaz, si bien puede
estar simplificada, es más cercana a la máquina que a la persona y, por tanto, requiere un
proceso de adaptación. En muchos casos, estas dificultades impiden que las personas detecten
la utilidad de estos dispositivos, pues pueden parecen demasiado complicados para aprender a
manejarlos. Además, existe un rechazo frente a máquinas que no presentan un comportamiento
empático. Por ejemplo, el uso de un sistema de navegación GPS, en un automóvil, se reduce si
no es capaz de dar unas directrices adecuadas en función de la distancia al hito, la velocidad, etc.
Frente a esta problemática, las soluciones que se barajan pasan por la creación de
sistemas capaces de servir de adaptación entre las máquinas y los humanos. Estos sistemas se
sitúan cercanos a las personas, de modo que permiten la interacción con los aparatos
minimizando el aprendizaje necesario. Es decir, el usuario se comunicaría con el sistema de
forma natural (bien por gestos, habla u otra forma de comunicación propia de las personas) y
éste se encargaría de interpretar el mensaje y realizar la acción solicitada.
Por otro lado, cada vez son más comunes los sistemas capaces de simular emociones
humanas, ya que éstas son consideradas como una vía de desarrollo para la aceptación de las
máquinas por parte de las personas.
Por tanto, el objetivo de este proyecto es el desarrollo sobre las tres vías mencionadas
para acercar personas y máquinas: las interfaces, más amigables; la aplicación, un asistente
personal que proporcione verdadera utilidad; y la emotividad, que el usuario sea capaz de
interaccionar con un sistema que se adapte en vez de mostrarse como una máquina monótona y
desesperante. Por tanto, este proyecto versará sobre el diseño e implementación de un
asistente personal capaz de expresar emociones.
1.2. Estructura de la memoria
Dada la heterogeneidad de este proyecto, la presente memoria está estructurada en
función de las tres vías de desarrollo: Aplicaciones, Interfaz y Emotividad. Además, se ha
decidido incluir el estado del arte de forma distribuida. En este sentido, no habrá un capítulo
Diseño e implementación de un asistente personal capaz de expresar emociones
- 4 -
específico de estado del arte, sino que será una serie de apartados en cada capítulo. En ellos se
explicará la situación del tema sobre el que se va a hablar a lo largo del capítulo. A continuación
se presenta la estructura de la memoria:
• Descripción general del sistema.
• Subsistema de comunicaciones.
• Interfaz Persona-Máquina implementada.
• Aplicaciones.
• Emotividad: se hablará de las emociones y las relaciones.
• Conclusiones y Líneas de trabajo futuras.
Como se ve, hay un primer capítulo que servirá de base para entender cuál es el sistema
del que se hablará. Posteriormente, se proporcionará una visión de la arquitectura de
comunicaciones implementada para, finalmente, profundizar sobre cada una de las vías de
desarrollo. Por último se hará una reflexión proporcionando las conclusiones y líneas futuras.
1.3. Fases de Trabajo
Este proyecto ha sido realizado conforme a las siguientes fases de trabajo:
1. Análisis del proyecto y documentación: Durante esta fase se analizó la plataforma
de desarrollo de aplicaciones con voz SERVIVOX, con la intención de poder
adaptar los módulos de reconocimiento y comprensión del lenguaje natural.
2. Incorporación del identificador de hablante: En esta etapa se integró la
tecnología de identificación del hablante de forma que pueda ser usado por este
agente en su modelo de usuarios.
3. Desarrollo del modelo de relaciones: Esta fase consistió en la implementación del
modelo de relaciones que permite dar de alta a nuevos usuarios así como
modificar y consultar sus características, permitiendo que evolucione la tipología
de cada interlocutor (amigo, conocido o desconocido) dependiendo de sus
interacciones con el agente.
4. Adaptación del sintetizador de habla con emociones: En esta fase se trabajó en
habilitar el acceso al módulo sintetizador de voz, que actualmente está disponible
en un entorno LINUX, desde Microsoft Windows.
Capítulo 1 – Introducción
- 5 -
5. Desarrollo del modelo de emociones: En ella se implementó el modelo de
emociones que permite definir el estado emocional del agente en cada momento
atendiendo a los eventos que detecte y al paso del tiempo.
6. Desarrollo del módulo de tareas: En esta etapa se incorporaron las tareas de
juego. Se crearon las acciones de ayuda doméstica como encender o apagar la luz,
controlar Roomba o gobernar el equipo HI-FI.
7. Desarrollo del modelo de comportamiento e integración: En esta fase se
diseñó el dominio de aplicación y se obtuvo un conjunto de frases representativas
de lo que los usuarios pueden decir al agente en dicho dominio, permitiendo
ajustar el reconocedor de habla (habla � texto) y el módulo de comprensión
(texto � conceptos relevantes en el dominio) para un funcionamiento óptimo.
Capítulo 2 – Descripción General del Sistema
- 7 -
CCCCAPÍTULO 2APÍTULO 2APÍTULO 2APÍTULO 2
2 DESCRIPCIÓN GENERAL DEL SISTEMA
Antes de abordar con detenimiento cada uno de los módulos de este sistema, resulta
necesaria una breve visión de conjunto. El objetivo de este apartado es proporcionarla.
Primero se definirán una serie de requisitos a alcanzar en la elaboración de este proyecto.
Posteriormente se ofrecerá un esquema general de la arquitectura del sistema y finalmente, por
su carácter de núcleo de unión entre los diferentes componentes del sistema, se profundizará en
el modelo de comportamiento.
Diseño e implementación de un asistente personal capaz de expresar emociones
- 8 -
2.1. Definición de requisitos
A la vista de la problemática referida en el capítulo de introducción se hacen prioritarios
los siguientes requisitos generales del sistema:
� Interfaz multimodal: El objetivo es crear una forma de comunicación persona-
máquina que no dependa de un tipo de interfaz determinado. Habilitando varias
maneras se conseguirá que el sistema sea menos estricto en cuanto a las reglas de
comunicación.
� Comportamiento emocional: El sistema debe ser capaz de reaccionar
emocionalmente a los diferentes acontecimientos que suceden en su entorno.
� Comportamiento personalizado: El sistema debe estar en disposición de
identificar con qué usuario está tratando y actuar en consonancia a la relación que
mantienen.
� Funcionalidad de asistente doméstico: Debe ser capaz de realizar sencillas tareas
domésticas como encender o apagar una luz, controlar una aspiradora robótica
Roomba o gobernar un equipo HI-FI.
� Compañero de juegos: Debe actuar como un compañero de juego en las 3 en
raya, comportándose de manera emocional.
� Arquitectura escalable: El sistema debe ser suficientemente independiente como
para que la inclusión de nuevas tareas, o la modificación de las ya existentes, se
realice de forma sencilla.
2.2. Arquitectura general del sistema
La arquitectura general del sistema es la representada en la figura.
Como se puede ver, existen cinco grandes módulos. Cada uno de ellos está compuesto por
distintos sub-módulos que serán detallados en los capítulos pertinentes.
• Módulo interfaz de entrada y módulo interfaz de salida: Aunque en esencia
ambos se podrían haber fusionado en un único módulo de interfaz, se ha
preferido esta división. El funcionamiento de cada uno de ellos es gobernar el
Capítulo 2 – Descripción General del Sistema
hardware de interfaz adaptando la información, ya sea para su correcta
representación,
• Módulo de aplicaciones:
tareas que es capaz de realizar el sistema.
módulo es que todas ellas tien
aparecerá detallado
• Módulo de emotividad:
comportamiento “humanizado”.
como el modelo de emociones. Su misión es generar información para que las
respuestas puedan ser adaptadas a los diferentes
• Módulo de comportamiento:
principalmente, de la intercomunicación entre los diferentes módulos.
Llegados a este punto es posible realizar
funcionamiento del sistema:
1. Un estímulo del exterior es percibido por el hardware de entrada.
Descripción General del Sistema
- 9 -
ware de interfaz adaptando la información, ya sea para su correcta
representación, como para que pueda ser utilizada por el sistema.
Módulo de aplicaciones: En este módulo se agrupan cada una de las diferentes
tareas que es capaz de realizar el sistema. El motivo de su agrupación
que todas ellas tienen unas características comunes tal y
aparecerá detallado en el Capítulo 5.
e emotividad: Este módulo es el encargado de generar
comportamiento “humanizado”. En él se recogen tanto el modelo de relaciones,
como el modelo de emociones. Su misión es generar información para que las
respuestas puedan ser adaptadas a los diferentes estados del sistema.
Módulo de comportamiento: Constituye el núcleo del sistema y se encarga,
principalmente, de la intercomunicación entre los diferentes módulos.
Llegados a este punto es posible realizar, a grandes rasgos, una breve descripción del
del sistema:
Un estímulo del exterior es percibido por el hardware de entrada.
Figura 2. Arquitectura General del Sistema
ware de interfaz adaptando la información, ya sea para su correcta
omo para que pueda ser utilizada por el sistema.
En este módulo se agrupan cada una de las diferentes
El motivo de su agrupación en un único
en unas características comunes tal y como
Este módulo es el encargado de generar un
l se recogen tanto el modelo de relaciones,
como el modelo de emociones. Su misión es generar información para que las
estados del sistema.
Constituye el núcleo del sistema y se encarga,
principalmente, de la intercomunicación entre los diferentes módulos.
una breve descripción del
Un estímulo del exterior es percibido por el hardware de entrada.
Diseño e implementación de un asistente personal capaz de expresar emociones
- 10 -
2. El sub-módulo correspondiente del módulo interfaz de entrada se encarga de
procesar esta información y, si es necesario, adaptarla.
3. A continuación el sub-módulo que recibe el estímulo proporciona la información
adaptada al módulo de comportamiento.
4. El módulo de comportamiento se encarga de difundir esta información a las
tareas del módulo de aplicaciones.
5. La tarea que recibe la información genera una acción de respuesta destinada a la
interfaz de salida e información orientada al módulo de emociones.
6. El resultado de la tarea es enviado al módulo de comportamiento.
7. El módulo de comportamiento almacena la acción de respuesta y envía la
información destinada al módulo de emociones.
8. El módulo de emociones recoge la información y recalcula la respuesta emocional
enviándola al módulo de comportamiento.
9. El módulo de comportamiento genera una respuesta final combinando la
información emocional con la acción respuesta de la tarea. Esta respuesta final es
enviada a la interfaz de salida.
10. El módulo de interfaz de salida procesa la respuesta final y genera una acción
acorde a ella.
2.3. Modelo de Comportamiento
Como se ha dicho, en esta arquitectura el módulo de comportamiento juega un papel
importante como coordinador del sistema ya que cualquier mensaje que quieran intercambiar
los módulos pasa por él. Además, presenta la necesidad de ser escalable, pues el sistema puede
crecer y el módulo de comportamiento que sustenta la coordinación de las comunicaciones
corre el peligro de convertirse en el cuello de botella del sistema.
Antes de abordar la solución propuesta se presentarán los precedentes en los que se ha
basado.
2.3.1. Estado del arte: Módulo de comportamiento.
El auge que los equipos informáticos han experimentado desde los noventa hace que cada
vez sean más ambiciosas las aplicaciones que se ejecutan en ellos, como es el caso de las
Capítulo 2 – Descripción General del Sistema
- 11 -
aplicaciones basadas en reconocimiento de voz. Estas aplicaciones, unidas a la posibilidad de
conexión a internet que casi cualquier ordenador tiene, proporcionan el marco perfecto para la
automatización de servicios telefónicos como alquiler de coches, reserva de hoteles, información
de vuelos, etc.
No obstante, esta suerte de aplicaciones presenta una gran complejidad y es por ello que
se tiende a dividir estos sistemas en módulos con funcionalidades independientes y concretas.
Por ejemplo, un usuario que esté en una ciudad y desee realizar una reserva de hotel llamará a
un teléfono que estará asociado a un servidor de audio. Este servidor de audio se comunicará
con un reconocedor de voz que puede estar en otra ciudad. Este reconocedor de voz deberá
enviar la información a un servidor que esté conectado a la base de datos de reservas del hotel
que puede estar en una tercera ciudad. Por tanto, se está realizando un proceso descentralizado
con intercambio de información entre diferentes módulos. Para coordinar este intercambio de
información han aparecido módulos de comportamiento. A continuación se van a analizar dos
de las alternativas más relevantes: el GALAXY-II Communicator (1) elaborado como
actualización del GALAXY (2) por el Massachusetts Institute of Technology (MIT), y el CU
Communicator (3) creado por la Universidad de Colorado.
2.3.1.1. GALAXY-II
GALAXY-II es una arquitectura Cliente/Servidor para acceder a información online usando
reconocimiento de voz. En la figura se puede apreciar la representación esquemática del
sistema.
La peculiaridad de éste consiste en
que la interacción del hub central con los
servers se controla por medio de un
lenguaje de script. Cada script contiene la
lista de servidores con su dirección, puerto,
la lista de servicios que es capaz de ofrecer
y uno o varios programas. Cada programa
consiste en un conjunto de reglas
(compuestas por una condición
desencadenante y una operación
consecuencia), una lista de variables de
Figura 3. Arquitectura GALAXY-II
Diseño e implementación de un asistente personal capaz de expresar emociones
- 12 -
entrada y salida para cada regla y un
conjunto de variables opcionales sobre
información del pasado del sistema.
Cuando una regla se dispara, la
variable de entrada se empaqueta en un
token y se envía al servidor determinado
por esa regla. Adicionalmente, el hub
puede esperar un token del servidor con la
variable de salida. Además, las variables de
entradas y salidas son almacenadas en un
master token interno del hub.
Como se ve, es el hub quien decide, en base a una serie de scripts, qué servidor debe
recibir ese mensaje. Por tanto, se considera que este tipo de módulo de comunicación presenta
cierta inteligencia.
2.3.1.2. CU Communicator
Análogo al modelo GALAXY-II aparece el CU Communicator. Éste también es un modelo
Cliente/Servidor que puede ser utilizado en sistemas similares al presentado en el GALAXY II
para acceder a información online mediante reconocimiento de voz. La particularidad de este
sistema es que el hub central de comunicaciones no presenta ningún tipo de inteligencia. Es
decir, en este caso los módulos que originan los mensajes son los que determinan dónde tiene
que ser entregado. Por ejemplo, el servidor de audio manda al hub un mensaje que informa de
la existencia de un nuevo mensaje de audio disponible y que debe ser entregado al reconocedor
de voz. De esta forma el hub actúa como un mero router enviando la información de unos
módulos a otros.
2.3.2. Módulo de comportamiento implementado
La solución adoptada pasa por un término medio entre las nombradas anteriormente. En
este sistema el funcionamiento del módulo de comportamiento está determinado por la
procedencia y el destino de los mensajes que se estén enviando. Así pues existe información
procedente de la interfaz de entrada, información dirigida a la interfaz de salida e información
relativa al sistema emocional. A continuación se expondrá el funcionamiento en cada caso.
Figura 4. Script hub modelo GALAXY-II
Capítulo 2 – Descripción General del Sistema
- 13 -
2.3.2.1. Mensajes procedentes de la interfaz de entrada
Los mensajes procedentes de la interfaz de entrada pueden provenir tanto del
reconocedor de habla como del tratamiento de imágenes mediante Opencv. Estos mensajes son
conceptos que los destinatarios, en este caso las tareas, serán capaces de entender. Por
ejemplo, “SinLuz”, “saludo”, etc.
El funcionamiento del módulo de comportamiento para este tipo de mensajes puede ser
considerado como inteligente, pues el módulo que genera el mensaje no determina quién va a
ser el destinatario.
En el proceso de envío de mensajes intervienen varios procesos, en concreto, las tareas, el
módulo generador de mensaje y el módulo de comportamiento. Por tanto, resulta interesante
analizar lo que ocurre en cada uno de ellos.
• Interfaz de Entrada: Los módulos de la interfaz de entrada se encuentran
constantemente analizando la información de los sensores, ya sea el micrófono o
la cámara web, y, en función de ella, determinan si ha ocurrido algo. Cuando
detectan que algo ha ocurrido lo que hacen es actualizar el concepto que
caracteriza el suceso y lo indican incrementando un número de versión asociado.
Es decir, si el reconocedor detecta la palabra “hola”, el nuevo concepto será
“saludo” y el número de versión se incrementará en uno.
• Tarea: Las tareas son programas destinados a realizar algo en función de las
órdenes del usuario. En este sentido, la mayor parte del tiempo están a la espera
de dichas órdenes, concretamente el cliente de la tarea se encuentra en un bucle
esperando un concepto que le resulte válido. También cabe destacar que las
tareas presentan dos estados, activo o no, en función de si se encuentran en
medio de la realización de una acción. Por ejemplo, si se inicia una partida, la
tarea de juego se encontrará activa hasta que la partida finalice.
• Módulo de comportamiento: Se encarga de hacer llegar el concepto a las tareas.
Su funcionamiento es sencillo y mecánico para favorecer la escalabilidad. El
módulo de comportamiento analiza periódicamente el número de versión de los
conceptos de los módulos de interfaz de entrada. Cuando detecta que alguno de
Diseño e implementación de un asistente personal capaz de expresar emociones
- 14 -
ellos no coincide con el que tiene guardado comienza el proceso de envío del
concepto. Para ello, el módulo recorre la lista de las tareas enviando el concepto
en modo de prueba. En este momento cada tarea que recibe el concepto analiza
si es un concepto de los que es capaz de entender o no y devuelve una respuesta
en función de ello. Tras recibir alguna respuesta el módulo de comportamiento
vuelve a recorrer nuevamente todas las tareas para enviar el concepto a aquella
que lo admita y que esté activa. Si no hay ninguna activa, se enviará a la primera
que lo admita. Si ninguna lo admite no se enviará. Además, si el proceso de
sondeo de prueba falla porque no se recibe ninguna respuesta ya sea afirmativa o
negativa, el sistema esperará unos segundos y abortará automáticamente el
proceso. Finalmente se memorizará el nuevo número de versión para poder
volver a detectar cambios.
La figura ilustra el proceso general:
1. Se recibe el concepto, en este caso del reconocedor de voz.
2. Sondeo de las tareas en modo de prueba.
3. Respuesta de las tareas al concepto de prueba.
4. Transmisión del concepto a la tarea que lo comprendía y que estaba activa.
Como se ve, el orden de prioridad de las tareas está prefijado a la hora de definir la lista
de las tareas. De esta forma, un concepto que entiendan varias tareas, si ninguna de ellas está
activa, será transmitido a la que se encuentre en una posición más adelantada de la lista.
Figura 5. Proceso de comunicación con la interfaz de entrada
Capítulo 2 – Descripción General del Sistema
- 15 -
2.3.2.2. Mensajes destinados a la interfaz de salida
Los mensajes destinados a la interfaz de salida típicamente estarán dirigidos al
sintetizador de voz, ya que el control de la cara es gobernado directamente por el módulo de
comportamiento en función del estado emocional.
Para la transmisión de este tipo de mensajes el módulo de comportamiento no presenta
inteligencia añadida ya que el generador del mensaje establece el destinatario. De esta forma, el
módulo de comportamiento se comportará como un mero router.
En este caso también intervienen varios actores: las tareas, que ahora son las que generan
el mensaje; el módulo de comportamiento, que será el encargado de hacer llegar los mensajes; y
el sintetizador de voz, que será el destinatario. A continuación se expondrá lo que ocurre en
cada uno de ellos.
• Tarea: Las tareas son las encargadas de generar los mensajes hacia el sintetizador
de voz. No todas las tareas generan mensajes, pero sí todas presentan la
estructura para mandarlos, de esta forma se invierte en escalabilidad. El
funcionamiento de la generación de mensajes por parte de la tarea es bastante
sencillo. Cada tarea consta de un concepto y un número de versión asociado al
concepto. Cuando se desea sintetizar una frase simplemente se rellenará el
campo concepto acorde a la situación y se aumentará el número de versión. En
esta ocasión, a diferencia de la comunicación con el interfaz de entrada, el
concepto estará compuesto de cuatro palabras o campos que ayudan a
determinar qué frase escoger. Por ejemplo se podrían usar las palabras “Juego” y
“Ganar” para sintetizar una frase relacionada con el juego y con la situación de
haber ganado. No obstante, si no se necesitan las cuatro palabras para definir el
concepto pueden indicarse como “Irrelevante” de modo que serán ignorados por
el sintetizador.
• Módulo de Comportamiento: El módulo de comportamiento recorrerá una lista
de las tareas comprobando periódicamente el número de versión del concepto a
sintetizar. Si alguna tarea ha modificado este número se invocará al sintetizador,
para lo que es necesario añadir dos parámetros más. Uno es la emoción,
proveniente del sistema emocional, y otro es la relación con el usuario,
Diseño e implementación de un asistente personal capaz de expresar emociones
- 16 -
proveniente del modelo de usuarios. Finalmente se cursa la solicitud al
sintetizador y se sigue recorriendo la lista. Si hubiera otra tarea que desease
sintetizar también se cursaría. Por último se guardarían los números de versiones
correspondientes a cada tarea para, en la próxima comprobación, no volver a
enviar el mismo concepto.
• Sintetizador de voz: Este es el destinatario de las comunicaciones. Consiste en un
servidor que proporciona un servicio de síntesis que es invocado por el módulo de
comportamiento. En este sentido su funcionamiento es totalmente pasivo en
cuanto a la transmisión de mensajes.
La figura muestra el esquema de funcionamiento. Cada tarea solicita un concepto. El
módulo de comportamiento recoge estas solicitudes y las complementa con la emoción y la
relación con el usuario y envía la solicitud al sintetizador de voz. Éste es el encargado de realizar
la síntesis final.
2.3.2.3. Mensajes del modelo emocional
Es importante indicar que el módulo de comportamiento no interviene en el proceso de
comunicación entre las tareas y el sistema emocional, esto se describirá en el apartado de
emociones del Capítulo 6. No obstante, no implica que en el proceso de obtención de emociones
el módulo de comportamiento no intervenga. Todo lo contrario, este módulo es el encargado de
solicitar el cálculo emocional cada cierto tiempo. Por tanto, en esta ocasión se puede decir que
el módulo de comportamiento actúa de forma autónoma, ya que se mueve por motivación
propia al precisar dicha información para poder completar su tarea de enviar mensajes a la
interfaz de salida.
Figura 6. Proceso de comunicación con la interfaz de salida
Capítulo 2 – Descripción General del Sistema
- 17 -
El modo de solicitar dicha información al sistema emocional es sencillo ya que, por un lado
el sistema emocional es parte del mismo programa y no un cliente o servidor externo, lo que
posibilita llamadas locales a funciones. Por otro lado, este tipo de solicitudes no van a crecer,
pues el único que solicitará el cálculo de la nueva respuesta emocional será el módulo de
comportamiento y, en consecuencia, no necesita crearse un proceso que pueda ser fácilmente
escalable.
2.3.2.4. Secuencia del módulo de comportamiento
El proceso periódico que se repite en el módulo de comportamiento cada cierto tiempo
consiste en:
1º. Administración de la interfaz de entrada, reenviando los conceptos que puedan
haberse recibido.
2º. Petición de actualización emocional del sistema.
3º. Realización de las acciones destinadas al control de la interfaz de salida (cara y
síntesis de voz).
Capítulo 3 – Subsistema de Comunicaciones
- 19 -
CCCCAPÍTULO 3APÍTULO 3APÍTULO 3APÍTULO 3
3 SUBSISTEMA DE COMUNICACIONES
En este sistema se ha utilizado una arquitectura distribuida en la que distintos
componentes se comunican vía TCP/IP. Esta es una tendencia de los últimos años favorecida por
las condiciones actuales de conectividad y cantidad de dispositivos. No obstante, antes de
precisar la implementación realizada parece conveniente hacer un análisis de la situación y las
diferentes alternativas que aparecen a la hora de crear un sistema de estas características.
3.1. Estado del arte: Arquitecturas de comunicaciones.
La evolución de las comunicaciones entre ordenadores ha ido de la mano con los
principales avances técnicos. Así pues, antiguamente existía un gran ordenador principal al cual
Diseño e implementación de un asistente personal capaz de expresar emociones
- 20 -
se conectaban los usuarios mediante sencillos terminales remotos para solicitar un determinado
servicio de entre todos los que eran ofrecidos. Estos terminales eran de escasas prestaciones y
por tanto el sistema central llevaba el peso de las operaciones. Posteriormente, gracias al
abaratamiento de los componentes, se ha ido evolucionando a la separación de servicios en
diferentes equipos de modo que cada usuario se conectaba a una computadora dedicada. De
esta forma se redujo el cuello de botella asociado a un gran ordenador que procesara las
solicitudes de todos los terminales. Seguidamente aconteció el auge de los equipos de escritorio,
lo cual permitió que los ordenadores servidores no necesitasen tanta potencia, pues gran parte
de los cálculos son realizados en el equipo del usuario. Por último, la actual popularización de las
redes de ordenadores hace que la mayoría de los equipos se encuentran interconectados. Este
concepto da pie a las arquitecturas Cliente/Servidor en las que un proceso denominado cliente,
que se encuentra realizando una tarea, puede demandar información a un servidor. Sin
embargo, en estas arquitecturas los servidores pueden recibir muchas solicitudes con el
consiguiente riesgo de convertirse en cuellos de botellas.
Otra de las soluciones existentes es la arquitectura peer-to-peer (P2P). Este tipo de
arquitecturas se basan en un concepto diferente. En ellas todos los componentes están al mismo
nivel de modo que cada nodo o usuario es un cliente y servidor que recibe las peticiones de
comunicaciones de sus vecinos y las envía a aquellos que estén próximos al destino. Además,
puede realizar él mismo una petición. La ventaja fundamental es que no existe un servidor que
controle las comunicaciones de modo que el sistema es enormemente escalable solucionando el
problema que presentan las anteriores. Existen dos variaciones de esta arquitectura:
• Peer-to-peer centralizada: En la que un único nodo actúa como punto
central del sistema de modo que todas las comunicaciones pasan por él.
Este sistema presenta problemas de escalabilidad pues la capacidad del
servidor central puede convertirse en un cuello de botella si el número de
nodos conectados aumenta suficientemente.
Capítulo 3 – Subsistema de Comunicaciones
- 21 -
• Peer-to-peer mixta: En esta versión existen nodos centrales que actúan
como servidores para distribuir el tráfico. No obstante, la información de
enrutamiento está en los nodos, de modo que si alguno de los módulos
centrales se cae, el sistema puede comportarse como un peer-to-peer
puro.
A la vista de las alternativas, en este proyecto se ha decidido implementar una
arquitectura Cliente/Servidor. Esto es así porque peer-to-peer está orientada a sistemas muy
grandes en los que cada nodo toma decisiones globales ya que son quienes gobiernan. En la
arquitectura Cliente/Servidor, existe la ventaja de que las peticiones de cada cliente pasan por el
mismo servidor y, por tanto, la implementación de una lógica que coordine al sistema puede ser
realizada en un único módulo. En el caso de las redes peer-to-peer, cada petición puede llevar
un camino distinto y la implementación de una lógica de coordinación debería ser creada en
cada nodo de forma distribuida. Además, el tamaño del sistema es suficientemente reducido
como para que no exista, ni pueda existir en un futuro próximo, una limitación del número de
módulos posibles debido a las capacidades del servidor.
Figura 7. Topologías de redes peer-to-peer.
3.2. Arquitectura Cliente/Servidor
3.2.1. Descripción
Su funcionamiento es sencillo
un ordenador servidor, que realiza la función
configuración no es definitiva. Es decir, los ordenadores pueden ser clientes para
tareas y servidores para otras ya que el objetivo es que cada ordenador realice las
óptimas para sus recursos (4).
La tendencia en este tipo de arquitecturas es
computación mientras que los clientes realizan diversas acciones relacionadas con el usuario. De
esta forma un sistema complejo es dividido en módulos haciendo más fácil su desarrollo y
escalabilidad. Además, no existe una imposición sobre la situación
pueden estar distribuidos físicamente en
geográficas.
3.2.2. Componentes
Los componentes principales de una arquitectura Cliente/Servidor son:
Figura 8.
Diseño e implementación de un asistente personal capaz de expresar emociones
- 22 -
Arquitectura Cliente/Servidor
Descripción
onamiento es sencillo, se tiene un ordenador cliente que requiere un servicio de
realiza la función para la que está programado. No obstante, esta
configuración no es definitiva. Es decir, los ordenadores pueden ser clientes para
tareas y servidores para otras ya que el objetivo es que cada ordenador realice las
La tendencia en este tipo de arquitecturas es que el servidor se encargue del peso de
computación mientras que los clientes realizan diversas acciones relacionadas con el usuario. De
esta forma un sistema complejo es dividido en módulos haciendo más fácil su desarrollo y
escalabilidad. Además, no existe una imposición sobre la situación de los módulos, de modo que
pueden estar distribuidos físicamente en diferentes equipos incluso en diferentes localidades
Componentes
Los componentes principales de una arquitectura Cliente/Servidor son:
Esquema genérico de arquitectura cliente-servidor.
Diseño e implementación de un asistente personal capaz de expresar emociones
que requiere un servicio de
No obstante, esta
configuración no es definitiva. Es decir, los ordenadores pueden ser clientes para determinadas
tareas y servidores para otras ya que el objetivo es que cada ordenador realice las funciones
que el servidor se encargue del peso de la
computación mientras que los clientes realizan diversas acciones relacionadas con el usuario. De
esta forma un sistema complejo es dividido en módulos haciendo más fácil su desarrollo y
de los módulos, de modo que
incluso en diferentes localidades
Capítulo 3 – Subsistema de Comunicaciones
- 23 -
• Cliente: también denominado front-end es el proceso que permite al
usuario formular las solicitudes de información. Entre las funciones que
realiza un cliente se encuentran: administrar la interfaz de usuario,
interactuar con el usuario, procesar la lógica de la aplicación y hacer
validaciones locales, generar requerimientos de bases de datos, recibir
resultados del servidor y formatear resultados.
• Servidor: también denominado back-end, es el proceso encargado de
procesar las peticiones que le realizan los diferentes clientes sobre los
recursos que es capaz de administrar. Las funciones que puede realizar
son: aceptar los requerimientos de bases de datos que hacen los clientes,
procesar requerimientos de bases de datos, formatear datos para
trasmitirlos a los clientes y procesar la lógica de la aplicación.
3.2.3. Características
Las características básicas de una arquitectura Cliente/Servidor son:
• Combinación de un cliente que interactúa con el usuario, y un servidor
que interactúa con los recursos compartidos. El proceso del cliente
proporciona la interfaz entre el usuario y el resto del sistema. El proceso
del servidor actúa como un motor de software que maneja recursos
compartidos tales como bases de datos, impresoras, módems, etc.
• Las tareas del cliente y del servidor tienen diferentes requerimientos en
cuanto a recursos del sistema, periféricos necesarios, etc.
• Se establece una relación entre procesos distintos, los cuales pueden ser
ejecutados en la misma máquina o en máquinas diferentes distribuidas a
lo largo de la red.
• Existe una clara distinción de funciones basada en el concepto de
"servicio", que se establece entre clientes y servidores.
• La relación establecida puede ser de muchos a uno. Un servidor puede dar
servicio a muchos clientes, regulando su acceso a recursos compartidos.
• Los clientes corresponden a procesos activos en cuanto a que son éstos
los que hacen peticiones de servicios a los servidores. Estos últimos tienen
un carácter típicamente pasivo ya que esperan las peticiones de los
Diseño e implementación de un asistente personal capaz de expresar emociones
- 24 -
clientes. No obstante, puede darse el caso de que el servidor actúe como
cliente para un tercer servidor.
• No existe otra relación entre clientes y servidores que no sea la que se
establece a través del intercambio de mensajes entre ambos. El mensaje
es el mecanismo para la petición y entrega de solicitudes de servicio.
• El ambiente es heterogéneo. La plataforma de hardware y el sistema
operativo del cliente y del servidor no son siempre iguales. Precisamente
una de las principales ventajas de esta arquitectura es la posibilidad de
conectar clientes y servidores independientemente de sus plataformas.
• El concepto de escalabilidad tanto horizontal como vertical es aplicable a
cualquier sistema Cliente/Servidor. La escalabilidad horizontal permite
agregar más estaciones de trabajo activas sin afectar significativamente el
rendimiento. La escalabilidad vertical permite mejorar las características
del servidor o agregar múltiples servidores.
3.2.4. Ventajas e inconvenientes
Las principales ventajas del esquema Cliente/Servidor son:
• Una de las causas que más ha promovido el uso de sistemas
Cliente/Servidor es la proliferación de plataformas hardware de bajo
coste. Este hecho origina la principal ventaja de estas arquitecturas.
Realizar sistemas complejos a partir de ordenadores más baratos que los
necesarios para una solución centralizada. Además, gracias a la
independencia entre clientes y servidor, se pueden utilizar distintos
sistemas operativos y distintos elementos hardware, lo que permite crear
sistemas flexibles y escalables a bajo coste.
• Al permitir interconectar máquinas heterogéneas se favorece un sistema
eficiente donde cada módulo puede residir en un equipo de prestaciones
ajustadas a dicho módulo.
• Así mismo, este tipo de sistemas permiten que los ordenadores
tradicionales se interconecten con nuevos sistemas creando
funcionalidades que antes no estaban disponibles.
Capítulo 3 – Subsistema de Comunicaciones
- 25 -
• Al dividir un sistema complejo en pequeños módulos se facilitan las tareas
de desarrollo. El programador puede abordar un módulo de manera
independiente al resto del sistema. Esto permite que las tareas sobre
dicho módulo no requieran de un análisis del sistema completo.
• La división en módulos permite que el crecimiento del sistema sea
sencillo. Para añadir un nuevo módulo sólo se necesita conocer la interfaz
de comunicación con el servidor. La forma en la que esté implementada el
nuevo módulo no influye en el resto del sistema.
Entre las principales desventajas del esquema Cliente/Servidor se encuentran:
• El mantenimiento de estos sistemas resulta costoso pues se trata de
conjuntos heterogéneos de software y hardware distribuido cuya
depuración resulta costosa.
• Para que los clientes y los servidores puedan comunicarse es importante
que utilicen el mismo mecanismo (por ejemplo sockets o solicitud de
procedimientos remotos o Remote Procedure Call (RPC)). Esto conlleva
una limitación en los sistemas a elegir para implementar los módulos,
pues deben ser compatibles con una implementación de este tipo.
• Además, debido a la posibilidad de que varios clientes actúen sobre los
mismos datos deben existir estrategias para el manejo de llamadas
concurrentes y para mantener la consistencia de datos.
• Es importante tener en cuenta que el correcto funcionamiento del
sistema depende de factores relacionados con las comunicaciones. Estos
factores no aparecen en sistemas tradicionales y pueden ser: congestión
en la red, dificultad de tráfico de datos, etc.
3.2.5. Estructura implementada.
A la vista de las características se ha determinado que la arquitectura Cliente/Servidor
resulta idónea para el objetivo de este proyecto. Como se ha dicho es perfecta para incluir
ordenadores tradicionales en sistemas mayores, que es precisamente el objetivo de este
proyecto.
Diseño e implementación de un asistente personal capaz de expresar emociones
- 26 -
En la figura se puede apreciar el esquema de comunicaciones de la arquitectura
implementada. Como puede apreciarse el módulo que obtiene información del exterior (interfaz
de entrada) está compuesto por dos unidades software, opencv y robint (reconocedor de voz e
identificador de usuario), que actúan como clientes ya que son procesos que generan cambios
en el sistema a partir de cambios en estímulos de entrada.
Por otro lado, el módulo de aplicaciones está compuesto por unidades de software
específicas para cada tarea, esto es: 3 en raya virtual, 3 en raya físico, control de la luz, control
de roomba, control de infrarrojos y control de conversación. Todas estas tareas son procesos
activos pues analizan los estímulos de entrada que reciben indirectamente del módulo interfaz
de entrada y determinan una respuesta que se traducirá como una solicitud al servidor principal.
Los modelos de comportamiento y de emotividad, este último compuesto por el modelo
de emociones y el de relaciones, están implementados en la unidad de software servidor
principal. Esta unidad es servidor y cliente al mismo tiempo. Por un lado es servidor ya que no
presenta un comportamiento independiente. Es decir, depende de la solicitud de los clientes
para realizar una acción. Los clientes que se conectarán a esta unidad de software serán los
Figura 9. Estructura de cliente-servidor de la implementación
Capítulo 3 – Subsistema de Comunicaciones
- 27 -
integrantes de los módulos interfaz de entrada y aplicaciones. Por otro lado, es cliente puesto
que los componentes del módulo interfaz de salida son totalmente pasivos, ya que no realizan
ningún tipo de acción por iniciativa propia, siendo el servidor principal el que los activa mediante
la solicitud de servicio.
Finalmente, sólo resta hablar del módulo interfaz de salida. Este módulo está compuesto
por las unidades de software control de cara y sintetizador. Además, hace uso del recurso
externo que genera el audio a partir del texto a sintetizar. Todos estos elementos son servidores
pues requieren de una solicitud por parte del cliente, en este caso el servidor principal, para
realizar cualquiera de las acciones para la que están programados.
Una vez presentada la estructura de comunicaciones es necesario describir el mecanismo
que se ha utilizado para hacer posible esta implementación. Esto es lo que se hará en el
siguiente punto.
3.3. Mecanismo de comunicación: SOAP
Como se ha mencionado anteriormente, la implementación de un modelo
Cliente/Servidor requiere de un mecanismo de comunicación basado o bien en sockets o bien en
RPC. A continuación se describirá cada uno de ellos para, finalmente, explicar la decisión
implementada.
3.3.1. Sockets
Un socket es un mecanismo de bajo nivel por el cual dos programas independientes a
priori son capaces de intercambiar información. Se puede asemejar a un recurso compartido en
el que ambos, tanto programa cliente como servidor, pueden escribir y leer información. Para
que el socket esté correctamente definido es necesario un protocolo de transporte, una
dirección IP y un puerto asociado al socket. De esta forma los programas pueden intercambiar
octetos siempre y cuando ambos sean capaces de localizarse. Con este mecanismo es el
programa cliente el que inicia la conexión permaneciendo el programa servidor a la espera.
Inicialmente se hizo uso de la clase CSocket Node, que proporciona los métodos
necesarios para la comunicación mediante sockets. No obstante, conforme el sistema crece se
hace patente su principal problema. El tipo de información que se puede pasar fácilmente es
muy limitado haciendo necesarios métodos que la analizasen para determinar la tarea a realizar.
Diseño e implementación de un asistente personal capaz de expresar emociones
- 28 -
Además, presentan problemas relacionados con el sincronismo de los métodos de transmisión y
recepción de datos. El programa que recibe el dato se queda esperando durante un cierto
tiempo o bien indefinidamente según se determine. Los inconvenientes es que si el tiempo de
espera está acotado, el programa puede continuar sin recibir los datos, ignorándolos. Por otro
lado, si el tiempo de espera es indefinido, el programa receptor quedaría bloqueado. Este hecho
en el caso de un servidor que espera una solicitud resulta especialmente relevante.
En resumen, los sockets no son una implementación eficiente para este sistema ya que, al
ser mecanismos de bajo nivel, presentan una gran complejidad a la hora de intercomunicar
distintos módulos. Como alternativa aparecen las RPC.
3.3.2. RPC
El mecanismo de solicitud de procedimientos remotos es una forma de comunicación
entre procesos que permite a un programa ejecutar una función o procedimiento en otro
distinto.
La forma en la que se establece una llamada es la siguiente: Un programa cliente está en
ejecución y en un momento dado necesita realizar una acción que es provista por otro programa
llamado servidor. En ese momento el cliente realiza una llamada al procedimiento enviando los
parámetros que sean necesarios. Si la comunicación es exitosa, el servidor recibirá la solicitud y
comenzará a realizar la funcionalidad solicitada. Mientras el servidor realiza la tarea, el cliente
permanece bloqueado esperando una respuesta. Una vez que el servidor finaliza su acción,
devuelve el resultado de la operación al módulo cliente, que sigue con su ejecución normal.
El principal problema de este mecanismo frente a llamadas a procedimientos locales, es
que la comunicación puede fallar en cualquier momento debido a errores de la red. No
obstante, para funciones idempotentes en las que múltiples llamadas no modifican el resultado,
no presenta demasiadas dificultades.
Hay que señalar que el mecanismo RPC es una definición que precisa ser implementada.
En la actualidad existen dos grandes alternativas XML-RPC y Simple Object Access Protocol
(SOAP).
Capítulo 3 – Subsistema de Comunicaciones
- 29 -
3.3.2.1. XML-RPC
XML-RPC es una implementación para RPCs que persigue la idea de sencillez. Su objetivo
no es proporcionar una solución específica a cada situación, sino que pretende ser una
implementación genérica que sea extensible a multitud de casos. Utiliza una codificación basada
en el popular lenguaje de descripción XML y el protocolo de comunicación HTTP. Una de las
ideas que generaron esta solución era que un programador de HTML fuese capaz de ver el
código de un mensaje XML-RPC y pudiese entenderlo y modificarlo. A continuación se muestra
un ejemplo de una solicitud y su respuesta.
No obstante, debido a la gran sencillez que busca, presenta una serie de limitaciones:
La forma de llamar a los métodos es mediante methodName que puede contener
identificadores como mayúsculas, minúsculas, números, subrayado, punto, dos puntos y barra.
No obstante, esto presenta dificultades a la hora de pasar objetos como parámetros.
Las estructuras y matrices son anónimas. Es decir, no se identifica el tipo de dato que se
está pasando de modo que la única forma de determinarlos es conociendo el orden en que
deben estar.
<?xml version="1.0"?>
<methodCall> <methodName>examples.getStateName
</methodName>
<params>
<param>
<value><i4>40</i4></value>
</param>
</params>
</methodCall>
Figura 10. Solicitud XML-RPC
<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value><string>South Dakota</string></value>
</param>
</params>
</methodResponse>
Figura 11. Respuesta
XML-RPC
Diseño e implementación de un asistente personal capaz de expresar emociones
- 30 -
3.3.2.2. SOAP
Simple Object Access Protocol (SOAP) es una evolución del protocolo XML-RPC. Se sitúa
justo donde XML-RPC presenta sus limitaciones, es decir, permite definir tipos de datos. Esto
provoca que sea algo más complejo que el anterior pero, como contrapartida, ofrece mayor
potencial para el desarrollo de aplicaciones.
Como formato de los mensajes se ha utilizado también XML. Las ventajas de usar este
lenguaje derivan de ser comúnmente utilizado por las empresas así como de los esfuerzos de
desarrollo de código libre. No obstante, también existen inconvenientes al utilizar este tipo de
lenguajes. En concreto, al ser un lenguaje descriptivo exhaustivo que permite la comprensión
tanto de máquinas como de humanos, puede ralentizar la ejecución de los procesos.
Por otro lado, SOAP no está vinculado a ningún protocolo de transporte. Esto ofrece la
posibilidad de trabajar desde Single Mail Transfer Protocol (SMTP) a Hypertext Transfer Protocol
(HTTP) o su versión cifrada HTTPs, entre otros. Sin embargo, es HTTP el que constituye la
implementación más extendida, ya que proporciona una de las principales ventajas de SOAP
frente a otros métodos. Es decir, permite la comunicación a través de cortafuegos y proxies.
Capítulo 3 – Subsistema de Comunicaciones
- 31 -
A continuación se presenta un ejemplo de solicitud y respuesta mediante SOAP.
Como puede verse, la estructura de los mensajes SOAP es bastante más compleja que los
de XML-RPC. En definitiva, XML-RPC es un protocolo muy sencillo pero que, por su simplicidad,
presenta carencias a la hora de realizar determinadas acciones como pasar un objeto como
parámetro. En contraposición, SOAP aparece como un protocolo de mayor complejidad pero
Diseño e implementación de un asistente personal capaz de expresar emociones
- 32 -
Como conclusión del análisis de ambos métodos se ha adoptado SOAP. De esta forma se
asegura que el sistema pueda seguir creciendo sin problemas respecto al protocolo utilizado. Por
otro lado, las herramientas que generan XML para SOAP constituyen un factor importante en la
decisión final. En este caso se ha utilizado JABON (5), una utilidad para la creación automática
del código SOAP a partir de la implementación en C++ de las funciones.
3.4. Estructura física implementada
Finalmente, con la idea de presentar el sistema completo, se adjunta la figura en la que se
ilustra la estructura física del sistema.
Como puede observarse el sistema hace uso de tres ordenadores diferentes. El motivo de
esta elección es que determinados programas, como son el reconocedor e identificador de
locutor (SERVIVOX) o el sintetizador de voz, que por sus características necesitan grandes
recursos, deben ejecutarse en máquinas independientes.
Figura 14. Estructura física implementada
Capítulo 3 – Subsistema de Comunicaciones
- 33 -
Se puede observar que el grueso de los procesos discurre en un ordenador central, en
concreto todas las unidades de software del módulo aplicaciones y la unidad servidor principal
que implementa el módulo comportamiento y emotividad. No obstante, la implementación de
todas y cada una de estas unidades incluye el protocolo utilizado, permitiendo que la
distribución física del sistema sea variable en función de la posible variación de requisitos.
Analizando el sistema se aprecia que el ordenador central se comunica con el dispositivo
infrarrojo IRTRANS y con la webcam mediante USB. Además, hay una comunicación con un
microprocesador Motorola Coldfire, en el que reside la versión del 3 en raya física, aparte de dos
de los ordenadores mediante TCP/IP. Finalmente, el ordenador en el que reside la unidad
sintetizadorSoap se comunica por TCP/IP a un equipo del GTH donde reside el sintetizador de
voz con emociones.
Capítulo 4 – Interfaz Persona-Máquina
- 35 -
CCCCAPÍTULO APÍTULO APÍTULO APÍTULO 4444
4 INTERFAZ PERSONA-MÁQUINA
Desde los primeros ordenadores, la forma mediante la cual personas y máquinas se
comunican ha sido objeto de constantes innovaciones y mejoras. Inicialmente se basaban en un
teclado con el cual el usuario podía ejecutar comandos en el equipo. No obstante, esta solución
se antojaba como limitada. De hecho, en el MIT aparece el sistema SketchPad, que soportaba la
manipulación de objetos gráficos mediante un lápiz óptico, permitiendo cogerlos, moverlos y
cambiarles el tamaño utilizando algunas restricciones. Seguidamente se produjo un gran avance
debido a la aparición del ratón como alternativa económica al lápiz óptico. Un sencillo
dispositivo, originalmente compuesto por una bola, que al ser arrastrado desplaza un puntero en
la pantalla del equipo. Gracias a este elemento, los sistemas operativos existentes comenzaron a
Diseño e implementación de un asistente personal capaz de expresar emociones
- 36 -
evolucionar hacia entornos más amigables para el usuario. Así es como aparecieron las
ventanas, que actualmente constituyen el interfaz gráfico de cuasi cualquier aplicación.
Finalmente, en los últimos años, e impulsado por la evolución tecnológica de los dispositivos, se
están desarrollando nuevas formas de comunicación. Entre ellas destacan:
• Reconocimiento y Síntesis de Voz: La idea de una comunicación verbal con
dispositivos electrónicos ha sido perseguida durante los últimos cuarenta años.
Sin embargo aún ahora, existen limitaciones (6) al diseñar una máquina capaz de
entender un discurso de cualquier usuario en cualquier contexto sobre cualquier
temática. Así mismo, en cuanto a la síntesis de voz, cabe decir que pese a que se
está trabajando en la expresión de emociones y la naturalidad de la síntesis, aún
resulta un poco artificial. No obstante, por las características de la comunicación
verbal, este tipo de interfaces presentan una gran importancia a la hora de crear
sistemas de manejo amigable e intuitivo. Entre los ejemplos comerciales que se
pueden citar como interfaces de voz, el sistema para invidentes de los autobuses
de la EMT utiliza un sintetizador de voz mientras que el reconocimiento de voz se
puede encontrar en móviles, en dispositivos manos libres bluetooth de algunos
automóviles e incluso Microsoft Windows Vista proporciona un reconocedor de
voz. Como ejemplo de síntesis y reconocimiento de voz en el mismo sistema se
puede pensar en el robot guía Urbano.
Figura 15. Robot Urbano
Capítulo 4 – Interfaz Persona-Máquina
- 37 -
• Tratamiento de imágenes: Mediante técnicas de análisis de imágenes, un sistema
es capaz de detectar movimientos, gestos faciales, formas, colores, etc. De esta
manera se abre camino a la comunicación no verbal entre las personas y las
máquinas. Así, un sistema, de forma no intrusiva, puede controlar la situación
relacionada con un usuario y decidir qué acciones conviene realizar. Un ejemplo
comercial de este tipo de interfaces se encuentra en el Opel Insignia, un automóvil
último modelo en el que se incluye el sistema Opel Eye. Esta tecnología consiste
en una cámara que analiza la información de las señales de tráfico mostrando en
el cuadro de mandos el límite de velocidad de la vía así como la posible
prohibición de adelantamientos.
• Robótica: Aunque la robótica no es un tipo de interfaz propiamente dicho, sí
determina la forma en la que un sistema se relaciona con su entorno. De hecho, el
proveer de brazos robóticos a un sistema permite la interacción física de éste con
su entorno. Así mismo, la creación de caras robóticas o de robots que imiten los
rasgos humanos proporciona una gran variedad de alternativas para la
comunicación no verbal entre el sistema y las personas. Un ejemplo de esto es el
último sistema elaborado por el MIT, NEXI. Un robot capaz de imitar las
expresiones emocionales de los humanos.
Figura 16. Opel Eye
• Pantallas táctiles:
conductores transparentes que, en función de en qué parte de la pantalla se está
produciendo presión, generan un valor de resistencia que permite determinar el
punto de contacto. Este ti
los últimos años. De hecho
esta interfaz en teléfonos móviles. Además, también se utiliza en videoconsolas
como Nintendo DS o, de forma incipient
tener una orientación a estación multimedia facilitando el uso de tareas como
escuchar música, ver fotos, etc.
Ante la aparición de este tipo de alternativas se plantea la idea de utilizarlas en un sistema
que permita controlar los dispositivos tradicionales que están en un hogar de una forma sencilla
Diseño e implementación de un asistente personal capaz de expresar emociones
- 38 -
táctiles: Las pantallas táctiles más comunes consisten en un par de
conductores transparentes que, en función de en qué parte de la pantalla se está
uciendo presión, generan un valor de resistencia que permite determinar el
punto de contacto. Este tipo de interfaces está teniendo un auge
los últimos años. De hecho, desde la aparición del Iphone, la tendencia es incluir
esta interfaz en teléfonos móviles. Además, también se utiliza en videoconsolas
como Nintendo DS o, de forma incipiente, en equipos de escritorio que pretenden
tener una orientación a estación multimedia facilitando el uso de tareas como
escuchar música, ver fotos, etc.
Ante la aparición de este tipo de alternativas se plantea la idea de utilizarlas en un sistema
que permita controlar los dispositivos tradicionales que están en un hogar de una forma sencilla
Figura 17. NEXI (Robot emocional del MIT)
Figura 18. Dispositivos con pantalla táctil.
Diseño e implementación de un asistente personal capaz de expresar emociones
consisten en un par de
conductores transparentes que, en función de en qué parte de la pantalla se está
uciendo presión, generan un valor de resistencia que permite determinar el
stá teniendo un auge considerable en
desde la aparición del Iphone, la tendencia es incluir
esta interfaz en teléfonos móviles. Además, también se utiliza en videoconsolas
e, en equipos de escritorio que pretenden
tener una orientación a estación multimedia facilitando el uso de tareas como
Ante la aparición de este tipo de alternativas se plantea la idea de utilizarlas en un sistema
que permita controlar los dispositivos tradicionales que están en un hogar de una forma sencilla
Dispositivos con pantalla táctil.
Capítulo 4 – Interfaz Persona-Máquina
- 39 -
e intuitiva. Es decir, en lugar de pulsar un botón para encender una luz, el usuario debería
interactuar de una forma más parecida a como lo haría con otra persona. Esto puede ser
mediante una orden verbal.
Por otro lado, en pro de conseguir una sensación de inteligencia del sistema y que el
usuario no necesite seguir unos patrones para interaccionar con él, se plantea el concepto de
crear una interfaz multimodal. Este tipo de interfaces combinan diferentes estímulos de entrada
del usuario así como varios modos de salida de información. La ventaja de simultanearlos radica
en que las deficiencias de un tipo de interfaz se ven cubiertas por otros de modo que el sistema
general resulta más robusto. Además se incrementa su usabilidad ya que, por ejemplo en
dispositivos móviles en los que teclear una palabra resulta más o menos complicado, si se
añadiese reconocimiento de voz se simplificaría el uso haciéndolo más atractivo. Por último se
potencia la accesibilidad de los sistemas. Al implementar diferentes alternativas para la
comunicación persona-máquina, los usuarios que padezcan algún tipo de discapacidad pueden
relacionarse de maneras alternativas. Por ejemplo, un discapacitado físico podría interaccionar
mediante habla.
Las interfaces que han sido combinadas en este sistema son: Verbal, que combina síntesis,
reconocimiento e identificación; Visual, que incluye el tratamiento de imágenes como entrada
de datos y la presentación por pantalla como salida; y Física, compuesta de una cara robótica
para la representación del estado del sistema, un brazo robótico para una interacción más
natural con el entorno y un sensor infrarrojos para detectar la proximidad del usuario. A
continuación se entrará en detalle sobre cada una de ellas.
4.1. Interfaz Verbal
Constituye la principal interfaz de este sistema. Incluye el reconocimiento de voz, la
síntesis de voz y la identificación de usuario. Cada una de estas aplicaciones presenta grandes
ventajas. A continuación se expresan algunas de las justificaciones que llevan a incluirlas en el
proyecto.
Pensando en que el usuario no tenga que aprender a comunicarse con el sistema aparece
la idea de utilizar la voz. De hecho, la voz es una de las interfaces más intuitivas que existen ya
que, una vez que se aprende a hablar, constituye la principal forma de comunicación de la
Diseño e implementación de un asistente personal capaz de expresar emociones
- 40 -
mayoría de las personas. En este sentido, a la hora de reconocer frases, si se crea una base de
datos de tamaño y libertad de reconocimiento suficientes, el usuario no tendrá que aprender
ningún comando, ya que lo que solicitará lo hará de manera intuitiva. Por ejemplo, en el caso de
encender una luz, podrá decir: “enciende la luz” o “pon la luz” o frases similares que no son
distintas a lo que le diría a otra persona.
Así mismo, existen ventajas que son aplicables en el otro sentido de la comunicación, es
decir, la comunicación máquina-usuario mediante síntesis de voz. Estas ventajas están
relacionadas con el hecho de que el usuario no tiene que prestar una atención especial a la hora
de recibir información por parte del sistema, el proceso transcurre de forma similar a una
conversación entre personas. Esto es, el sistema sintetiza algún tipo de mensaje que expresa en
un lenguaje verbal cercano a las personas. Por ejemplo, si el sistema no desea que se le insulte
podría decir algo como “no me gusta que me insultes”.
De forma análoga, la identificación de usuarios mediante voz presenta ventajas como no
requerir contraseñas ni proceso de verificación explícito. Es decir, no se basa en una información
que el usuario recuerde (contraseña y nombre de usuario) ni en algo que se posee (tarjeta
magnética, RFID u otra alternativa) sino que se basa en las características de la voz de cada
persona y por tanto resulta más transparente para el usuario además de más cercano al
comportamiento de una persona que es capaz de identificar a otra por su cara, voz, ojos, etc.
En resumen, todas estas ventajas conducen a que la interfaz verbal constituya la principal
forma de comunicación del sistema. Por un lado, facilita el proceso de intercambio de
información. Por el otro, contribuye a conseguir sistemas que sean más amigables, de modo que
la aceptación por parte de los usuarios aumenta considerablemente.
Finalmente, es necesario mencionar que para la creación de esta interfaz ha sido
fundamental el trabajo que se está realizando en el Grupo de Tecnología del Habla relacionado
con reconocimiento de voz, síntesis de voz e identificación de usuarios. A continuación se
profundizará sobre cada campo.
Capítulo 4 – Interfaz Persona-Máquina
- 41 -
4.1.1. Estado del arte
4.1.1.1. Reconocimiento de voz
Antes de nada es conveniente repasar el concepto de reconocimiento de voz. El módulo
reconocedor de voz tiene como objetivo convertir una secuencia de palabras emitidas por un
usuario en una secuencia textual que sea lo más fiel posible a aquella. Para lograr esto deberá
analizar la secuencia acústica en busca de las unidades de información que se desean obtener. El
conjunto de unidades de información sobre el cual el reconocedor compara las tramas acústicas
se denomina vocabulario del mismo (7).
El sistema de reconocimiento de voz utilizado en este proyecto ha sido heredado del
proyecto de Nuria Pérez Magariños. Este proyecto tenía como objetivo la mejora de una interfaz
basada en reconocimiento de voz y, por tanto, resulta una lectura obligada para el lector
interesado.
Los reconocedores de voz se pueden clasificar según diferentes criterios (8):
- Según el objetivo último del reconocimiento existen:
• Reconocedores de habla: Lo más importante es conseguir la secuencia de
palabras que se ha dicho.
• Reconocedores de locutor: Lo que interesa es averiguar la identidad del
hablante.
• Reconocedores de idioma: El objetivo es identificar el idioma en el que se está
hablando.
• Reconocedores de emoción: El objetivo es determinar el estado emocional del
locutor.
- Según el tamaño del vocabulario, las prestaciones y complejidad del sistema
varían:
• Pequeños: Son capaces de reconocer los dígitos del 0 al 9, si, no…
• Medianos: Vocabularios cuyo máximo es 1000 palabras.
• Grandes: Vocabularios con más de 1000 palabras.
• Muy Grandes: Vocabularios con más de 10000 palabras.
Diseño e implementación de un asistente personal capaz de expresar emociones
- 42 -
- Según el tipo de reconocimiento:
• Habla aislada: Basados en órdenes simples y sin pausas.
• Habla continua: Permiten reconstruir un mensaje emitido por un locutor en
condiciones normales incluyendo pausas, dudas o símbolos que se encuentren
fuera del vocabulario.
El modelo genérico de un sistema de reconocimiento de voz es el siguiente:
Lo módulos más significativos de este sistema son:
- El Detector: Extrae de la señal digital un conjunto de características (features) que
serán empleados por el subsistema reconocedor.
- El Reconocedor: Mediante los vectores de características obtenidos por el
detector y empleando tanto los modelos acústicos como los modelos de lenguaje,
Figura 19. Diagrama de bloques de un reconocedor obtenido de (7)
Figura 20. Arquitectura básica de un sistema reconocedor obtenido de (9)
Capítulo 4 – Interfaz Persona-Máquina
- 43 -
genera la secuencia de palabras que más se asemeje a dichos vectores de
características. El reconocedor también puede proporcionar la información
necesaria para llevar a cabo una adaptación de los modelos anteriormente
mencionados para mejorar los resultados obtenidos.
4.1.1.1.1. Métodos de reconocimiento
En líneas generales, se puede decir que han existido dos aproximaciones al
reconocimiento del habla:
• Aproximación fonético-acústica: Estaba basada en la teoría de la fonética acústica,
según la cual, existe un número finito y diferenciable de unidades fonéticas en el
lenguaje hablado que están caracterizadas, en términos generales, por una serie
de propiedades que se manifiestan en la señal de voz o en su espectro. Aunque,
las propiedades acústicas de estas unidades fonéticas son muy variables debido
principalmente a los locutores y a las unidades fonéticas vecinas, se asume que las
reglas que gobiernan esa variabilidad son sencillas y que pueden ser rápidamente
aprendidas y aplicadas en situaciones prácticas.
• Aproximación de reconocimiento de patrones: Este método tiene dos pasos, el
entrenamiento de los patrones y el reconocimiento mediante la comparación de
patrones. El “conocimiento” sobre el habla se introduce en el sistema mediante
un proceso de entrenamiento. La idea es que si se dispone de un número
suficiente de versiones diferentes del patrón que se desea reconocer en el
conjunto de datos de entrenamiento que se proporciona al algoritmo de
reconocimiento, el proceso de entrenamiento debe ser capaz de caracterizar
adecuadamente las propiedades acústicas del patrón, que quedan reflejadas en el
modelo acústico que es un modelo oculto de Markov. La utilidad del método está
en el paso de comparación de patrones, que realiza una comparación directa
entre la voz que debe reconocerse (habla desconocida) con cada uno de los
posibles patrones que ha aprendido en la fase de entrenamiento y clasifica el
habla desconocida en función de lo bien que encaja con los patrones.
Diseño e implementación de un asistente personal capaz de expresar emociones
- 44 -
4.1.1.1.1.1. Reconocimiento de patrones
En líneas generales se puede decir que un reconocedor basa su funcionamiento en dos
eventos bien diferenciados: la segmentación y el reconocimiento.
La mayoría de los reconocedores actuales optan por utilizar un esquema estocástico
basado en representar la secuencia acústica mediante modelos ocultos de Markov (HMM,
Hidden Markov Models), así como técnicas de reconocimiento de patrones y algoritmos
avanzados basados en la teoría de programación dinámica para resolver ambos problemas de
manera integrada.
A lo largo de los años, el desarrollo de las tecnologías y algoritmos de reconocimiento ha
dado lugar, como consecuencia, a un incremento de la complejidad de las tareas que debe llevar
a cabo el reconocedor de habla. Para tratar de dividir esta complejidad, es habitual dividir el
trabajo del mismo en dos fases, aplicando diferentes modelos en cada una de ellas para obtener
un mejor resultado global.
El reconocedor del GTH que se ha empleado en la realización de este Proyecto presenta
este tipo de funcionamiento. En un primer proceso, denominado one pass, se aplica como
modelo acústico un HMM por cada trifonema y como modelo lingüístico uno basado en
bigramas. Una vez efectuado el reconocimiento y asignada una puntuación o score a cada una
de las palabras reconocidas, se pasa a un segundo bloque conocido como etapa de rescoring, en
la cual se utiliza el modelo acústico de la etapa previa y se varía el modelo lingüístico a uno
basado en trigramas, aprovechando que este modelo contiene mayor información.
Figura 21. Esquema de un reconocedor de dos etapas, obtenido de (7)
Capítulo 4 – Interfaz Persona-Máquina
- 45 -
La información entre ambas etapas no se limita a los parámetros acústicos sino que puede
reutilizar una mayor información del one pass para simplificar el trabajo del rescoring.
Los elementos que intervienen en este reconocedor son:
• Confianza: Se entiende como medida de confianza la puntuación que le asigna el
reconocedor a cada una de las decisiones que toma, constituyendo de esta forma
un sistema de medida de lo bien o lo mal que el propio reconocedor asume que
está realizando su tarea. La confianza suele medirse en dos niveles diferentes:
palabra (corrección con que el sistema asigna a cada una de las palabras que
reconoce, sólo válido en palabras que hayan sido reconocidas) y frase (corrección
de la frase en conjunto, compara la frase obtenida con la original de modo que sí
se tiene en cuenta el borrado de palabras).
• Modelos acústicos: Los modelos acústicos se construyen a partir de Modelos
ocultos de Markov de los trifonemas. Los alófonos aislados se tratan como HMM,
con el objetivo de tener en cuenta la variabilidad que introducen los alófonos
adyacentes en la pronunciación de cada alófono.
• Modelos lingüísticos: El conocimiento léxico, es decir, la definición del vocabulario
y la pronunciación de las palabras son parte esencial de la sintaxis y semántica de
la lengua y, como tales, definen reglas que determinan qué secuencias de
palabras son gramaticalmente correctas y dan lugar a un discurso comprensible.
En los reconocedores automáticos suelen emplearse modelos estocásticos del
lenguaje, que modelan las características del idioma desde un punto de vista
probabilístico. La clave de estos modelos consiste en proporcionar la información
probabilística adecuada, de manera que las secuencias de palabras más comunes
tengan mayor probabilidad. Esto no sólo mejora el resultado del reconocimiento,
sino que contribuye a restringir el espacio de búsqueda del reconocedor,
aumentando la rapidez del sistema.
• Grafos: El trabajo de reconocimiento se puede asimilar como un problema de
búsqueda y los grafos son una de las herramientas más potentes para resolver
este tipo de problemas. Permiten evaluar diferentes alternativas de actuación en
Diseño e implementación de un asistente personal capaz de expresar emociones
- 46 -
base a una determinada función de coste, que asocia un valor a cada uno de los
caminos que recorren el grafo. Todo grafo consta de un conjunto de nodos y una
serie de uniones entre ellos. Si el grafo es dirigido, dichas uniones reciben el
nombre de flechas y son unidireccionales. En función del problema considerado,
los nodos y las flechas constituirán sistemas de almacenamiento de información.
(7)
4.1.1.1.2. Variabilidad de la señal de voz
Aunque en la actualidad pueden construirse reconocedores muy precisos para un
determinado locutor, con un lenguaje determinado y un estilo de hablar particular, en un
entorno conocido y para una tarea concreta, todavía no somos capaces de crear un reconocedor
que entienda a cualquier locutor, independientemente del entorno, el lenguaje o la tarea (9).
Es por esto que la precisión y la robustez son las últimas medidas a tener en cuenta para
un resultado exitoso de los algoritmos de reconocimiento. Hay varias razones por las que los
algoritmos o sistemas actuales no dan los resultados esperados por los usuarios. A continuación
se describen algunos de ellos.
• Variaciones en el contexto: La interacción hablada entre las personas requiere un
conocimiento del significado de las palabras y del contexto en el que son dichas.
Palabras con significados muy diferentes pueden tener la misma pronunciación
como, por ejemplo, vaca y baca. También existe el caso de que varias palabras
tengan igual pronunciación pero, sin embargo, presenten un significado diferente,
por ejemplo, “toma té verde” o “tomate verde”. Además de estos contextos de
frase o de palabra existe un nivel de contexto de fonema que es apreciado, sobre
todo en habla rápida, donde muchos fonemas no llegan siquiera a pronunciarse.
• Variaciones en el estilo: En el reconocimiento de habla continua, la tasa de error
para el habla espontánea que puede surgir en cualquier conversación diaria es
mucho mayor que para un discurso cuidadosamente articulado y leído en voz alta.
La tasa de habla también afecta a la tasa de reconocimiento de palabras.
Generalmente, cuanto mayor es la tasa de habla (palabras/minuto) mayor es la
tasa de error. Además, si una persona susurra o grita para reflejar sus estados
emocionales, la variación se incrementa más significativamente. Pueden
Capítulo 4 – Interfaz Persona-Máquina
- 47 -
proponerse soluciones del orden de imponer habla aislada que reduce
significativamente la complejidad del reconocedor, no obstante, esta forma de
habla no resulta natural para las personas.
• Variaciones en el locutor: Cada individuo habla de una forma diferente. La forma
que la que una persona habla es el reflejo de una serie de características físicas,
edad, sexo, dialecto, salud y educación. De esta manera, los patrones de habla de
una persona pueden ser totalmente diferentes de los de otra. Incluso si se
eliminan las diferencias debidas a locutores diferentes, un mismo locutor a
menudo es incapaz de reproducir exactamente los mismos sonidos. Como
solución aparecen sistemas dependientes de locutor en los que se recogen
muestras suficientes para poder generar un modelo que permite el
reconocimiento exitoso del habla de dicho usuario. Este tipo de sistemas
presentan muchas ventajas frente a los independientes, por ejemplo, al estar
optimizado para un locutor concreto, el proceso de reconocimientos se realiza de
forma más rápida. No obstante, presentan un inconveniente, requieren un
proceso de aprendizaje suficiente que en ocasiones no es factible de ser realizado,
por ejemplo, un sistema de operador de telefonía automático no puede generar
un modelo del locutor.
• Variaciones en el entorno: El mundo está lleno de sonidos de distinta intensidad
procedente de diversas fuentes. Si además se utiliza un reconocedor integrado en
dispositivos móviles, los ruidos debidos al espectro varían más, ya que se puede
estar en movimiento. Además existen ruidos causados por el locutor como
extraléxicos emitidos cuando se está dudando o ruidos causados por la electrónica
del reconocedor (micrófono, conversos A/D). Existen soluciones análogas a las
variaciones en el locutor, es decir, con un número suficiente de entornos ruidosos,
entrenar un reconocedor que sea capaz de optimizar el proceso en cada entorno.
No obstante, las variaciones en el entorno constituyen uno de los principales retos
del reconocimiento.
Diseño e implementación de un asistente personal capaz de expresar emociones
- 48 -
4.1.1.1.3. Prestaciones
En la actualidad no existen reconocedores perfectos, todos cometerán un cierto error a la
hora de transcribir los mensajes acústicos que reciben. Algunos de los motivos que llevan a este
reconocimiento erróneo pueden ser el entorno en que se obtiene la señal de voz (puede ser más
o menos ruidoso) o la ausencia de referencias en el vocabulario (out of vocabulary) (7).
La calidad de un reconocedor se puede medir evaluando cada una de las palabras que
constituyen la frase. Esto se hace así debido a la forma en la que se desarrolla el alineamiento y
la confrontación de la frase reconocida con la transcripción escrita de la secuencia acústica de
entrada, recogida en una base de datos de entrenamiento. De esta manera, al confrontar dos
frases pueden darse los siguientes casos:
- Acierto: La palabra reconocida coincide con la original. - Sustitución: La palabra reconocida no coincide con la original sino con otra. - Borrado: El reconocedor no ha reconocido una palabra que sí se encontraba en la
frase original. - Inserción: El sistema introduce una palabra que no se encontraba en la frase original.
A partir de estos valores se definen una serie de porcentajes que proporcionan información
sobre la calidad del reconocedor:
- %aciertos = 100⋅hipótesisladelongitud
aciertosdenúmero
- %sustituciones = 100⋅hipótesisladelongitud
nessustituciodenúmero
- %borrados = 100⋅hipótesisladelongitud
borradosdenúmero
- % inserciones = 100⋅hipótesisladelongitud
sinsercionedenúmero
Realmente las tres primeras tasas constituyen el 100%, dado que el índice por el cual se
normalizan es la longitud en palabras de la hipótesis y en esta no tiene sentido definir las
inserciones, puesto que una inserción es un palabra ajena a la hipótesis que ha introducido el
reconocedor.
La suma de las tres últimas tasas es el porcentaje de error del reconocedor: