Diseño e implementación de un asistente personal capaz de...
Transcript of Diseño e implementación de un asistente personal capaz de...
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
características particulares de cada tarea.
Palabras Clave: ambiente inteligente, interfaz multimodal, asistente personal,
appraisal theory, Maslow, domótica, sistema emocional.
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.
Í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 - 11 -2.3.1. Estado del arte: Módulo de comportamiento. - 11 -
2.3.1.1. GALAXY-II - 12 -2.3.1.2. CU Communicator - 13 -
2.3.2. Módulo de comportamiento implementado - 13 -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 - 17 -2.3.2.4. Secuencia del módulo de comportamiento - 18 -
3 INTERFAZ PERSONA-MÁQUINA - 19 -
3.1. Interfaz Verbal - 23 -3.1.1. Estado del arte - 24 -
3.1.1.1. Reconocimiento de voz - 24 -3.1.1.1.1. Métodos de reconocimiento - 27 -
3.1.1.1.1.1. Reconocimiento de patrones - 28 -3.1.1.1.2. Variabilidad de la señal de voz - 30 -3.1.1.1.3. Prestaciones - 32 -
3.1.1.2. Identificación de usuario - 33 -3.1.1.3. Síntesis de voz - 36 -
3.1.1.3.1. Arquitectura general de un sintetizador de habla - 36 -3.1.1.3.1.1. Procesamiento de Lenguaje Natural (NLP) - 37 -3.1.1.3.1.2. Proceso de Síntesis - 38 -
3.1.1.3.2. Comparación de los métodos de síntesis - 43 -3.1.2. Reconocimiento de voz e Identificación de Usuario (SERVIVOX) - 44 -
3.1.2.1. Adaptación del SERVIVOX - 45 -3.1.2.2. Proceso de reconocimiento de una nueva frase - 45 -3.1.2.3. Pruebas de identificación - 47 -
3.1.2.3.1. Modo 1 - 49 -3.1.2.3.2. Modo 2 - 52 -
3.1.3. Síntesis de voz con emociones - 54 -
3.2. Interfaz Visual - 57 -3.2.1. Estado del arte: Reconocimiento de objetos - 58 -
3.2.1.1. Métodos basados en características - 58 -3.2.1.1.1. Color - 58 -3.2.1.1.2. Múltiples características - 59 -
I
3.2.1.1.3. Esqueletización - 59 -3.2.1.2. Métodos basados en modelos - 60 -
3.2.1.2.1. Redes neuronales - 60 -3.2.1.2.2. K vecinos más cercanos - 62 -3.2.1.2.3. Adaboost - 63 -
3.2.2. Tratamiento de Imágenes (Opencv) - 64 -3.2.2.1. Detección de luz - 65 -3.2.2.2. Detección de movimientos - 66 -3.2.2.3. Detección de caras - 66 -
3.3. Interfaz Física - 67 -3.3.1. Brazo Robótico - 67 -3.3.2. Cara Robótica - 68 -3.3.3. Detector de Caricias - 71 -
4 APLICACIÓN - 75 -
4.1. Estructura Genérica de una Tarea - 76 -
4.2. Control de Roomba - 77 -4.2.1. Características de Roomba - 77 -4.2.2. Tecnología Bluetooth - 78 -4.2.3. Tarea Implementada - 81 -
4.3. Control Infrarrojos - 82 -4.3.1. Tecnología de Infrarrojos - 82 -4.3.2. Tarea Implementada - 83 -
4.4. Control Luz - 83 -4.4.1. Tecnología X10 - 84 -4.4.2. Tarea Implementada - 84 -
4.5. Tres en raya virtual - 85 -
4.6. Tres en raya físico - 87 -
4.7. Control Conversación - 88 -
4.8. Resumen de tareas - 88 -
5 EMOTIVIDAD - 91 -
5.1. Relaciones - 96 -5.1.1. Modelo de Relaciones implementado - 96 -
5.1.1.1. Actualización de usuarios - 98 -5.1.1.2. Presentación de nuevos usuarios. - 98 -
5.1.2. Influencia de relaciones en el comportamiento del sistema - 101 -5.1.3. Conclusiones sobre el modelo de relaciones - 102 -
5.2. Emociones - 103 -5.2.1. Estado del arte: Teorías emocionales. - 104 -
5.2.1.1. La teoría de Ortony, Clore and Collins - 106 -5.2.1.2. La teoría de Roseman - 109 -5.2.1.3. La teoría de Scherer - 111 -5.2.1.4. La teoría de Frijda - 112 -5.2.1.5. La teoría de Oatley & Johnson-Laird - 116 -
5.2.2. Diseño del modelo emocional: Requisitos del sistema emocional - 117 -5.2.3. Definición de objetivos de alto nivel: la teoría de Maslow. - 120 -5.2.4. Diseño del modelo emocional: Arquitectura propuesta - 124 -
5.2.4.1. Relación tareas-necesidades - 127 -5.2.4.2. Variación de necesidades. - 129 -
5.2.4.2.4. Nivel Fisiológico - 130 -
II
5.2.4.2.5. Nivel de Seguridad - 131 -5.2.4.2.6. Nivel de Afiliación - 132 -5.2.4.2.7. Nivel de Estima - 138 -5.2.4.2.8. Nivel de Autorrealización - 141 -
5.2.4.3. Generación de NIFs - 143 -5.2.4.3.9. Deseabilidad - 144 -5.2.4.3.10. Inesperado - 146 -5.2.4.3.11. Urgencia - 148 -5.2.4.3.12. Relevancia - 151 -5.2.4.3.13. Infrecuente - 152 -
5.2.4.4. Generación de emociones - 154 -5.2.5. Sistema emocional implementado - 159 -5.2.6. Conclusiones del sistema emocional - 163 -
6 SUBSISTEMA DE COMUNICACIONES - 165 -
6.1. Estado del arte: Arquitecturas de comunicaciones. - 165 -
6.2. Arquitectura Cliente/Servidor - 168 -6.2.1. Descripción - 168 -6.2.2. Componentes - 168 -6.2.3. Características - 169 -6.2.4. Ventajas e inconvenientes - 170 -6.2.5. Estructura implementada. - 172 -
6.3. Mecanismo de comunicación: SOAP - 174 -6.3.1. Sockets - 174 -6.3.2. RPC - 175 -
6.3.2.1. XML-RPC - 175 -6.3.2.2. SOAP - 177 -
6.4. Estructura física implementada - 179 -
7 RESULTADOS - 181 -
8 CONCLUSIONES Y LÍNEAS FUTURAS - 185 -
9 PLIEGO DE CONDICIONES - 189 -
9.1 Condiciones generales - 189 -
9.2 Condiciones generales a todos los programas - 191 -
9.3 Condiciones generales de prueba - 191 -
9.4 Recursos materiales - 191 -
9.5 Recursos lógicos - 192 -
10 PRESUPUESTO - 193 -
10.1. Presupuesto de ejecución material - 194 -10.1.1. Relación de salarios - 194 -10.1.2. Relación de obligaciones sociales - 194 -10.1.3. Relación de salarios efectivos totales - 195 -10.1.4. Coste de la mano de obra - 195 -10.1.5. Coste total de materiales - 196 -10.1.6. Importe total del presupuesto de ejecución material - 196 -
10.2. Importe de ejecución por contrata - 197 -
10.3. Honorarios Facultativos - 197 -
III
10.4. Importe Total del Proyecto - 198 -
BIBLIOGRAFÍA - 199 -
APÉNDICE A: Relación de Conceptos con Tareas - 203 -
APÉNDICE B: Listado de Frases para Sintetizar - 205 -
APÉNDICE C: Experimento de Identificación - 207 -
APÉNDICE D: Relación entre Clases - 209 -
IV
ÍNDICE DE FIGURAS.
FIGURA 1. EVOLUCIÓN TECNOLÓGICA DE LOS HOGARES (INSTITUTO NACIONAL DE ESTADÍSTICA, 2003-2008)..........- 1 -FIGURA 2. ARQUITECTURA GENERAL DEL SISTEMA.........................................................................................- 1 -FIGURA 3. ARQUITECTURA GALAXY-II........................................................................................................- 1 -FIGURA 4. SCRIPT HUB MODELO GALAXY-II.................................................................................................- 1 -FIGURA 5. PROCESO DE COMUNICACIÓN CON LA INTERFAZ DE ENTRADA.............................................................- 1 -FIGURA 6. PROCESO DE COMUNICACIÓN CON LA INTERFAZ DE SALIDA................................................................- 1 -FIGURA 7. ROBOT URBANO....................................................................................................................... - 1 -FIGURA 8. OPEL EYE.................................................................................................................................- 1 -FIGURA 9. DISPOSITIVOS CON PANTALLA TÁCTIL.............................................................................................- 1 -FIGURA 10. NEXI (ROBOT EMOCIONAL DEL MIT)............................................................................................- 1 -FIGURA 11. DIAGRAMA DE BLOQUES DE UN RECONOCEDOR OBTENIDO DE (LUCAS CUESTA, 2006)...........................- 1 -FIGURA 12. ARQUITECTURA BÁSICA DE UN SISTEMA RECONOCEDOR OBTENIDO DE (HUANG, Y OTROS, 2001).............- 1 -FIGURA 13. ESQUEMA DE UN RECONOCEDOR DE DOS ETAPAS, OBTENIDO DE (LUCAS CUESTA, 2006)........................- 1 -FIGURA 14. ESQUEMA DE UN SINTETIZADOR DE HABLA.....................................................................................- 1 -FIGURA 15. SECUENCIA DE MENSAJES DEL RECONOCEDOR.................................................................................- 1 -FIGURA 16. ALTERNATIVAS DE IDENTIFICACIÓN DE USUARIO...............................................................................- 1 -FIGURA 17. MODO1 CON 30 LOCUTORES E HISTORIA DE 5 FRASES.....................................................................- 1 -FIGURA 18. MODO 1 CON 30 LOCUTORES Y LAMBDA 100................................................................................- 1 -FIGURA 19. MODO 1 CON 30 LOCUTORES, HISTORIA DE 5 Y LAMBDA DE 4,5.......................................................- 1 -FIGURA 20. MODO 2 CON 1 LOCUTOR, HISTORIA 5 Y POBLACIÓN DE 30..............................................................- 1 -FIGURA 21. MODO 2 CON 10 LOCUTORES, HISTORIA DE 30 Y POBLACIÓN DE 30...................................................- 1 -FIGURA 22. PROCESO DE SÍNTESIS.................................................................................................................- 1 -FIGURA 23. MECANISMO PING-PONG...........................................................................................................- 1 -FIGURA 24. ESQUELETIZACIÓN DE LA MANO (MONTERO DE ESPINOSA MARRÓN, 2008)........................................- 1 -FIGURA 25. EJEMPLO DE UNA NEURONA ARTIFICIAL..........................................................................................- 1 -FIGURA 26. EJEMPLO DEL ALGORITMO KNN PARA K = 4 Y K = 8........................................................................- 1 -FIGURA 27. PLANTILLAS DE CARACTERÍSTICAS TIPO HAAR PROPUESTAS POR VIOLA Y JONES Y LIENHART.....................- 1 -FIGURA 28. ESQUEMA DE UN CLASIFICADOR EN CASCADA..................................................................................- 1 -FIGURA 29. FILTRADO PARA DETECCIÓN DE LUZ...............................................................................................- 1 -FIGURA 30. BRAZO ROBÓTICO......................................................................................................................- 1 -FIGURA 31. A LA IZQUIERDA GROUCHO A LA DERECHA ROBOT URBANO...............................................................- 1 -FIGURA 32. GESTOS (DE ARRIBA IZQUIERDA ABAJO DERECHA) ENFADO, NEUTRAL, ALEGRÍA, TRISTEZA Y MIEDO............- 1 -FIGURA 33. CARA DE LEVE ENFADO...............................................................................................................- 1 -FIGURA 34. MECANISMO DE DETECCIÓN DE CARICIAS.......................................................................................- 1 -FIGURA 35. ESTIMACIÓN DE FRECUENCIA DE LAS CARICIAS.................................................................................- 1 -FIGURA 36. PILA DE PROTOCOLOS BLUETOOTH PARA SPP (CANCELA GONZÁLEZ, 2009).........................................- 1 -FIGURA 37. ARQUITECTURA GENERAL DEL SISTEMA IRTRANS (MÜLLER, 2004).....................................................- 1 -FIGURA 38. TRAMA X10.............................................................................................................................- 1 -FIGURA 39. ARQUITECTURA SISTEMA DRAC EXTRAÍDO DE (ZLOTNIK, 2007)........................................................- 1 -FIGURA 40. SECUENCIA DE CÁLCULO DEL MEJOR MOVIMIENTO...........................................................................- 1 -FIGURA 41. ESQUEMA DE ARQUITECTURA DE TAREA.........................................................................................- 1 -
V
FIGURA 42. ICAT CHESS PLAYER...................................................................................................................- 1 -FIGURA 43. GUARDERÍA ROBÓTICA DEL PROYECTO FEELIX GROWING...................................................................- 1 -FIGURA 44. URBANO EN UNA EXPOSICIÓN......................................................................................................- 1 -FIGURA 45. ESQUEMA DEL MODELO DE RELACIONES.........................................................................................- 1 -FIGURA 46. MÁQUINA DE ESTADOS DEL PROCESO DE IDENTIFICACIÓN..................................................................- 1 -FIGURA 47. ESTRUCTURA DEL TIPO DE EMOCIONES (ORTONY, Y OTROS, 1988).....................................................- 1 -FIGURA 48. SISTEMA EMOCIONAL DE FRIJDA (FRIJDA, Y OTROS, 1994)................................................................- 1 -FIGURA 49. ARQUITECTURA MEDIANTE TIF.....................................................................................................- 1 -FIGURA 50. PIRÁMIDE DE MASLOW..............................................................................................................- 1 -FIGURA 51. ADAPTACIÓN DE LA PIRÁMIDE DE MASLOW...................................................................................- 1 -FIGURA 52. ARQUITECTURA EMOCIONAL IMPLEMENTADA..................................................................................- 1 -FIGURA 53. LISTA DE EVENTOS Y RELACIÓN CON NECESIDADES............................................................................- 1 -FIGURA 54. SIMULACIÓN DE SURVIVAL...........................................................................................................- 1 -FIGURA 55. SIMULACIÓN DE SAFETY..............................................................................................................- 1 -FIGURA 56. SIMULACIÓN DE HISTOGRAMAS PARA LUZ.......................................................................................- 1 -FIGURA 57. VENTANA DE PARZEN SOBRE HISTOGRAMA PARA EL PUNTO 1.72X107................................................- 1 -FIGURA 58. SIMULACIÓN COMPLETA DE CHANGES...........................................................................................- 1 -FIGURA 59. SIMULACIÓN DE SUCCESS............................................................................................................- 1 -FIGURA 60. SIMULACIÓN DE ETHICS..............................................................................................................- 1 -FIGURA 61. SIMULACIÓN DE DESEABILIDAD.....................................................................................................- 1 -FIGURA 62. SIMULACIÓN DE INESPERADO EN SISTEMA CONTINUO.......................................................................- 1 -FIGURA 63. SIMULACIÓN DE INESPERADO EN SISTEMA DISCONTINUO...................................................................- 1 -FIGURA 64. SIMULACIÓN DE URGENCIA..........................................................................................................- 1 -FIGURA 65. SIMULACIÓN DE URGENCIA CON VARIACIONES DISCONTINUAS............................................................- 1 -FIGURA 66. SIMULACIÓN DE RELEVANCIA.......................................................................................................- 1 -FIGURA 67. SIMULACIÓN DE INFRECUENTE.....................................................................................................- 1 -FIGURA 68. SECUENCIA DE CÁLCULO EMOCIONAL............................................................................................- 1 -FIGURA 69. PROCESO DE RESPUESTA EMOCIONAL............................................................................................- 1 -FIGURA 70. TOPOLOGÍAS DE REDES PEER-TO-PEER...........................................................................................- 1 -FIGURA 71. ESQUEMA GENÉRICO DE ARQUITECTURA CLIENTE-SERVIDOR...............................................................- 1 -FIGURA 72. ESTRUCTURA DE CLIENTE-SERVIDOR DE LA IMPLEMENTACIÓN.............................................................- 1 -FIGURA 73. SOLICITUD XML-RPC................................................................................................................- 1 -FIGURA 74. RESPUESTA XML-RPC...............................................................................................................- 1 -FIGURA 75. SOLICITUD SOAP......................................................................................................................- 1 -FIGURA 76. RESPUESTA SOAP.....................................................................................................................- 1 -FIGURA 77. ESTRUCTURA FÍSICA IMPLEMENTADA.............................................................................................- 1 -FIGURA 78. DEFINICIÓN DE CLASE CEMOTION.................................................................................................- 1 -FIGURA 79. JERARQUÍA DE CLASES PARA LAS NECESIDADES................................................................................- 1 -FIGURA 80. DIAGRAMA DE IMPLEMENTACIÓN DEL MÓDULO EMOCIONAL.............................................................- 1 -FIGURA 81. FUNCIONALIDAD DE CMODULOBASESOAP......................................................................................- 1 -FIGURA 82. JERARQUÍA DE CLASES DE TAREAS REMOTAS....................................................................................- 1 -FIGURA 83. ÁRBOL DE LLAMADAS DEL MÉTODO MAIN......................................................................................- 1 -FIGURA 84. ÁRBOL DE LLAMADAS PARA EL SERVIDOR DE SÍNTESIS.......................................................................- 1 -FIGURA 85. ÁRBOL DE LLAMADAS PARA EL SERVIDOR DE CARA...........................................................................- 1 -
VI
ÍNDICE DE TABLAS
TABLA 1. RESULTADO DE PRUEBA DE IDENTIFICACIÓN DE EMOCIONES...............................................................- 1 -TABLA 2. CORRESPONDENCIA ENTRE ACCIONES Y COMANDOS........................................................................- 1 -TABLA 3. LOCAL VARIABLES IN THE THEORY OF ORTONY, CLORE AND COLLINS (ORTONY, Y OTROS, 1988)..............- 1 -TABLA 4. PLAN JUNCTURES (OATLEY, 1992)...............................................................................................- 1 -TABLA 5. RELACIÓN DE PESOS PARA CÁLCULO EMOCIONAL.............................................................................- 1 -TABLA 6. SUELDOS DE LAS PERSONAS QUE HAN INTERVENIDO EN EL PROYECTO..................................................- 1 -TABLA 7. SALARIOS EFECTIVOS TOTALES......................................................................................................- 1 -TABLA 8. OBLIGACIONES SOCIALES.............................................................................................................- 1 -TABLA 9. COSTE DE LA MANO DE OBRA......................................................................................................- 1 -TABLA 10. COSTE DE MATERIALES............................................................................................................... - 1 -TABLA 11. PRESUPUESTO DE EJECUCIÓN MATERIAL.........................................................................................- 1 -TABLA 12. RELACIÓN DE CONCEPTOS ADICIONALES.........................................................................................- 1 -TABLA 13. IMPORTE DE EJECUCIÓN POR CONTRATA........................................................................................- 1 -TABLA 14. HONORARIOS FACULTATIVOS.......................................................................................................- 1 -TABLA 15. HONORARIOS TOTALES...............................................................................................................- 1 -TABLA 16. IMPORTE TOTAL DEL PROYECTO....................................................................................................- 1 -TABLA 17. EXPERIMENTO IDENTIFICACIÓN DE USUARIOS MODO 1.....................................................................- 1 -TABLA 18. EXPERIMENTO IDENTIFICACIÓN DE USUARIOS MODO 2 BASE DE DATOS GTH........................................- 1 -TABLA 19. SECUENCIA DEL BUCLE PRINCIPAL..................................................................................................- 1 -
VII
Capítulo 1 - Introducción
Carlos Sanz Moreno
CAPÍ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.
1
Diseño e implementación de un asistente personal capaz de
expresar emociones
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 por el que
el porcentaje de penetración de acceso a internet en los hogares sea de aproximadamente un
50% en el 2008 es que, dichos colectivos, “…tienen pocos conocimientos para utilizarlos
(26,1%)”. 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 74 años, que ha
utilizado el ordenador en los últimos tres meses, se reduce a “…el 61,0% de la población…”. Esto
sustenta la idea de que es necesario un cambio en la forma de interactuar con los aparatos
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ó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.
2
Figura 1. Evolución tecnológica de los hogares (36)
Capítulo 1 - Introducción
Carlos Sanz Moreno
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
específico de estado del arte, sino que será una serie de apartados en cada capítulo. En ellos se
3
Diseño e implementación de un asistente personal capaz de
expresar emociones
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.
Interfaz Persona-Máquina implementada.
Aplicaciones.
Emotividad: se hablará de las emociones y las relaciones.
Subsistema de comunicaciones.
Resultados.
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á. Seguidamente se hablará de cada una de las vías de desarrollo para
finalmente dar una visión de la arquitectura de comunicaciones implementada así como finalizar
proporcionando los resultados, 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.
4
Capítulo 1 - Introducción
Carlos Sanz Moreno
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.
5
Capítulo 2 – Descripción General del Sistema
Carlos Sanz Moreno
CAPÍ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.
7
Diseño e implementación de un asistente personal capaz de
expresar emociones
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
8
Capítulo 2 – Descripción General del Sistema
Carlos Sanz Moreno
La arquitectura general del sistema es la representada en la siguiente 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
hardware 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 en un único
módulo es que todas ellas tienen unas características comunes tal y como
aparecerá detallado en el capítulo 4.
Módulo de emotividad: Este módulo es el encargado de generar un
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.
9
Figura 2. Arquitectura General del Sistema
Diseño e implementación de un asistente personal capaz de
expresar emociones
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
funcionamiento del sistema:
1. Un estímulo del exterior es percibido por el hardware de entrada.
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.
10
Capítulo 2 – Descripción General del Sistema
Carlos Sanz Moreno
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
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.
11
Diseño e implementación de un asistente personal capaz de
expresar emociones
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 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
12
Figura 3. Arquitectura GALAXY-II
Figura 4. Script hub modelo GALAXY-II
Capítulo 2 – Descripción General del Sistema
Carlos Sanz Moreno
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.
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
13
Diseño e implementación de un asistente personal capaz de
expresar emociones
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
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.
14
Figura 5. Proceso de comunicación con la interfaz de entrada
Capítulo 2 – Descripción General del Sistema
Carlos Sanz Moreno
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.
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
15
Diseño e implementación de un asistente personal capaz de
expresar emociones
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,
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 5. No obstante, no implica que en el proceso de obtención de emociones
16
Figura 6. Proceso de comunicación con la interfaz de salida
Capítulo 2 – Descripción General del Sistema
Carlos Sanz Moreno
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.
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).
17
Capítulo 3 – Interfaz Persona-Máquina
Carlos Sanz Moreno
CAPÍTULO 3
3 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
19
Diseño e implementación de un asistente personal capaz de
expresar emociones
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 (4) 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.
20
Figura 7. Robot Urbano
Capítulo 3 – Interfaz Persona-Máquina
Carlos Sanz Moreno
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.
Pantallas 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á
produciendo presión, generan un valor de resistencia que permite determinar el
punto de contacto. Este tipo de interfaces está teniendo un auge considerable en
21
Figura 8. Opel Eye
Figura 9. Dispositivos con pantalla táctil.
Diseño e implementación de un asistente personal capaz de
expresar emociones
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.
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.
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
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
22
Figura 10. NEXI (Robot emocional del MIT)
Capítulo 3 – Interfaz Persona-Máquina
Carlos Sanz Moreno
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.
3.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
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
23
Diseño e implementación de un asistente personal capaz de
expresar emociones
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.
3.1.1. Estado del arte
3.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 (5).
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
24
Capítulo 3 – Interfaz Persona-Máquina
Carlos Sanz Moreno
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 (6):
- 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.
- 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:
25
Figura 11. Diagrama de bloques de un reconocedor obtenido de (5)
Diseño e implementación de un asistente personal capaz de
expresar emociones
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,
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. Un esquema más detallado
del reconocedor puede verse en la siguiente figura.
3.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
26
Figura 12. Arquitectura básica de un sistema reconocedor obtenido de (7)
Capítulo 3 – Interfaz Persona-Máquina
Carlos Sanz Moreno
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.
3.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.
27
Diseño e implementación de un asistente personal capaz de
expresar emociones
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.
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
28
Figura 13. Esquema de un reconocedor de dos etapas, obtenido de (5)
Capítulo 3 – Interfaz Persona-Máquina
Carlos Sanz Moreno
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
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.
(5)
3.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 (7).
29
Diseño e implementación de un asistente personal capaz de
expresar emociones
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
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
30
Capítulo 3 – Interfaz Persona-Máquina
Carlos Sanz Moreno
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.
3.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) (5).
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:
31
Diseño e implementación de un asistente personal capaz de
expresar emociones
- %aciertos =
número de aciertoslongitud de la hipótesis
⋅100
- %sustituciones =
número de sustitucioneslongitud de la hipótesis
⋅100
- %borrados =
número de borradoslongitud de la hipótesis
⋅100
- % inserciones =
número de insercioneslongitud de la hipótesis
⋅100
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:
%error = %sustituciones + % borrados + % inserciones
El parámetro de mayor utilidad para la medida de las prestaciones de un reconocedor no es
la tasa de palabras correctas, sino la tasa de precisión de palabra o word accuracy (WA) ,
definida como:
WA = 100% - %error = %aciertos - %inserciones
3.1.1.2. Identificación de usuario
Dentro de un sistema de diálogo tienen cabida varios módulos que, sin ser
imprescindibles, pueden producir mejoras muy importantes en el comportamiento del sistema.
Estas mejoras pueden tener un carácter técnico, si, por ejemplo, incrementan las tasas de
reconocimiento, o pueden ser de carácter subjetivo, si producen en el usuario una sensación de
naturalidad y sencillez mucho mayor (8).
32
Capítulo 3 – Interfaz Persona-Máquina
Carlos Sanz Moreno
El módulo de reconocimiento o identificación del hablante cumple estos dos objetivos. Su
función consiste en identificar al locutor entre un grupo de locutores previamente almacenados,
con la posibilidad de incorporar nuevos locutores a la base de datos.
El uso de este módulo de reconocimiento de locutor se plantea en dos tipos de entornos:
- Entorno seguro: Dentro de un entorno donde la seguridad constituya un factor
importante, la labor de este módulo está dirigida a la verificación de locutores
almacenados, esto es, el sistema debe comprobar si el locutor es quién dice ser. En este
caso la propia voz constituye el password del sistema. Este tipo de aplicación se enmarca
en el conjunto de sistemas de seguridad que utilizan el reconocimiento de parámetros
biométricos para el control de acceso.
- Entorno no seguro: En este caso la labor de este módulo es la identificación de un
locutor entre un conjunto de posibles locutores, o, en caso de que no se pueda asegurar
la identificación, que el locutor sea clasificado como un nuevo locutor. Se observa que, al
contrario que en el caso anterior, el locutor no proporciona información sobre quién
dice ser, y el sistema debe elegir quién considera que es. En un entorno en el que no
existan problemas de seguridad y en el cual la población de usuarios esté limitada es
donde este módulo alcanzaría su mayor rendimiento.
Sin duda, el hogar es un entorno idóneo para aprovechar un sistema de este tipo. Un
sistema de diálogo domótico podría mejorar sus funcionalidades de la siguiente manera: si fuera
capaz de reconocer qué usuario le dirige un mensaje, podría modificar su respuesta o
comportamiento en función del usuario reconocido.
En cualquiera de estos casos, será necesario transformar la información contenida en la
forma de onda en información de tipo digital y con el formato adecuado. De esta forma el
sistema proporcionará una representación de la señal de voz que contiene las características
útiles para una aplicación de identificación.
El funcionamiento del módulo de identificación puede ser descrito grosso modo de la
siguiente manera:
El sistema permanece en espera hasta que detecta que el nivel de señal de audio ha
sobrepasado un umbral (lo que se interpreta como una intervención de un locutor). A partir de
33
Diseño e implementación de un asistente personal capaz de
expresar emociones
entonces comienza a grabar, hasta que detecta que el nivel de sonido ha descendido por debajo
de un umbral durante el tiempo suficiente (el objetivo de esto es evitar que pequeños silencios
entre palabras se interpreten como el fin de la intervención). Cuando la intervención finaliza la
aplicación deja de grabar, calcula los coeficientes cepstrales necesarios y los almacena para el
módulo de reconocimiento de locutor, que posteriormente utilizará estos datos para
caracterizar la intervención.
Por tanto, el primer proceso que se debe realizar es el procesado de la señal de voz, así
como el cálculo y la extracción de las características del habla. Este proceso consiste en un
análisis en frecuencia, utilizando las bandas de la escala Mel para, posteriormente, realizar una
transformación que proporcione los parámetros finales, denominados parámetros cepstrales o
cepstrum.
Una vez que se dispone de los vectores de características correspondientes a la última
intervención realizada, se hace necesario separar las tramas de silencio (anterior o posterior a la
intervención) de las tramas de voz.
Por último, el objetivo del módulo es poder clasificar una intervención como
perteneciente a un grupo, dentro de un conjunto posible de grupos. Para ello se utilizará un
clasificador que, tras comparar las características de la intervención con los modelos de voz
disponibles, proporcionará una decisión. El clasificador elegido sigue el algoritmo de decisión BIC
(Bayesian Information Criterion).
El objetivo de este algoritmo consiste en emitir un juicio sobre la verosimilitud que una
intervención guarda con un grupo de intervenciones o cluster, en lengua inglesa. Por cluster se
entiende una o varias intervenciones agrupadas conjuntamente debido a su similitud, y que
constituyen el modelo de un locutor.
Tras aplicar el algoritmo a una pareja formada por una intervención y un grupo de
intervenciones agrupadas en un cluster, se espera recibir un resultado numérico que aporte
información sobre la similitud de dichos elementos. La forma de obtener esa medida
matemática de la similitud será comparar qué situación representa más fielmente los datos:
aquella en la que existe un único modelo gaussiano –procedente del conjunto de intervención y
cluster– o aquella en la que existe un modelo para la intervención y otro diferente para el
cluster. Cada una de estas hipótesis tiene una probabilidad dada por el BIC. El desarrollo
matemático de este procedimiento puede ser encontrado en (8). No obstante, por su relevancia
34
Capítulo 3 – Interfaz Persona-Máquina
Carlos Sanz Moreno
cabe destacar el parámetro λ o factor de penalización empírico que teóricamente es la unidad y
cuya modificación permitirá ajustar el sistema. En concreto cuanto mayor sea este parámetro,
más probable será la validación de la hipótesis 1 (un único modelo gaussiano). Por el contrario,
cuanto menor es el valor de dicho parámetro, más posibilidades hay de que la intervención no
sea incluida en el cluster y se genere un nuevo cluster a partir de dicha intervención. Por tanto,
este parámetro servirá para decidir el grado de similitud exigido a una intervención para poder
clasificarla dentro de un cluster: para valores altos, el sistema es poco estricto, y se generan
pocos clusters distintos (en el extremo, el sistema agrupa con facilidad varios locutores reales en
un solo locutor reconocido); para valores bajos, el sistema es estricto y genera con facilidad gran
cantidad de clusters (en el extremo, el sistema separa intervenciones de un mismo locutor real
en varios locutores reconocidos).
3.1.1.3. Síntesis de voz
El sistema de síntesis de voz utilizado es resultado de los trabajos de Roberto Barra
Chicote.
Los sistemas de síntesis de habla tienen como objetivo generar voz a partir de un
determinado texto que se pasa como entrada. A esta voz generada se la denomina voz
sintetizada o, de forma más común, voz artificial. La síntesis de habla ha supuesto un avance
muy importante en el mundo de la tecnología, y especialmente en el desarrollo de sistemas que
necesitan comunicarse con el usuario de manera verbal (9).
El progreso que se ha dado en los sistemas de conversión a voz (TTS ‘text to speech’) ha
sido posible gracias a los avances en teoría lingüística, en el modelo de la caracterización
acústica-fonética de los sonidos, en el modelado matemático para la generación de voz, en la
programación estructurada y en el diseño hardware de los ordenadores.
3.1.1.3.1. Arquitectura general de un sintetizador de habla
En la actualidad se dispone de una amplia variedad de procedimientos a través de los
cuales se puede generar una voz sintetizada. No obstante, todos estos procesos de síntesis de
habla comparten una arquitectura común que se puede dividir en dos bloques. El primero de
esos bloques se compone de un conjunto de módulos que se encargan de leer el texto de
entrada y analizarlo para determinar la estructura de las frases y la composición fonética de cada
palabra. El segundo bloque, por su parte, consta de un conjunto de subsistemas que
35
Diseño e implementación de un asistente personal capaz de
expresar emociones
transforman la información que se obtiene del módulo anterior en una voz artificial de salida. A
estos dos bloques se les denomina comúnmente Módulo de Procesamiento de Lenguaje Natural
(Natural Language Processing o NLP) y Módulo de Síntesis, respectivamente.
La siguiente figura muestra la estructura descrita:
A continuación se pasa a describir más ampliamente cada uno de estos dos bloques.
3.1.1.3.1.1. Procesamiento de Lenguaje Natural (NLP)
En esta parte de la síntesis de habla se realiza una descripción fonética y prosódica del
texto de entrada. La primera de ellas se refiere a los fonemas que aparecen cuando las palabras
del texto son pronunciadas. La prosodia establece el ritmo adecuado que se le va a dar a la voz
artificial de salida, además de la entonación y la intensidad.
El bloque de Procesamiento de Lenguaje Natural consta a su vez de tres módulos:
Analizador de Texto: Tiene la función de tomar como entrada cualquier texto y
darle el formato adecuado para ser entendido por el siguiente módulo (el
Convertidor de Texto a Fonemas). Se encargará del tratamiento de abreviaturas,
números, etc. que pudieran formar parte del texto de entrada, generando a partir
de ellos las cadenas de letras que se deban pronunciar al leer dicho número o
abreviatura. También tiene como tarea procesar los signos de puntuación para la
36
Figura 14. Esquema de un sintetizador de habla
Capítulo 3 – Interfaz Persona-Máquina
Carlos Sanz Moreno
extracción de la información relacionada con ellos como puede ser la asignación
de pausas entre frases.
Convertidor de Texto a Fonemas: Una vez que el analizador ha convertido el texto
de entrada en una serie de palabras que este módulo puede manejar, se procede
a realizar la trascripción fonética del texto, que consiste en la extracción de los
fonemas que componen cada una de las palabras.
Generador Prosódico: Posteriormente, el conjunto de fonemas obtenidos llega al
generador prosódico, que se encarga de asignar a cada uno de ellos la duración y
entonación adecuadas, ya que el habla presenta cambios en la frecuencia
fundamental, la amplitud o las duraciones de los fonemas. Estos cambios
dependen del sentido, el énfasis o la emoción de la que se le quiera dotar a cada
palabra o a la sentencia completa.
3.1.1.3.1.2. Proceso de Síntesis
En este segundo módulo la información que se obtuvo a la salida del Procesador de Texto
Natural es transformada en habla. Es aquí donde se produce la voz sintetizada o artificial.
Los métodos utilizados para sintetizar habla han cambiado mucho desde los primeros
sistemas que utilizaban dispositivos eléctricos y mecánicos resonantes hasta los sintetizadores
modernos que emplean ordenadores. Actualmente existen varios métodos a través de los cuales
se puede construir voz artificial. Estos métodos se clasifican de acuerdo a las reglas que siguen
para la reconstrucción del habla.
La clasificación más usada define cuatro tipos de sintetizadores:
Sintetizadores articulatorios: En este tipo de sintetizadores se realiza una analogía entre
los parámetros relativos a los órganos articulatorios y sus movimientos, y los parámetros
circuitales, pero, por el contrario, son muy difíciles de desarrollar. Además resulta muy
complicado el controlar automáticamente algunos de los parámetros que utilizan este
tipo de sintetizadores tales como el tamaño de la cavidad oral, de la traquea o la
posición de la lengua.
Sintetizadores por formantes: Estos sintetizadores generan la voz mediante la variación
de distintos parámetros que aplican a señales armónicas. Están formados por una serie
de filtros que modelan el tracto vocal, siendo estos filtros excitados por una fuente que
37
Diseño e implementación de un asistente personal capaz de
expresar emociones
simula las cuerdas vocales. Este tipo de sintetizadores presentan la ventaja de que son
muy flexibles.
Sintetizadores derivados de las técnicas de predicción lineal (LPC): Son sintetizadores
de análisis-síntesis en los que los parámetros que controlan la función de transferencia
del filtro que simula el tracto vocal, son parámetros LPC. Se basan en la posibilidad de
modelar el tracto vocal como una serie de cilindros huecos de diámetro variable. Las
propiedades de la onda sonora, después de haber pasado por todos ellos, puede
predecirse teniendo en cuenta que cada uno de los cilindros condiciona la forma de la
onda al entrar en el siguiente.
Sintetizadores por concatenación de forma de onda: Concatenan unidades pregrabadas
para generar nuevas frases, con lo que se intenta aumentar la calidad de la señal
generada minimizando el ruido de codificación. La complejidad es alta, pero la calidad
obtenida es muy buena, especialmente cuando se dispone de una gran cantidad de
unidades y se pueden seleccionar dinámicamente. Entre los diferentes tipos de síntesis
por concatenación se encuentran: la concatenación de fonemas, de semifonemas, de
difonemas, de sílabas, de palabras y de unidades de longitud variable.
Sintetizadores basados en modelos ocultos de Markov (HMM): Este es uno de los
nuevos métodos utilizados en síntesis de habla. Es un modelo estadístico que puede ser
usado para caracterizar los parámetros del habla obtenidos a partir de una base de
datos de locuciones y, posteriormente, generar los parámetros correspondientes al
texto de entrada para crear la forma de onda de la voz artificial. Este tipo de modelos
son capaces de producir habla con diferentes características, tanto diferencias de
locutor, como expresión emocional. Otra de las ventajas de este método es que
requiere poca memoria en comparación a otras alternativas. No obstante, uno de los
mayores problemas que afectan a este tipo de sintetizadores es que su naturalidad se ve
disminuida en comparación con los sistemas basados en concatenación. Sin embargo el
trabajo sobre este tipo de sintetizadores está siendo prioritario a la hora de investigar
sobre síntesis lo que los posiciona como una alternativa muy interesante. (10)
A continuación se van a tratar con más detalle los dos sistemas de síntesis más clásicos: el
de formantes y el de concatenación.
38
Capítulo 3 – Interfaz Persona-Máquina
Carlos Sanz Moreno
Síntesis por formantes
Los sistemas que utilizan síntesis por formantes se basan en la teoría acústica de
producción de habla, que en su forma más sencilla, dice que es posible ver la voz como el
resultado de la excitación de un filtro lineal por una o más fuentes sonoras.
Modelos para la fuente de voz
Las fuentes primarias del sonido son:
Excitación cuasi periódica : Producida por la vibración de las cuerdas vocales.
Ruido : Turbulencia causada por una diferencia de presión a través de una
constricción, es decir, el ruido producido por la fricación.
La fuente de voz usada en los sintetizadores por formantes ha evolucionado desde los
trenes de impulsos filtrados o los dientes de sierra utilizados en los primeros diseños, hasta
modelos matemáticos mucho más complejos que permiten tener control sobre parámetros
como la frecuencia fundamental, la amplitud, la proporción de tiempo que la glotis está abierta
en un periodo, lo abrupto de la forma de onda o la diplophonic vibration (los periodos alternos
son más similares de los adyacentes). Los modelos de forma de onda glotal más recientes
producen espectros que incluyen ceros.
Modelos para la función de transferencia del tracto vocal
En el modelo de síntesis por formantes se dispone de un conjunto de filtros lineales que
tienen como objetivo simular los efectos resonantes del tubo acústico formado por la faringe, la
cavidad bucal y los labios. La función de transferencia de este tracto vocal puede modelarse de
manera general como un conjunto de polos (cada par de polos complejos conjugados produce
un pico local en la parte positiva del espectro, conocido como formante). A veces, la
representación de la función de transferencia del tracto vocal en términos de polos se ha
completado con ceros (antirresonadores) para modelar las propiedades absorbentes del sonido
que tienen los tubos secundarios en articulaciones complejas como las nasales y las vocales
nasalizadas.
39
Diseño e implementación de un asistente personal capaz de
expresar emociones
Parámetros de un sintetizador por formantes
Los parámetros que controlan un sintetizador de formantes son del tipo ‘Ancho de banda
del primer resonador serie’, ‘Frecuencia central del cuarto resonador paralelo’ o ‘Ganancia del
generador de onda glotal’. El control de estos parámetros ofrece una subdivisión entre:
Síntesis por regla : Los parámetros se calculan con arreglo a un conjunto de reglas
dependientes del contexto.
Sistemas de análisis-síntesis : Los parámetros se obtienen por análisis o
parametrización de segmentos de voz natural.
Los sintetizadores de formantes tienen también un conjunto de reglas para predecir las
duraciones de los segmentos sintetizados y la curva de tono fundamental.
Síntesis por concatenación
El otro método más comúnmente utilizado para sintetizar voz es el de síntesis por
concatenación. Esta técnica consiste en almacenar trozos de voz natural pregrabados como
bloques básicos y después concatenarlos para reconstruir una expresión arbitraria.
Selección de unidades de concatenación
El tipo de unidad a concatenar es un parámetro crítico para conseguir una buena calidad
en la voz sintetizada: hay que llegar a un compromiso entre la mejor calidad segmental posible
(a mayor longitud de los segmentos, menos puntos de concatenación y por lo tanto mayor
calidad) y la cantidad de memoria necesaria para almacenar las unidades pregrabadas.
Los efectos coarticulatorios tienden a minimizarse en el centro acústico de un fonema, lo
cual llevó a Peterson a proponer el difonema (trozo de voz que va desde la mitad de un fonema
a la mitad del siguiente fonema) como la unidad más satisfactoria para la concatenación.
En castellano, donde se pueden considerar que existen unos 30 alófonos, el número
máximo de difonemas sería de 302=900 (que muestreados a 16 KHz y 16 bits ocuparían unos 5
Mbytes), pero no todos se utilizan. Por otro lado, puede ser necesaria la inclusión de trifonemas,
que son una extensión a agrupaciones de tres fonemas cuando los efectos de coarticulación son
tan grandes que no es posible la segmentación en difonemas (por ejemplo, oclusiva + ’r’ + vocal).
40
Capítulo 3 – Interfaz Persona-Máquina
Carlos Sanz Moreno
Se puede reducir el tamaño de la memoria necesaria para el almacenamiento de las
unidades de concatenación de las siguientes formas:
Evitando guardar las unidades difonema formadas por consonante + consonante
que no se puedan dar nunca en el lenguaje.
Tratando algunos alófonos en determinados contextos como una unidad de tipo
fonema, como por ejemplo los fricativos sordos.
Grabación de los elementos de concatenación
Los difonemas deben ser grabados por un locutor que sea capaz de controlar y mantener
constante la calidad de la voz, de forma que no haya cambios repentinos en el espectro de la
fuente en el medio de las sílabas.
La unidad (difonema, trifonema o fonema) debe de ser extraída de algún contexto, puesto
que no son unidades que puedan ser grabadas aisladamente. Los contextos posibles son:
En frase natural : Se graban frases diferentes que contienen al menos una unidad.
En frase portadora : Se graba una frase con una estructura fija donde se cambia
solamente una palabra o un par de palabras que contienen la unidad a segmentar.
En palabra aislada .
En logatomos : Palabras cortas que incluyen la unidad requerida y no tienen por
qué tener significado semántico.
Una vez obtenida la grabación, quedan por realizar dos tareas fundamentales:
La identificación o marcación de los fonemas que componen la grabación : Suele
realizarse de forma manual, aunque en los últimos años se han empezado a
aplicar técnicas de reconocimiento de habla para marcar automáticamente las
frases, palabras o logatomos grabados, sobre todo en HMM y en selección de
unidades.
La selección del punto de corte : En este punto pueden destacarse dos estrategias
que buscan la suavización de la transición entre unidades adyacentes para reducir
el efecto sonoro del habla cortada o de la diptonguización. Estas estrategias son:
41
Diseño e implementación de un asistente personal capaz de
expresar emociones
o Escoger el punto de corte mediante un preprocesado o algoritmo de selección
óptimo que tenga como objetivo minimizar la distancia entre el alófono de la
unidad actual y el mismo alófono de la unidad siguiente.
o No utilizar ningún algoritmo de selección óptima para resolver la falta de
continuidad formántica por métodos de suavizado durante la síntesis.
3.1.1.3.2. Comparación de los métodos de síntesis
Al analizar las distintas técnicas disponibles para la síntesis de habla, se observa como los
sintetizadores por concatenación son los que presentan mejores resultados en lo que a calidad
de voz sintetizada y grado de naturalidad se refiere. Sin embargo, los sintetizadores por
formantes presentan una importante ventaja frente a éstos, y es que permiten la manipulación
de las características de la voz, lo cual resulta de gran importancia para la síntesis de emociones,
puesto que las características de la fuente de voz así como del tracto vocal pueden cambiar de
una emoción a otra. En la síntesis por concatenación, por el contrario la fuente de voz es única
ya que corresponde a fonemas pregrabados por un locutor. Además ese locutor debe ser capaz
de controlar y mantener constante la calidad del habla para evitar cambios repentinos en la voz
sintetizada en medio de sílabas.
En cuanto a qué método es mejor para la expresión emocional, Roberto Barra realizó un
experimento de identificación de emociones en voz sintética generada por los métodos HMM y
Selección de unidades. En él se obtuvieron unos resultados excelentes en tanto por ciento de
emociones al escuchar frases breves con texto neutro y habla sintética emocional:
42
Capítulo 3 – Interfaz Persona-Máquina
Carlos Sanz Moreno
El mejor método para sintetizar alegría, enfado y tristeza es el de selección de unidades,
mientras HMM es mejor para sorpresa, miedo, asco y neutralidad.
3.1.2. Reconocimiento de voz e Identificación de Usuario
(SERVIVOX)
El módulo de reconocimiento de voz utilizado está integrado en la aplicación SERVIVOX.
Ésta es consecuencia de multitud de proyectos desarrollados en el GTH. Entre las
funcionalidades que se han ido incorporando cabe citar el reconocimiento de habla
independiente de locutor basado en un vocabulario predefinido y la identificación de usuario,
existen versiones que son capaces de identificar idiomas. Estos procesos se encuentran muy
interconectados dentro del módulo SERVIVOX. De hecho, cada vez que se reconoce una frase
con suficiente confianza, lo siguiente que se hace es analizar a qué usuario se le puede atribuir,
de modo que los procesos de identificación y reconocimiento se puede decir que actúan como
uno solo.
Por todo ello, a continuación se analizará la adaptación del SERVIVOX a la arquitectura de
este sistema, describiendo los procesos desencadenados tras el reconocimiento de una frase, así
como aquellos asociados a la identificación de un locutor.
3.1.2.1. Adaptación del SERVIVOX
El módulo SERVIVOX incorporado en este sistema ha sufrido cambios respecto a la
implementación proporcionada. De hecho, inicialmente estaba preparado para el
43
Alegrí
aEnfado Sorpresa
Tristez
aMiedo Asco
Selección de
Unidades56 71 34 72 25 30
HMM 37 58 49 48 37 60
Habla 70 70 70 60 50 30
Tabla 1. Resultado de prueba de identificación de
Diseño e implementación de un asistente personal capaz de
expresar emociones
funcionamiento mediante comunicaciones tipo Sockets. No obstante, tal y como aparece
reflejado en el Capítulo 6 Subsistema de Comunicaciones, el mecanismo de comunicación de
este sistema es SOAP y por ello el módulo SERVIVOX ha precisado una adaptación.
En concreto, esta adaptación ha consistido en la creación de una nueva clase llamada
“RecoSOAP” cuyo objetivo es la implementación de la funcionalidad de comunicación. En este
sentido, aparece el método FraseReconocida. Este método es llamado desde el cliente (módulo
SERVIVOX) y ejecutado en el módulo de comportamiento. Recibe como parámetros la frase
recibida, el concepto asociado a la frase, el usuario identificado como autor, el número de frases
asignadas a dicho usuario, y la dirección del archivo de audio donde ha sido guardada esa frase.
Así mismo, se han creado un par de métodos auxiliares, “Confirma Locutor Actual” y
“Modo ID”.
La forma de incluir estos métodos de comunicación en el sistema SERVIVOX ha buscado
minimizar los cambios. De hecho, SERVIVOX es un sistema complejo y autónomo. Cualquier
cambio que se produzca en él requiere un importante análisis detallado de las múltiples
consecuencias. Teniendo en cuenta esto, los cambios han consistido, principalmente, en la
modificación del método de comunicación, que en lugar de escribir en un socket llama a los
métodos de RecoSoap. Además, como ahora se necesita más información para transmitir, se ha
modificado para que todos los parámetros puedan ser enviados.
Como resultado, el número de pasos desencadenados como consecuencia de un
reconocimiento varía. A continuación se verá dicho funcionamiento.
3.1.2.2. Proceso de reconocimiento de una nueva frase
El proceso que tiene lugar cuando un nuevo concepto es reconocido es el siguiente:
1. El cliente del SERVIVOX detecta la nueva frase y determina el concepto asociado.
Así mismo, se identifica el usuario que dijo tal frase y se incrementa el número de
frases adjudicadas.
2. El cliente realiza una llamada al procedimiento remoto Frase Reconocida que será
ejecutada en el servidor de SERVIVOX.
44
Capítulo 3 – Interfaz Persona-Máquina
Carlos Sanz Moreno
3. El servidor analiza el concepto reconocido y, en caso de que no sea una nueva
presentación, o no se encuentre ya en un proceso de presentación, actualiza el
número de versión asociado al concepto recibido así como el concepto recibido.
4. El cliente realiza otra solicitud de procedimiento remoto, esta vez a Confirma
Locutor Actual. Este método es ejecutado nuevamente en el servidor.
5. Confirma Locutor Actual devuelve el locutor al cual se le debe asignar la frase
reconocida. Si es una comunicación normal, el locutor devuelto será el mismo que
el recibido en Frase Reconocida. En cambio, si el sistema se encuentra en modo
presentación, los usuarios pueden ser diferentes.
6. El cliente recibe el locutor del servidor y, en el caso en el que fuese distinto del
enviado, eliminaría la frase asignación de la frase a ese locutor y se la adjudicaría
al nuevo.
7. Finalmente el cliente realiza una última llamada al procedimiento remoto Modo
ID, que, nuevamente, será ejecutado en el servidor.
8. El servidor responderá con Modo ID on si se encuentra en un proceso de
presentación, en otro caso este modo estará desactivado.
9. El cliente recibe el Modo ID y, si éste está activado, establece el umbral de
confianza del reconocedor en 0, de esta forma el siguiente reconocimiento será
capaz de admitir frases aunque no las entienda, útil en el proceso de
presentación. Por el contrario, si el Modo ID está desactivado, el sistema
establecerá el umbral de confianza a 0.72, ya que como se concluye en las
pruebas realizadas en el proyecto de Jorge Cancela González (11): “…podemos
sintetizar que un valor demasiado bajo del umbral de confianza provoca excesivos
errores de clasificación al dar por válidas frases con confianza demasiado bajas, y
un umbral de confianza demasiado alto provoca que la exigencia de confianza que
requerimos sea cumplida por pocas de las frases, de forma que las tasas de frases
correctamente clasificadas decaen. Por lo tanto la mejor solución pasa por un
compromiso fijando un umbral de confianza entorno a 0,72.”
Analizando las comunicaciones que tienen lugar entre el cliente y el servidor se puede
elaborar la siguiente figura.
45
Diseño e implementación de un asistente personal capaz de
expresar emociones
3.1.2.3. Pruebas de identificación
Dentro del módulo de identificación de usuario hay un parámetro λ que modela el
funcionamiento del sistema y que debe ser ajustado. Antes de explicar su efecto es necesario
repasar el método de funcionamiento del identificador.
El identificador es un clasificador que se encarga de, juzgando diferentes aspectos de la
voz, determinar la similitud entre una frase de un locutor desconocido y los modelos
almacenados. Por ejemplo, si se supone que una cierta secuencia de vectores de característica
de la voz es tenida en cuenta, tras una serie de interacciones con un usuario el sistema habrá
generado una distribución en función de cómo varíe esta secuencia en cada interacción.
Seguidamente, si se recibe una nueva frase el sistema calculará la distancia entre la secuencia de
características de la frase recibida con respecto a la distribución dada. En función de esta
distancia el sistema decidirá o bien considerar que corresponde al usuario anterior y, por tanto,
recalculará los nuevos parámetros de la distribución o, por el contrario, puede considerar que es
suficientemente diferente del modelo almacenado y, en consecuencia, generará un nuevo
usuario. Esto se puede ver gráficamente en la siguiente figura.
46
Figura 15. Secuencia de mensajes del reconocedor.
Capítulo 3 – Interfaz Persona-Máquina
Carlos Sanz Moreno
Esta figura corresponde al modelado de una de las características de la voz. No obstante,
este mismo sistema se aplica a una vector de características creando un sistema suficientemente
robusto.
Como se puede ver, inicialmente hay una distribución determinada y aparece una nueva
frase con una secuencia de característica que está representada por el punto rojo. El sistema, en
este momento, tiene dos alternativas: generar un nuevo usuario (creando una nueva
distribución basada en la nueva muestra) o incluir la muestra en la distribución del usuario
existente (modificando la distribución asociada a éste). Uno de los determinantes de elegir una u
otra opción es la distancia entre el punto y la distribución. No obstante, existe una forma de
controlar a partir de qué distancia es conveniente crear un nuevo usuario o no, esto es el
parámetro lambda.
En concreto valores bajos de lambda favorecen la creación de nuevos usuarios. Como
ventaja presenta la posibilidad de reconocer automáticamente un nuevo usuario. Sin embargo
presenta un problema asociado a la posibilidad de identificar a un usuario conocido como un
nuevo usuario. Por el contrario, valores altos de lambda favorecen la identificación de usuarios
antiguos. En este caso se favorece que las nuevas frases sean asignadas a usuarios ya conocidos.
47
Figura 16. Alternativas de identificación de usuarios: usuario nuevo versus usuario conocido
Diseño e implementación de un asistente personal capaz de
expresar emociones
No obstante, como contrapartida, se reduce la capacidad del sistema para reconocer a nuevos
usuarios de forma autónoma, siendo necesario que un usuario maestro lo indique.
En este sentido existe un compromiso entre detección de nuevos usuarios e identificación
de los ya existentes. Por ello se han realizado unas pruebas para determinar qué valor de lambda
resultaría óptimo para el propósito del sistema.
El experimento ha consistido en dos pruebas:
1. Determinar a partir de un conjunto de usuarios de los que se tiene una historia, la
cantidad de frases que es capaz de identificar correctamente.
2. Determinar a partir de un número de usuarios conocidos, cuántos cambios de
usuarios puede reconocer con éxito.
3.1.2.3.1. Modo 1
El funcionamiento de este experimento es el siguiente. Se tiene un conjunto de usuarios
que serán todos los que se van a utilizar en el estudio y para cada uno se dispone de una serie de
frases grabadas. De cada usuario se proporcionan parte de esas frases como muestra para el
sistema, lo que se denominará historia. Una vez establecidas estas condiciones iniciales, se
procederá a pasar el resto de frases de cada usuario. El objetivo es analizar la tasa de acierto, es
decir, la cantidad de frases que es capaz de reconocer correctamente respecto al número de
frases totales. Matemáticamente:
Los resultados de este experimento se adjuntan en el apéndice Experimento de
identificación. Cabe citar que se han utilizado muestras procedentes de dos bases de datos
diferentes, GTH y DISAM.
A la vista de los resultados sobre DISAM se puede concluir que para un número fijo de
usuarios (30) y del factor lambda (100), cuanto mayor sea la longitud de la historia, mejores
resultados se obtienen. No obstante, con vistas a su aplicación sobre un sistema resulta
imposible establecer historias excesivamente grandes ya que necesitaría realizar un proceso de
presentación demasiado largo. Por ello se busca un compromiso longitud de historia versus tasa
de acierto, que se concreta en una historia de 5 frases.
48
Capítulo 3 – Interfaz Persona-Máquina
Carlos Sanz Moreno
Utilizando este resultado como dato y fijando también el número de usuarios se puede ver
como la variación de lambda altera la tasa de aciertos. En concreto, valores entre 3 y 4,5
maximizan los resultados para la base de datos DISAM con 30 usuarios y una historia de 5 frases.
Sin embargo de este rango de valores de lambda óptimos se elegirá el de 4,5, ya que, por la
forma de actuar de lambda, éste es un valor que reduce el número de usuarios inventados, lo
cual es útil para esta prueba, que busca identificar ya existentes y no reconocer nuevos usuarios.
49
Figura 17. Modo 1 con 30 locutores y lambda 100
Figura 18. Modo1 con 30 locutores e historia de 5 frases
Diseño e implementación de un asistente personal capaz de
expresar emociones
Con el factor lambda definido como 4,5, el número de usuarios establecido como 30 y la
longitud de la historia fijada en 5 frases se han realizado pruebas sobre la base de datos GTH
para determinar si el orden de identificación influye en las tasas de acierto. El resultado es que
los valores de la tasa varían desde 0.839 hasta 0.960 en función de cuál sea el locutor inicial. No
obstante, el valor medio de aciertos es de 0.8739 por lo que la tasa de aciertos en dichas
condiciones es bastante buena.
3.1.2.3.2. Modo 2
En esta ocasión el experimento consiste en, dada una historia de un número reducido de
usuarios, analizar la capacidad para detectar nuevos usuarios de los que no se tiene ninguna
historia. Como antes, son fundamentales los parámetros: historia, número de locutores y
lambda. No obstante, en esta ocasión la forma de analizar los resultados será mediante los
valores Recall, que indica qué porcentaje de los cambios de usuario existentes se han detectado,
y el valor Precisión, que representa el porcentaje de cuántos cambios de los detectados son
realmente cambios correctos. Matemáticamente.
50
Figura 19. Modo 1 con 30 locutores, historia de 5 y lambda de 4,5
Capítulo 3 – Interfaz Persona-Máquina
Carlos Sanz Moreno
En esta ocasión se ha utilizado únicamente la base de datos GTH y se ha realizado la
prueba bajo dos contextos diferentes. El primero consiste en 1 locutor conocido con una historia
de 5 frases, la lambda se irá modificando y se analizará la Precisión y el Recall para una población
de 30 locutores.
Como se ve en los resultados, pese a que Recall sí obtiene valores cercanos al 1, esto
implica que se detectan correctamente casi el 100% de los cambios existentes. Los valores de
precisión, por el contrario, son excesivamente bajos indicando que el número de cambios que se
han detectado es mucho mayor que los que existen realmente. Por tanto el sistema está
pecando de crear con mucha facilidad usuarios nuevos. No obstante, al aumentar lambda y
dificultar la creación de usuarios no hay mejoras sustanciales, sino más bien un empeoramiento
de Recall.
51
Figura 20. Modo 2 con 1 locutor, historia 5 y población de 30.
Diseño e implementación de un asistente personal capaz de
expresar emociones
El otro contexto consiste en 10 locutores conocidos, una historia de 30 frases para cada
uno de ellos y una población de, nuevamente, 30 locutores. Análogamente se variará lambda y
se analizará Precisión y Recall.
En este caso se ve que los resultados, lejos de mejorar, se empeoran tanto en precisión
como en Recall.
En conclusión, el sistema presenta resultados muy buenos para la identificación de frases
de usuarios conocidos, tasas del 90% de éxito. No obstante, los resultados para la detección de
nuevos usuarios son bastante pobres, siendo necesario, en consecuencia, mejorar este último
aspecto.
3.1.3. Síntesis de voz con emociones
La inclusión del sintetizador de voz con emociones permite la comunicación del sistema
con el entorno por medio de la voz. Concretamente, el módulo sintetizador de emociones se
encuentra corriendo en un servidor remoto al cual no se tiene acceso más que para solicitar la
síntesis de determinadas frases. En este sentido el trabajo realizado en este sistema ha estado
encaminado únicamente a crear las herramientas necesarias para el manejo de las frases que se
desean sintetizar así como para la reproducción de los archivos de audio generados. Para
52
Figura 21. Modo 2 con 10 locutores, historia de 30 y población de 30.
Capítulo 3 – Interfaz Persona-Máquina
Carlos Sanz Moreno
analizar esto en detalle, primeramente se debe tener claro qué necesita el sintetizador para su
correcto funcionamiento.
El servidor de síntesis necesita un archivo de texto en el cual aparezca la frase a sintetizar.
Además necesita que a la hora de invocar la síntesis se precise la emoción con la que se quiere
sintetizar dicha frase, así como el locutor y el método de síntesis. Un ejemplo del comando de
empleado para solicitar la síntesis será: “'tts/client/client.sh joaquin neutral multisyn
tts/client/text2synth.txt ping.wav” En este caso se ha solicitado la síntesis con emoción neutral y
voz joaquin mediante el método multisyn del archivo text2synthtxt. El resultado será el archivo
de audio ping.wav, este archivo podrá ser reproducido y contendrá el habla asociado a la frase
del archivo.
Con estas premisas el módulo creado para gestionar esto consiste en un servidor que
recibe solicitudes del módulo de comportamiento. Las solicitudes consistirán en una emoción,
una relación con el usuario y cuatro parámetros. El servidor utiliza la relación con el usuario y los
cuatro parámetros para encontrar la frase a sintetizar dentro de una lista de disponibles (si algún
parámetro es innecesario estará rellenado con la palabra “IRRELEVANTE”). Una vez encontrada
la frase se encargará de enviar la petición de síntesis al servidor remoto utilizando la emoción
proveniente del módulo de comportamiento. Una vez generado el archivo .wav se encargará de
reproducirlo y volverá al estado inicial para atender nuevas funcionalidades. Este proceso
aparece representado en la siguiente figura.
53Figura 22. Proceso de síntesis
Diseño e implementación de un asistente personal capaz de
expresar emociones
Hay que decir que el proceso estrictamente de síntesis (generación del archivo .wav a
partir del .txt) no está optimizado ya que se accede a una máquina en la que se encuentra el
servidor de síntesis de forma remota, aparte del hecho de que la reproducción del archivo .wav
comienza cuando se termina de generar. Por todo ello resulta un proceso relativamente lento.
Debido a esto el servidor implementado incluye un mecanismo de concurrencia llamado Ping-
Pong. Este mecanismo consiste en que, si se deseasen sintetizar varias frases, se crearían dos
hebras (Ping y Pong) entre las que se reparte el conjunto de frases a sintetizar. De este modo
mientras que una hebra está esperando la generación de su archivo de audio, la otra está
reproduciendo el suyo. Así se consigue que el tiempo que pasa entre frases se reduzca
proporcionando la sensación de discurso continuo. La siguiente figura representa este
mecanismo.
Otra de las particularidades implementadas en el servidor consiste en la carga dinámica de
la lista de frases. Las frases disponibles para la síntesis se encuentran en un archivo de texto
“frases.txt”. Este archivo es leído cada vez que una solicitud de síntesis llega de modo que la
lista de frases puede actualizarse en tiempo de ejecución.
Finalmente cabe mencionar otra de las características implementadas, esta es la
aleatoriedad de frases. Existen ocasiones en las que se reciben solicitudes de síntesis de un
concepto determinado con relativa frecuencia. En este caso se puede producir un efecto de
54
Figura 23. Mecanismo Ping-Pong
Capítulo 3 – Interfaz Persona-Máquina
Carlos Sanz Moreno
monotonía si a ese concepto le corresponde una única frase. Para solucionarlo se ha habilitado
un número con cada frase. Éste número es un indicador de la cantidad de veces que, al
solicitarse un determinado concepto, se sintetizará dicha frase. Por ejemplo.
[JUEGO GANAR] 3 He ganado. 1 Te he ganado. 2 He ganado soy muy feliz.
En este caso, al solicitar la síntesis del concepto [JUEGO GANAR], el servidor tiene tres
alternativas con un valor para cada una de ellas, de modo que elegirá cuál debe ser sintetizada
mediante una variable aleatoria. En concreto particionará el espacio muestral en 6 intervalos
(suma de los números) asignando 3 a la primera frase, 1 a la segunda y 2 a la última. Efectuará
un sorteo y en función de cuál sea el intervalo al que pertenece el resultado se elegirá una u otra
frase.
3.2. Interfaz Visual
Los motivos que llevan a incluir una interfaz de este tipo parten de la necesidad de alguna
forma de captar información del entorno sin solicitarla (agente no intrusivo). Es decir, si por
ejemplo el sistema realiza cualquier acción cuando hay alguien cerca de él, deberá ser capaz de
detectar esa presencia sin que se esté constantemente preguntando si hay alguien cerca. Con
este objetivo los nuevos medios de tratamiento de imágenes resultan muy útiles pues permiten
recabar multitud de información del entorno, tan heterogénea como si hay o no luz o si el
usuario sonríe o está enfadado.
Como medio de salida visual para información se ha utilizado la pantalla. No obstante, con
la idea de que el sistema sea aceptado por la mayoría de los usuarios, esta forma de
comunicación debe utilizarse en situaciones muy puntuales ya que el objetivo es mitigar la
sensación de estar dirigiéndonos a máquinas.
Para la realización de esta interfaz ha sido fundamental el trabajo de Jorge Miguel Peñalba
Zambrano y Daniel García Moral, ambos estudiantes del Laboratorio de Sistemas Electrónicos
Digitales durante el curso 2008-2009, que realizaron una práctica innovadora sobre detección de
emociones mediante Opencv. (12)
55
Diseño e implementación de un asistente personal capaz de
expresar emociones
A continuación se profundizará en el empleo del tratamiento de imágenes mediante la
librería Opencv.
3.2.1. Estado del arte: Reconocimiento de objetos
El proyecto de Ainhoa Montero de Espinosa constituye un gran ejemplo de aplicación de
interfaces visuales en entornos inteligentes. Aunque sus objetivos iban más allá del mero
reconocimiento de objetos (contemplaba el seguimiento), resulta un interesante punto de
partida (13).
El objetivo del reconocimiento de objetos consiste en identificar y localizar la posición de
un objeto dentro de una imagen. Existen numerosos métodos para realizar esta tarea pero
fundamentalmente se pueden agrupar en dos categorías:
Métodos explícitos o basados en características. Estos métodos utilizan datos
concretos del objeto como el color, la textura, la geometría, etc. Su mayor ventaja
es su bajo coste computacional, haciendo que el tiempo de ejecución disminuya,
aumentando la velocidad de seguimiento.
Métodos implícitos o basados en modelos. Estos tipos de algoritmos no conocen
ningún tipo de información previa acerca del objeto, sino que extraen a través de
unas muestras o patrones de entrenamiento la información necesaria para
distinguir los objetos que se desean detectar. Son más robustos que los métodos
basados en características pero de más alto coste.
A continuación se hablará sobre cada uno de ellos.
3.2.1.1. Métodos basados en características
3.2.1.1.1. Color
Los algoritmos basados en color sobre todo se utilizan en aplicaciones relacionadas con la
detección de caras y el seguimiento de las manos. Consisten en definir unos umbrales de
crominancia (Cr1, Cr2) y (Cb1, Cb2) y aquellos píxeles que caigan en ese rango (Cr1 < Cr < Cr2) y (Cb1 <
Cb < Cb2) se clasificarán como píxeles de interés.
56
Capítulo 3 – Interfaz Persona-Máquina
Carlos Sanz Moreno
En general, utilizar una técnica basada solamente en color no es suficiente para detectar o
realizar un seguimiento de objetos, sobre todo, si se trata de caras o manos. Últimamente,
numerosas aplicaciones combinan el análisis de formas con la segmentación por color para la
localización y seguimiento de cabezas y caras en una secuencia de imágenes.
3.2.1.1.2. Múltiples características
Estos algoritmos se basan en la detección de un todo a partir de la detección de las
diferentes características.
Una implementación típica de este algoritmo para el reconocimiento de caras comienza
por la identificación de regiones del color de la piel (descrita en el apartado anterior). Si la forma
de la región se asemeja a una elipse, pasa a ser un candidato. Finalmente, para verificar si el
candidato corresponde con una cara, se buscan dentro de la región las características faciales
(ojos, boca, nariz, cejas, etc).
3.2.1.1.3. Esqueletización
La esqueletización consiste en transformar una forma o un objeto compuesto por un
conjunto de píxeles en un objeto formado por líneas conservando sus propiedades topológicas.
El resultado que se obtiene se denomina esqueleto. Utilizando este método se reduce
significativamente la cantidad de información para procesar, agilizándose la fase de
reconocimiento.
En primer lugar, se segmenta la imagen que se está analizando para poder diferenciar los
diferentes objetos que la conforman. Una vez obtenida las distintas regiones se realiza una
operación morfológica denominada adelgazamiento. Esta operación elimina la información
redundante, lo cual facilita la extracción de las características topológicas, además de reducir el
tiempo de acceso y el espacio que ocupa en memoria.
Para reconocer un objeto se analiza las características del esqueleto de la imagen: número
de líneas que lo componen, los ángulos que forman entre ellas, etc. Se comparan las
características del esqueleto actual y el esqueleto del objeto que se desea detectar, y si
coinciden, se verifica que se trata de dicho objeto.
57
Diseño e implementación de un asistente personal capaz de
expresar emociones
Los esqueletos proporcionan abstracción de las características geométricas y morfológicas
del objeto, de forma que al almacenarse sólo parte de la información también se puede ver
como un proceso de compresión de datos. La esqueletización es muy útil para reconocer dentro
de una imagen objetos alargados: caracteres, polígonos, o manos.
3.2.1.2. Métodos basados en modelos
Estos métodos obtienen la información de forma implícita a través de un aprendizaje de
patrones. Con ello clasifican las señales que reciben según la información que tienen a priori. Por
lo tanto, para realizar esta tarea es necesario construir un clasificador cuyo objetivo es asignar
un nombre a un conjunto de características correspondientes a un patrón.
Este tipo de técnicas se caracterizan por tener una primera fase de entrenamiento, en la
cual aprenden, a partir de un conjunto de muestras, las características que componen el objeto
que se desea detectar. Dependiendo del método que se utilice, el aprendizaje consistirá en un
algoritmo u otro. A continuación se van a describir tres tipos de clasificadores: redes neuronales,
k vecinos más cercanos y adaboost.
3.2.1.2.1. Redes neuronales
58
Figura 24. Esqueletización de la mano (13)
Capítulo 3 – Interfaz Persona-Máquina
Carlos Sanz Moreno
Los clasificadores basados en redes neuronales artificiales (RNA) se inspiran en el
funcionamiento del sistema nervioso animal. La red se compone de unidades de procesamiento
llamadas neuronas. Cada neurona está formada por una serie de entradas y una única salida, y
pueden recibir como entrada la salida de otras neuronas. Cada señal de entrada pasa a través de
una ganancia o peso sináptico (wij en la Figura). Se considera como la entrada neta la suma
ponderada de todas las entradas reales. Cada neurona transforma la entrada neta mediante una
función de activación para determinar su salida.
Las neuronas deben ser previamente entrenadas para reconocer patrones. Durante el
entrenamiento aprenden por la actualización o cambio de los pesos sinápticos que caracterizan
a las conexiones. Los pesos son adaptados de acuerdo a la información extraída de los patrones
de entrenamiento nuevos que se van presentando. Existen dos métodos de aprendizaje:
Supervisado. Las muestras de entrenamiento se componen de varias parejas de
patrones de entrada y salida. Un agente externo, denominado supervisor o
maestro, comprueba si la salida que genera la RNA coincide con la esperada. En el
caso de que no coincidan modificará los pesos de las conexiones.
No supervisado. En este caso el conjunto de entrenamiento lo componen
únicamente los patrones de entrada. La red no obtiene información del entorno
acerca de si es correcta o no la salida generada, por lo que debe aprender a
adaptarse basándose en las experiencias recogidas de entrenamientos anteriores.
Las redes neuronales han resultado ser muy eficientes para el reconocimiento de
caracteres, de objetos y para robots móviles. La principal ventaja es la capacidad de clasificar
patrones complejos. Sin embargo, su mayor inconveniente es que la arquitectura de la red debe
59
Figura 25. Ejemplo de una neurona artificial
Diseño e implementación de un asistente personal capaz de
expresar emociones
estar muy bien diseñada (el número de capas, el número de nodos, etc) para su correcto
funcionamiento.
3.2.1.2.2. K vecinos más cercanos
Las técnicas de clasificación basadas en los vecinos más cercanos (KNN) es uno de los
planteamientos más clásicos de reconocimiento de patrones. Son sencillos y rápidos, y ofrecen
una valiosa información sobre el problema de clasificación que se quiere abordar.
Su funcionamiento es el siguiente. Primero deben almacenarse los vectores característicos
y las etiquetas de los ejemplos de entrenamiento. Durante la clasificación, se evalúa la muestra
desconocida y se representa con un vector en el espacio característico. Se calcula la distancia
entre dicha muestra y los vectores almacenados y se eligen los k más cercanos. La muestra se
clasificará en la clase a la que pertenezcan la mayoría de los ejemplos seleccionados.
En la figura se ilustra el funcionamiento de este algoritmo. La muestra desconocida que se
desea clasificar es el círculo rojo. Si se escoge una k = 4 se clasificaría en la clase triángulo. Sin
embargo, para una k = 8 la muestra pertenecería a la clase cuadrado.
La efectividad de los algoritmos basados en vecindad reside en la métrica que se utilice.
De esta manera, para mejorar la robustez de este algoritmo frente a vectores aislados, se han
propuesto algunas modificaciones. Éstas se aplican en la elección del conjunto de
entrenamiento, eliminando aquellos ejemplos con una desviación muy grande. Además, se han
60
Figura 26. Ejemplo del algoritmo KNN para k = 4 y k = 8
Capítulo 3 – Interfaz Persona-Máquina
Carlos Sanz Moreno
diseñado técnicas de condensación para hacer más rápido el proceso de clasificación, en las
cuales las muestras de una clase que se encuentren rodeadas completamente de muestras de la
misma clase son eliminadas, ya que no influyen en la clasificación.
3.2.1.2.3. Adaboost
Adaboost (Adaptive Boosting) es una técnica de clasificación que consiste en formar, a
partir de un conjunto de clasificadores “débiles”, un clasificador “fuerte”, el cual entrega la
respuesta final del algoritmo. Los clasificadores débiles tienen unos resultados muy pobres, pero
combinando varios de ellos se puede conseguir una tasa de detección elevada ya que esta crece
de forma exponencial. En contraposición, la tasa de falsos positivos es demasiado alta (30%)
haciendo que disminuya su fiabilidad.
En un ejemplo mediante características tipo Haar la idea consiste en que en cada
clasificador débil se aplican las plantillas de la figura sobre la ventana de búsqueda. La suma de
los píxeles que caen sobre la parte blanca se substrae de la suma de los píxeles que caen sobre la
parte negra. Si el resultado está por encima de un umbral (que se habrá determinado en el
entrenamiento) la ventana se clasificará como el objeto que se quiere detectar. Cada una de
estas características no son capaces de detectar un objeto por sí solas, de ahí el nombre de
“débil”, pero pueden dar indicio de su existencia.
61
Figura 27. Plantillas de características tipo Haar propuestas por Viola y Jones y Lienhart
Diseño e implementación de un asistente personal capaz de
expresar emociones
Además, disponiendo a los clasificadores en cascada, de menor a mayor complejidad, se
consigue que las primeras etapas eliminen un gran número de negativos (los más fáciles) con
muy poco procesamiento y las últimas etapas tengan tiempo suficiente para clasificar
correctamente los casos más complejos.
3.2.2. Tratamiento de Imágenes (Opencv)
Como se ha comentado, para la inclusión de esta interfaz es fundamental el trabajo
realizado en LSED por Jorge Miguel Peñalba Zambrano y Daniel García Moral. Estos alumnos
partieron de un sistema basado en la librería Opencv capaz de detectar las caras del usuario y, a
partir de él, fueron capaces de distinguir entre ellos, el sistema podía identificar la emoción del
usuario a partir de la expresión facial. Esto fue realizado mediante el entrenamiento del sistema.
De esta forma se crearon varios clasificadores. Uno para distinguir usuarios, otro para detectar
sonrisas, otro para detectar enfado, sorpresa, etc… Sin embargo, la creación de cada clasificador
era dependiente de usuario. Es decir, creaban un clasificador de sonrisas de Jorge y un
clasificador de sonrisas de Daniel, por lo que en este proyecto se ha considerado no incluir esta
funcionalidad ya que lo que se pretende es crear un sistema capaz de adaptarse a cualquier
usuario. En este sentido se han incluido funcionalidades más básicas, esto es: detectar la luz,
detectar caras y detectar movimientos. Atendiendo a dichas funcionalidades sí se obtiene un
clasificador independiente de usuario.
En cuanto a la estructura de este módulo cabe decir que es un cliente que se comunica
con el módulo de comportamiento para, por un lado informar de la situación (luz, movimiento,
cara…) y, por el otro, para modificar el estado emocional acorde, por ejemplo, al hecho de que
se haya ido la luz.
62
Figura 28. Esquema de un clasificador en cascada
Capítulo 3 – Interfaz Persona-Máquina
Carlos Sanz Moreno
A continuación se detallará los procesos seguidos para determinar luz, movimientos y
caras.
3.2.2.1. Detección de luz
Para la detección de luz el funcionamiento es muy simple. Si la suma de los valores de
cada uno de los pixeles que componen la imagen es menor que un umbral entonces significa que
no hay luz. Por el contrario, si la suma es mayor significa que sí hay luz. No obstante, al tratarse
de una medición sujeta a importante fuentes de ruido (sombras, ruidos de oscuridad de la
propia cámara), es necesario elaborar un sistema que filtre los resultados promediando con
cierta cantidad de mediciones. De esta forma se crea un filtro paso bajo que elimine las
variaciones rápidas. La siguiente figura muestra este concepto.
Como se puede ver existe una historia de 5 posiciones en las cuales se almacena el valor
de la suma de los pixeles de cada imagen. Cada vez que se toma una nueva imagen, esto ocurre
aproximadamente cada 100 ms, el sistema calcula el valor de la suma y lo almacena en la
memoria eliminando la posición más antigua. Realiza el promediado de todos los valores y,
comparándolo con el umbral de luminosidad (2x107) determina si hay o no luz,
comunicándoselo al modelo de comportamiento como un concepto que puede ser “luz” o
“sinLuz”.
63
Figura 29. Filtrado para detección de luz
Diseño e implementación de un asistente personal capaz de
expresar emociones
3.2.2.2. Detección de movimientos
La detección de movimientos sigue un funcionamiento análogo al anterior, no obstante,
en esta ocasión no se suman los pixeles de una imagen. El método consiste en restar a la imagen
anterior la nueva imagen. De esta forma, si la diferencia entre imágenes supera un valor
determinado (1.5x106), se puede considerar que ha ocurrido un cambio. Por el contrario, si el
valor diferencia es inferior a un cierto umbral, se puede considerar que no ha tenido lugar un
cambio y, por lo tanto, un movimiento. Aunque en este método también está sujeto a posibles
ruidos, un filtrado similar al caso anterior no es tan apropiado pues interesa que se detecten los
movimientos aunque sean más o menos sutiles. En este sentido se puede ajustar el umbral de
modo que el cambio de la imagen anterior a la actual tenga que ser mayor para poder
considerar un cambio. Teniendo en cuenta que la imagen que se está analizando es de una
resolución de 320x240 pixeles, el umbral de 1.5x106 significa el cambio en, más o menos, 20
pixeles.
3.2.2.3. Detección de caras
Esta es la funcionalidad más compleja que implementa la interfaz visual. Se basa en la
detección de caras con independencia del usuario. Para ello se ha utilizado el clasificador de
ejemplo que suministra la librería Opencv. Este clasificador está entrenado para detectar los
rasgos de una cara en cualquier imagen y se basa en la técnica Adaboost que, como se ha
detallado anteriormente, es capaz de conseguir unas tasas de éxito de detección aceptables,
mediante el empleo de diferentes etapas compuestas, cada una de ellas, por clasificadores
sencillos.
No obstante, dado que el clasificador es independiente de usuario, las condiciones de
detección están un poco relajadas de modo que sea posible identificar las caras de diferentes
personas. Sin embargo esto presenta el problema de la posible ocurrencia de falsos positivos,
esto significa que se detecta una cara donde realmente no hay ninguna. Para solventar este
problema se computa por periodos de tiempo. Es decir, el sistema analiza una imagen cada
cierto tiempo y, cuando ha realizado un número determinado de análisis, determina si había
cara o no. En concreto, el muestreo de imágenes sigue realizándose cada 100 ms
aproximadamente, mientras que el análisis de muestras se realiza cada segundo. La condición de
ocurrencia es que si durante un segundo se han detectado cinco o más caras (el máximo de
caras detectable por segundo según la frecuencia de muestreo es 10), lo que significa que había
64
Capítulo 3 – Interfaz Persona-Máquina
Carlos Sanz Moreno
una cara por lo menos el 50% del tiempo, el sistema interpreta que existe una cara y lo comunica
al módulo de comportamiento mediante el concepto “hayCara”. Por el contrario, si se detectan
menos de cinco caras, esto significa una presencia inferior al 50% de tiempo aproximadamente,
el sistema no enviará ningún mensaje relacionado con la presencia de caras.
3.3. Interfaz Física
Hasta ahora se ha hablado de interfaces útiles para intercambiar información, pero existe
un inconveniente: el sistema es abstracto. Esto significa que los usuarios son capaces de
comunicarse de forma fácil mediante voz y el sistema es capaz de obtener información de forma
no intrusiva, pero, realmente, el interlocutor de la persona no existe como ente físico. Por tanto,
es necesaria la presencia de una parte física a la que la persona pueda asociar como
representación del sistema. En este proyecto se ha creado una cara robótica capaz de gesticular
algunas expresiones emocionales. Esta cara hace las veces de interlocutor para las personas que
ahora sí tienen algo a lo que dirigirse, cuando saluda o cuando juega con el sistema, la cara
expresa su estado interno realimentando al usuario. De esta forma se diluye la sensación de
estar interactuando con una máquina convencional.
Por otro lado, se ha incluido un brazo robótico asociado a un juego, en concreto las tres en
raya. De esta forma, el usuario puede interactuar de forma física con el sistema sin necesidad de
dirigir una mirada a la pantalla. Para esta interfaz ha sido fundamental el trabajo realizado por
Enrique Fueyo Ramírez y Juan Carlos Hernández Munuera, alumnos del Laboratorio de Sistemas
Electrónicos Digitales en el curso 2008-2009, que trabajaron en la creación de un sistema de
sensores que permitiese jugar al tres en raya contra la máquina mediante el movimiento de
piezas (14).
En resumen, las interfaces físicas son necesarias para conseguir que una persona acepte
un sistema emocional y además resultan de utilidad a la hora de proporcionar otro enfoque en la
interacción persona máquina.
3.3.1. Brazo Robótico
65
Diseño e implementación de un asistente personal capaz de
expresar emociones
El brazo robótico ha sido incluido en este capítulo pues, en esencia, es una interfaz
persona máquina ya que permite la interacción de la máquina con el entorno mediante su uso.
No obstante en este sistema esta interfaz no está aprovechada en toda su capacidad pues
únicamente se incluye esta característica como medio para poder jugar a las tres en raya sin
proporcionarle otra utilidad. El requisito para que pudiera ser considerado una interfaz sin
ningún tipo de limitación es que permitiera ser utilizado para diversos objetivos. Es decir, como
por ejemplo para hacer algún gesto, para intentar interaccionar con el usuario dando la mano
cuando se presenta, etc. No obstante, en el caso que se expone, el brazo robótico tendrá la
misión de mover fichas. A continuación se puede ver una imagen.
Como se puede ver el ingenio no es más que un conjunto de servos que controlan un
brazo articulado terminado en unas pinzas capaces de abrirse y cerrarse. En el tablero de juego
hay una serie de orificios donde se sitúan sensores de infrarrojos que detectan la presencia de
una ficha o no en dicho punto. Más información sobre esta implementación puede ser
encontrada en el apartado de tres en raya físico en el Capítulo 4.
3.3.2. Cara Robótica
La inclusión de una cara robótica responde a la necesidad de crear un símbolo al que una
persona pueda dirigirse a la hora de interaccionar. Resulta muy complicado, si no imposible,
crear un sistema emocional verosímil sin ningún elemento físico con el que se pueda mantener
un contacto visual. De hecho, solamente con la expresión emocional de la síntesis de habla
resulta ambigua la expresión de algunas emociones. En este sentido la cara robótica juega ese
doble papel. Por un lado actúa como símbolo del sistema permitiendo que el usuario tenga algo
66
Figura 30. Brazo robótico
Capítulo 3 – Interfaz Persona-Máquina
Carlos Sanz Moreno
físico con lo que interrelacionarse y, por otro lado, matiza o refuerza la expresión de las
emociones.
La cara robótica que se ha utilizado en este proyecto es heredada del trabajo realizado en
una beca de la UPM sobre innovación educativa. El diseño está extraído de la cara del robot
Urbano. Este robot pertenece a un proyecto que está realizado de forma conjunta por el Grupo
de Automática DISAM de la ETSII y por el GTH de la ETSIT y cuyo objetivo es crear un robot guía
de museo que presente comportamiento emocional (más información acerca de este sistema
puede ser encontrada en el Capítulo 5). No obstante, el diseño presenta una serie de limitaciones
a la hora de cumplir uno de los objetivos propuestos, la expresión emocional. Antes de entrar
en detalle se describirá brevemente la cara utilizada que, por su bigote, ha sido denominada
Groucho.
Como puede verse el diseño de ambas caras es el mismo y presenta cinco servos que
permiten:
Movimiento independiente de cejas.
Movimiento independiente de labios (labio derecho o labio izquierdo).
Movimiento conjunto de párpados.
67
Figura 31. A la izquierda Groucho a la derecha robot Urbano
Diseño e implementación de un asistente personal capaz de
expresar emociones
Con estas características los gestos disponibles para expresar emociones son los
siguientes:
Si se recuerda el número de emociones distintas que soporta el sintetizador usado, esto
es, alegría, neutral, tristeza, miedo, enfado, asco y sorpresa, se puede ver que las emociones de
asco y sorpresa no tienen un gesto correspondiente. No obstante, para sorpresa existe una
solución basada en la transición de la cara. Si se abren mucho los ojos, unido a la síntesis de una
frase con sorpresa, es posible dar la sensación de esa emoción. Para el caso de asco la cara
puede cerrar los ojos y torcer la boca pero este gesto no es unívoco por lo que la expresión de
dicha emoción recae en el sintetizador de habla.
Por otro lado, la cara permite generar gestos intermedios que proporcionan más riqueza
expresiva al sistema. En la siguiente imagen aparece un ejemplo de esto.
68
Figura 32. Gestos (de arriba izquierda abajo derecha) enfado, neutral, alegría, tristeza y miedo
Figura 33. Cara de leve enfado
Capítulo 3 – Interfaz Persona-Máquina
Carlos Sanz Moreno
Este gesto puede ser entendido como desconfianza a lo que ocurre, o disgusto frente a
una situación pero sin llegar a enfadarse mucho, etc.
En cuanto a la integración de la cara en el sistema global, cabe decir que es un servidor
que implementa procedimientos para cada gesto. Estos procedimientos son llamados desde un
cliente implementado en el módulo de comportamiento.
Por último, el control de los servos se realiza con una placa controladora de servos Servo 8
Torque Board de NetMedia. Entre las características de esta placa destaca la capacidad de
gobernar hasta 8 servos controlando su consumo en todo momento, de esta forma se puede
abre un camino de realimentación del movimiento. Otra característica es la interfaz RS-232 de
control. Es decir se comunica mediante puerto serie, concretamente con los siguientes
parámetros:
Bits por segundo: 19200
Bits de datos: 8
Paridad: ninguno
Bits de parada: 1
3.3.3. Detector de Caricias
La implementación de este sensor de caricias es fruto del trabajo desarrollado en el
Laboratorio de Componentes Electrónicos (LCEL) durante el curso 2008/2009 por los alumnos
Enrique Fueyo Ramírez, Juan Carlos Hernández Munuera y Daniel García Moral. La práctica se
basaba en la realización de una cabeza animatrónica, empleando dispositivos digitales
programables y electrónica analógica discreta. En este sentido se planteaba la inclusión de
diversos tipos de sensores como puede ser temperatura, acelerómetros infrarrojos y
ultrasonidos, con la electrónica necesaria para hacerlos funcionar de manera autónoma.
Como resultado de aquél trabajo se ha heredado un sensor infrarrojo CNY70. Este sensor
suele ser utilizado por robots seguidores de líneas. No obstante, en esta ocasión su objetivo es
diferente. Pretende detectar las posibles caricias que se le apliquen al sistema mediante la
proximidad de la mano del usuario. Esta información es recogida y enviada mediante el puerto
paralelo. De esta forma el sistema puede detectar la presencia o no de un contacto, ya que este
sensor está ajustado para que la distancia de detección sea muy corta.
69
Diseño e implementación de un asistente personal capaz de
expresar emociones
El control de este sensor por parte del sistema se realiza mediante el módulo de
comportamiento. En concreto, este módulo solicita cada cierto tiempo una lectura del sensor,
típicamente cada centena de milisegundo. De esta forma, teniendo en cuenta el tiempo que
puede tardar una persona en pasar la mano por encima, el sensor puede interpretar una misma
caricia como varias sucesivas. Además se presenta un problema de ruido inherente a la mayoría
de sensores. Este problema consiste en que posibles alteraciones desconocidas del entorno
pueden ser interpretadas como una caricia. Para resolver ambos problemas se ha implementado
una capa de control de dicho sensor, cuyo objetivo es filtrar posibles falsas caricias y detectar
correctamente una única caricia.
Para la realización del filtrado de una caricia se ha creado una historia de cinco muestras
tomadas cada, aproximadamente, 100 ms. De esta forma cada vez que se toma una nueva
medida se elimina la más antigua de la historia y se incluye la nueva. Posteriormente se
determina si la condición predominante es que hay caricia o no. En el caso en el que no se llegue
a determinar que hay caricia no hay problema. No obstante, en el caso en el que se determine
por la historia que hay una nueva caricia se analizará si en la toma anterior había o no una
caricia. De esta manera se detecta una nueva caricia porque, primero, el estímulo ha estado
presente un periodo suficiente de tiempo y, segundo, porque la situación precedente era que no
estaba siendo acariciado.
70
Figura 34. Mecanismo de detección de caricias.
Capítulo 3 – Interfaz Persona-Máquina
Carlos Sanz Moreno
En la figura se ve a la izquierda la nueva entrada (verde detecta, rojo no detecta) la
situación de la historia y la salida que puede ser: Ninguna, si no hay ninguna caricia detectada;
Nueva Caricia, si se detecta una caricia y antes no había ninguna caricia detectada; o Mantiene,
si se detecta una caricia y antes ya había una caricia detectada.
Adicionalmente, esta capa de adaptación incluye otro paso relacionado con la estimación
de la importancia de una caricia para el sistema emocional. En este sentido se define que caricias
ocasionales tienen efectos moderados en el sistema emocional. Por el contrario, caricias
continuadas tendrán un efecto mucho más apreciable en la respuesta emocional.
Para computar esto se ha definido una nueva historia, esta vez de tres posiciones. Cada
vez que el paso anterior detecta una Nueva Caricia, esta nueva memoria almacena el instante de
tiempo en el que ocurre y, a partir de la caricia más antigua y de la más reciente, estima una
frecuencia de ocurrencia por minuto. De esta forma, comparándola con una frecuencia de
ocurrencia máxima, es posible ponderar el impacto de esta caricia en el sistema emocional tal y
como se explica en el Capítulo 5. El mecanismo puede ser descrito mediante la siguiente figura.
71
Figura 35. Estimación de frecuencia de las caricias
Diseño e implementación de un asistente personal capaz de
expresar emociones
Como se puede ver, el eje vertical es el eje de tiempos mientras que a la derecha aparece
la frecuencia. Cada vez que ocurre un evento se almacena en la memoria desplazando el último
y se calcula la frecuencia. Analizando el caso particularizado para que cada evento ocurra tras un
periodo T se puede ver que el primer evento tendría una frecuencia de 2/T, el segundo tendría
una frecuencia de 2/2T o lo que es lo mismo de 1/T (esto significa que está ocurriendo cada T
segundos) el tercero tendría una frecuencia de 1/T, por lo cual la estimación hecha en el
segundo evento sería válida.
Como factor adicional se incluye la frecuencia máxima, esta frecuencia surge del análisis
de la situación para el caso peor. En concreto, si se piensa en que para detectar una caricia tiene
que estar durante 300 ms ocurriendo y unos 400 ms apagada para que se vuelva a poder
detectar una nueva caricia surge que el periodo entre caricias es de 1/700ms, o lo que es lo
mismo 0.001 caricias/ms. No obstante, esta es una cota superior, el valor de frecuencia máxima
puede ser ajustado en función de la situación real (es muy poco probable que se le acaricie tan
rápido).
De esta forma el peso de una caricia será:
De modo que si la frecuencia estimada es cercana a la máxima (las caricias son
frecuentes), la importancia de este hecho es grande. Mientras que si la frecuencia estimada es
baja (las caricias se producen de tarde en tarde), la importancia es mucho menor para el
sistema.
72
Capítulo 4 – Aplicación
Carlos Sanz Moreno
CAPÍTULO 4
4 APLICACIÓN
En la introducción se habló del problema que tienen ciertos colectivos de usuarios a la
hora de detectar una verdadera utilidad en los sistemas electrónicos. La solución pasa por
encontrar una killer aplication que les muestre el efecto que tienen los sistemas electrónicos en
el incremento del rendimiento de cualquier actividad. Para perseguir este objetivo se ha
implementado la funcionalidad de asistente domótico. Este tipo de asistentes se pueden
asemejar a los electrodomésticos y, por tanto, parece viable conseguir situar el grado de
aceptación de un sistema de esta clase en el nivel de una lavadora o un frigorífico, es decir,
aparatos que están presentes en la inmensa mayoría de las casas y que son utilizados por todos.
73
Diseño e implementación de un asistente personal capaz de
expresar emociones
En el presente capítulo se explicará cada módulo de tarea implementado. Si es pertinente
se incluirán estados del arte que siente las bases de la tecnología que ha sido utilizada en los
correspondientes módulos.
No obstante y dado que, aunque las tareas muestran comportamientos independientes se
enmarcan dentro de un mismo sistema, el primer paso para su explicación es un breve apartado
con la lista de características comunes a las tareas para, a continuación, abordar las
particularidades de cada una de ellas.
4.1. Estructura Genérica de una Tarea
La arquitectura de comunicaciones escogida es del tipo Cliente/Servidor. Este hecho
beneficia la escalabilidad del sistema, ya que cada tarea puede ser un módulo independiente. No
obstante, también exige una serie de requisitos asociados a la estandarización de las interfaces
de las tareas de modo que el aumento del número de tareas no incremente la complejidad del
modelo de comportamiento (que será el encargado de negociar con las tareas).
Como se ha dicho, el sistema es del tipo Cliente/Servidor, esto implica que cada tarea
debe tener dos partes, la parte cliente y la parte servidor. Atendiendo a la definición de un
cliente (ver Capítulo 6 Subsistema de Comunicaciones), el cliente será aquel en el que se incluya
la funcionalidad de la tarea. Por ejemplo, si la tarea se encarga de limpiar el suelo, todas las
acciones específicas de limpiar el suelo están en el cliente. Así mismo, el servido será, por tanto,
el que contenga lo procedimientos que se solicitarán remotamente y que están particularizados
para dicha tarea, siendo también el encargado de la comunicación con el módulo de
comportamiento. Por ejemplo, si cuando el sistema termina de limpiar dice “He acabado”, el
cliente sería el encargado de enviar un mensaje de estado como “suelo limpio” siendo el
servidor el que comunica “descodifica” ese estado y solicita al módulo de comportamiento la
síntesis de la frase “He acabado”.
En cuanto a la interfaz estandarizada que deben incluir las tareas cabe mencionar la
creación de una clase base de la que deben derivar todas las tareas. Esta clase es “Módulo Base
Soap” y define los siguientes métodos virtuales:
“Enviar Respuesta A Usuario”: Este método debe ser implementado por
cualquier tarea. Recibe como parámetro el estado y su misión es generar las
respuestas de tipo acción, en concreto sintetizar. Una vez implementado se
74
Capítulo 4 – Aplicación
Carlos Sanz Moreno
llama desde el cliente y se ejecuta en el servidor, por tanto, si el estado en
el que se esté requiere sintetizar algo, será el servidor el que prepare la
orden de síntesis mediante “Prepara Sintetizador”.
“Comunicar Situación Módulo”: Este método tiene por objetivo modificar el
estado emocional en función del parámetro estado. Además también recibe
un valor que, en algunos casos, puede resultar necesario para el cálculo
emocional. Una vez más, el cuerpo de este método está en el servidor y,
por tanto, es allí donde se ejecuta.
Además de estos métodos, la clase “Modulo Base Soap” proporciona un método que será
heredado denominado “Espera Respuesta Usuario”. El objetivo de este método es proporcionar
la funcionalidad para comunicar la información de las interfaces de entrada a los módulos
tareas. El funcionamiento de este método aparece descrito en el capítulo 1 en el apartado
módulo de comportamiento.
4.2. Control de Roomba
Como su propio nombre indica, esta tarea implementa el control de la aspiradora robótica
Roomba como parte del sistema. Aunque la funcionalidad incluida en este proyecto es poco más
que un ejemplo, hay que citar la posibilidad de realizar acciones más complejas. De hecho, el
proyecto de Jorge Cancela González trata sobre la creación de una interfaz multimodal para este
robot domótico móvil (11) y en él, el lector puede encontrar más información acerca de lo que
se habla en este apartado.
4.2.1. Características de Roomba
El robot Roomba es una creación de iRobot. El principal objetivo de Roomba es la limpieza
del suelo y, por tanto, se comercializa como una aspiradora robótica que en sus versiones más
modernas incluye sensores de suciedad para enfatizar la limpieza en sitios con muy sucios.
Además, consta de sensores de suelo (para detectar precipicios) y de paredes (para evitar
obstáculos). Por último, incluye la capacidad de volver automáticamente a la estación de carga y
existen paredes virtuales que permiten acotar el terreno de limpieza del robot.
Sin embargo, dado el potencial de Roomba, iRobot ha proporcionado diferentes opciones
que permiten el desarrollo de aplicaciones basadas en este robot. Entre estas posibilidades
75
Diseño e implementación de un asistente personal capaz de
expresar emociones
están la comunicación vía cable por interfaz rs-232 o la comunicación Bluetooth mediante el
módulo RooTooth creado específicamente por iRobot para Roomba. También cabe citar la API
(“Aplication Programming Interface”) suministrada que posibilita el desarrollo de
funcionalidades de forma sencilla.
4.2.2. Tecnología Bluetooth
Anteriormente se ha mencionado que el módulo RooTooth permite la comunicación
Bluetooth con Roomba. Esta opción es muy potente puesto que, por un lado, se prescinde del
cable, hecho particularmente importante en el caso del control de un robot destinado a moverse
entre objetos con el consiguiente riesgo de “enganche”. Por otro lado, se heredan todas las
ventajas de la tecnología Bluetooth.
Bluetooth responde al objetivo de crear una forma de comunicación inalámbrica
independiente del terminal, capaz de operar en todo el mundo, que permitiese la transmisión de
audio y datos (transmisión multimedia) y todo ello con limitaciones en el consumo de energía
(destinado a dispositivos portátiles). Opera en la banda ISM (2,4Ghz) de corto alcance que está
destinada a uso industrial científico y médico y, además, se encuentra desregulada
internacionalmente. La transmisión se realiza mediante saltos de frecuencia en dispersión de
espectro (Frequency-Hopping Spread Spectrum FHSS). Esto consiste en la transmisión de señales
radio conmutando rápidamente entre portadoras de diferentes frecuencias. En Bluetooth se
llegan a utilizar 79. Tal vez la característica más relevante de este tipo de transmisión sea la
capacidad de compartir el espectro con otras tecnologías como WIFI.
Existes diferentes categorías de dispositivos Bluetooth:
- Atendiendo a la potencia de transmisión:
Clase 1: Potencia de transmisión hasta 20 dBm con alcance de unos 100
metros
Clase 2: Potencia de transmisión hasta 4 dBm con alcance de unos 10
metros
Clase 3: Potencia de transmisión hasta 0 dBm con alcance de
aproximadamente 1 metro.
76
Capítulo 4 – Aplicación
Carlos Sanz Moreno
- Atendiendo al ancho de banda:
Versión 1.2: Versión básica hasta 1Mbps.
Versión 2.0 + EDR: Incorpora tecnología Enhanced Data Rate para lograr
velocidades de hasta 3 Mbps.
UWB (propuesto): Con el objetivo de interconectar Bluetooth con Wifi las
velocidades irán desde 50 a 480 Mpbs.
La topología de red utilizada por Bluetooth es una piconet. Una piconet es un conjunto de
dispositivos Bluetooth, concretamente un maestro y hasta siete esclavos que se diseminan en
una distancia de entre 10 y 100 metros. Aunque el nodo maestro debe pertenecer únicamente a
una piconet los esclavos pueden pertenecer a varias a la vez, lo que se denomina scatternet o
red distribuida. Finalmente cabe decir que este tipo de diseño maestro/esclavo favorece el bajo
coste de esta tecnología pues los esclavos son dispositivos sumamente sencillos y pasivos que
realizan lo que les es solicitado por el maestro, siendo éste el que presenta mayor complicación.
Uno de los motivos que dotan a esta tecnología de gran versatilidad es el número de
perfiles definidos. Cada perfil es una guía que detalla el procedimiento de la comunicación entre
dispositivos Bluetooth para un determinado propósito. Es decir, cada perfil no es más que una
definición de:
Dependencia de otros perfiles.
Propuestas de formato de interfaz de usuario.
Características concretas de la pila de protocolos Bluetooth utilizada por el perfil.
Para realizar su función, cada perfil se sirve de ciertas opciones y parámetros en
cada capa de la pila. También se puede incluir un breve resumen de los servicios
requeridos si resulta necesario.
En este sentido hay multitud de perfiles desde transmisión de audio estéreo (A2DP) hasta
incluso conexión a red por línea conmutada (DUN). No obstante el que se utilizará en este
proyecto es el de emulación de línea serie y generación del interfaz RS-232 (SPP). Huelga decir
que para que dos dispositivos Bluetooth puedan interconectarse ambos deben soportar el
mismo perfil y, como es lógico, no todos los dispositivos soportan todos los perfiles.
Analizando en detalle el perfil SPP (Serial Port Profile) cabe mencionar que este perfil tiene
el objetivo de emular un puerto en serie utilizando las propiedades de conectividad de los
niveles más bajos de la pila de protocolos de Bluetooth. En este perfil se definen dos roles:
77
Diseño e implementación de un asistente personal capaz de
expresar emociones
Dispositivo A: Que inicia la conexión o iniciador.
Dispositivo B: Que espera a que el otro inicia la conexión o aceptor.
Por tanto, la pila de protocolos de cada uno de los dispositivos será la siguiente.
Se puede apreciar que los tren niveles inferiores corresponden a protocolos definidos por
Bluetooth, mientras que la aplicación puede ser cualquiera que precise comunicación por puerto
serie. Finalmente, existe un “pegamento” que proporciona una emulación de la funcionalidad
del puerto serie para que la aplicación no tenga que saber cómo se maneja la comunicación por
Bluetooth. Esta capa de emulación o API no se tratan de forma explícita en este perfil.
4.2.3. Tarea Implementada
Esta tarea implementa tres funcionalidades: iniciar un proceso de limpieza, finalizar un
proceso de limpieza y enviar al robot a su estación de carga. Hay que mencionar que en cada
una de estas actividades lo que se realiza desde el cliente es iniciar la secuencia pertinente
definida por los desarrolladores de Roomba. De esta forma no se ha profundizado en la
definición de los movimientos ni de las secuencias que maximicen la limpieza. Así mismo, el
procedimiento de acoplo a la estación de carga también es el proporcionado por los
desarrolladores de iRobot.
Esta tarea consta de dos partes, un servidor que responde al funcionamiento general para
los servidores de tareas y un cliente. Además, esta tarea requiere que previamente se haya
habilitado una conexión Bluetooth con perfil SPP entre el PC y Roomba por medio de Rootouth.
78
Figura 36. Pila de protocolos Bluetooth para SPP (11)
Capítulo 4 – Aplicación
Carlos Sanz Moreno
El funcionamiento es sencillo, un concepto es recibido por el servidor y enviado al cliente.
Éste chequea si es un concepto válido para la tarea y, si lo es, espera la transmisión definitiva.
Tras recibir el concepto definitivo analiza cuál es y se limita a enviar los comandos necesarios
mediante una comunicación estándar por el puerto serie virtual. Estos comandos son los
proporcionados en la API de iRobot para el control de Roomba. A continuación se adjunta la lista
de acciones a realizar y la secuencia de comandos a enviar.
El comando de inicio debe ser enviado para que el sistema sea capaz de atender al resto
de los comandos. Cada uno de ellos es enviado de forma análoga a como si se utilizara un puerto
serie físico con una velocidad de 57600 kbps, 8 bits de datos, sin paridad, un bit de parada y sin
control de flujo.
4.3. Control Infrarrojos
Esta tarea implementa el control de un dispositivo emisor de infrarrojos iRTrans. Este
dispositivo es capaz de almacenar códigos para controlar cualquier aparato que presenten una
interfaz infrarrojos. No obstante, para la intención de este proyecto será suficiente con el control
básico de un equipo Hi-Fi. Para esta tarea no se incluye el control mediante lenguaje natural, sin
embargo, existen diversos proyectos que tratan esta tarea, por ejemplo, los proyectos de
Alejandro Guirao Rodríguez (15) o Rafael García Sánchez (16) tratan sobre estos temas.
79
Comando de inicio Binario: 128
Empezar a limpiar Binario: 135
Dejar de limpiar Binario: 131
Ir a casa Binario: 143
Tabla 2. Correspondencia entre Acciones y Comandos
Diseño e implementación de un asistente personal capaz de
expresar emociones
4.3.1. Tecnología de Infrarrojos
La tecnología de control infrarrojo de dispositivo es bastante madura teniendo en cuenta
que la comercialización de las primeras televisiones con mando a distancia data de los 90. En la
actualidad casi todos los dispositivos electrónicos de un salón admiten este tipo de control (aire
acondicionado, televisión, equipo de música, DVD, receptor tdt…). En este sentido el módulo
iRTrans tiene un gran abanico de posibilidades.
Este dispositivo está creado específicamente para el control por infrarrojos de cualquier
dispositivo. Para ello presenta la siguiente arquitectura.
Como se ve existe un cliente en Windows de iRTrans que se encarga de manejar la
comunicación con el módulo servidor mediante un socket. Este módulo principal, con la ayuda
de la base de datos de comandos IR se comunica a través de distintos medios (en este caso un
USB) con el módulo físico que se encarga de la emisión de la señal. Más información puede ser
encontrada en el manual del usuario (17).
80
Figura 37. Arquitectura general del sistema IRTrans (17)
Capítulo 4 – Aplicación
Carlos Sanz Moreno
4.3.2. Tarea Implementada
Como en la tarea anterior, hay dos partes. Un servidor que se encarga de la comunicación
con el modelo de comportamiento y un cliente. Para el correcto funcionamiento de este sistema
debe estar ejecutándose la aplicación de control de IRTrans. Es decir, el programa suministrado
por el fabricante que implementa la arquitectura definida en el apartado anterior.
El funcionamiento del cliente es muy simple. Inicialmente se carga la base de datos
correspondiente al dispositivo a controlar. A continuación se establece una estructura con
información sobre los comandos a utilizar. Posteriormente el cliente actuará como todos los
demás. Es decir, esperará a que le llegue un concepto válido para realizar la tarea deseada. En
este caso, tanto encender como apagar la luz utilizan el mismo comando infrarrojo, por tanto,
una vez que llega cualquiera de dichos conceptos, el cliente llamará a la función
“mandarInfrarrojos” que se encarga de solicitar el envío del comando pertinente. Es importante
notar que, en función de qué dispositivo se quisiera controlar, habría que cargar una base de
datos u otra.
4.4. Control Luz
Esta aplicación está orientada al control de luces. El objetivo es habilitar el control de
cualquier luz de una vivienda mediante el sistema. Para ello se ha utilizado la tecnología X10
destinada, precisamente, al control de dispositivos eléctricos en el ámbito del hogar. Es decir,
control domótico. Para el desarrollo de esta aplicación se ha utilizado parte del proyecto
realizado por Alexander Zlotnik que habilitaba la conexión remota al entorno de desarrollo
Coldfire. (18)
4.4.1. Tecnología X10
X10 es un protocolo de comunicación destinado al control de aparatos eléctricos. Su uso
se encuentra muy extendido en ambientes domóticos debido, por un lado, al bajo precio de los
dispositivos y por otro al medio de comunicación. Este estándar utiliza la instalación eléctrica del
hogar para la transmisión de las señales digitales entre los dispositivos X10. En concreto, envía
ráfagas de información moduladas con una portadora de 120 Khz en cada paso de la señal
eléctrica alterna por cero. Esto es 50 ó 60 Hz dependiendo del país. De hecho, cada paso por
cero transmite un bit.
81
Diseño e implementación de un asistente personal capaz de
expresar emociones
La estructura de un mensaje es la siguiente.
Existe un campo de dirección y campo de datos. Un controlador envía un mensaje a una
determinada unidad que se encuentra definida por su dirección. Todas las unidades están a la
escucha y cuando reciben un mensaje con su dirección procesan el campo de datos. En una
versión inicial los comandos pueden ser “off” y “on”. No obstante, controladores más avanzados
permiten responder con información de sensores como temperatura, etc.
Hay que tener en cuenta que un sistema básico X10 no puede estar distribuido en
diferentes fases eléctricas. En este sentido existen controladores X10 activos que permiten
retransmitir la señal por diferentes fases.
4.4.2. Tarea Implementada
Nuevamente la tarea constará de dos partes, un servidor y un cliente. Al igual que
siempre, el servidor se encargará de la comunicación con el módulo de comportamiento. Por
otro lado el cliente se encargará de la comunicación con el servidor DRAC. Este servidor es parte
del proyecto de Alexander Zlotnik (18) y básicamente implementa la siguiente estructura.
82
Figura 38. Trama X10
Figura 39. Arquitectura sistema DRAC extraído de (18)
Capítulo 4 – Aplicación
Carlos Sanz Moreno
En definitiva, el cliente de la tarea se encargará de realizar solicitudes al servidor DRAC
para encender o apagar bombilla. Estas solicitudes serán procesadas por el servidor DRAC
enviándolas por puerto serie (línea azul) mediante el protocolo de linux Heyu, al módulo
controlador X10. El módulo controlador X10 recibe la solicitud y envía la orden al dispositivo
controlador de la bombilla mediante las líneas eléctricas de la instalación (línea roja). Este
terminal finalmente activa el paso de la corriente al dispositivo eléctrico, en este caso la
bombilla.
La forma de comunicar el cliente de la aplicación con el servidor DRAC es mediante
conexión TCP/IP con protocolo HTTP. Para ello se utiliza un script en perl
4.5. Tres en raya virtual
Se ha mencionado que este sistema debería ofrecer la posibilidad de jugar a juegos. En
concreto se ha implementado como juego las 3 en raya en dos modalidades: la modalidad
virtual, que es la que se va a tratar aquí, y la física, que será tratada en el siguiente apartado.
Analizando esta tarea, el objetivo es proporcionar la funcionalidad necesaria para poder
jugar a las 3 en raya en una versión que imprima por pantalla el tablero de juego. Como base de
esta tarea se ha partido de una implementación GPL de dicho juego. A partir de ella se ha
modificado lo suficiente como para poder incluir dos partes: un servidor que se encargue de la
comunicación con el módulo de comportamiento y un cliente que es el que lleva el control del
juego. El cliente será el resultado de la aplicación inicial adaptada suficientemente como para
que las respuestas del jugador provengan de conceptos reconocidos.
La forma en la que ha sido implementada la inteligencia artificial de este tres en raya es
mediante fuerza bruta. El sistema analiza todas las alternativas posibles tras un movimiento y
asigna una puntuación a cada movimiento en función de las veces que haya conducido a ganar o
a perder la partida. Finalmente, la elección final se hace en base al movimiento que haya tenido
más puntuación.
83
Diseño e implementación de un asistente personal capaz de
expresar emociones
En la figura se ve el árbol que se generaría tras un supuesto movimiento enésimo. Para
este movimiento se abren tres alternativas o movimientos (N+1). Cada uno de ellos se desglosa
en otros tantos movimientos (N+2). Finalmente, tras i iteraciones, se llega al movimiento N+i
desde donde algunos conducen a ganar (a éstos se les asigna un 1) y algunos conducen a la
derrota (se les asigna -1). Posteriormente se recorre el árbol hacia atrás asignando a cada rama
el valor de la suma de todas las ramas que se deriven de ella. De esta forma se llega a los valores
finales, +3, -1 y -2 que hacen que se elija el movimiento de la parte izquierda del árbol, pues
éste es el de la puntuación más elevada.
Una de las características que hacen distinta esta versión de juego de la implementada
físicamente es que ésta es una modalidad de relleno de tablero. En este sentido, los jugadores
irán poniendo fichas hasta que el tablero quede sin espacios que rellenar. De esta forma se
puede llegar a la situación de un empate.
4.6. Tres en raya físico
Esta tarea se encarga de la versión física del juego tres en raya. Para realizarla se ha
partido del trabajo realizado en el laboratorio de sistemas electrónicos digitales por parte de los
alumnos Enrique Fueyo Ramírez y Juan Carlos Hernández Munuera que durante el curso 2008
2009 trabajaron en la mejora de una versión del tres en raya con brazo robótico realizada por
84
Figura 40. Secuencia de cálculo del mejor movimiento.
Capítulo 4 – Aplicación
Carlos Sanz Moreno
alumnos durante el curso 2007 2008. En concreto, la versión inicial partía de la definición de una
práctica básica y se centraba en conseguir, entre otras cosas, implementar un juego de 3 en raya
al que se pudiese jugar mediante un teclado matricial. Como mejora surgió la inclusión de un
brazo robótico que recrease en un tablero la situación del juego. Partiendo de esta base, los
alumnos del 2008 2009 trabajaron en desarrollar una matriz de sensores infrarrojos que
permitieran detectar la posición de las piezas y, de esta forma, dejar como opcional el teclado
matricial. Bastará con mover una pieza físicamente para que el sistema detecte el movimiento y
genere una respuesta que será llevada al tablero por el brazo robótico. Además, con vistas a la
integración con otros proyectos como este, basados en el comportamiento emocional, el
sistema genera, en un archivo remoto mediante protocolo trivial ftp, información acerca de la
situación del juego. Esta situación básicamente consiste en el estado del juego (activo o no), el
resultado de la partida, (ganar, perder o empate) y la presencia o no de trampas.
Aunque la información que puede enviar la tarea contempla el empate, este juego
implementa la modalidad en la que cada jugador puede tener sobre el tablero un máximo de
tres fichas cada uno y, por tanto, podrá moverlas. De esta forma se elimina la posibilidad de
empatar.
Este juego presenta un funcionamiento autónomo. La tarea encargada de su control
simplemente lee periódicamente el archivo de resultados y determina la respuesta emocional
pertinente. En este sentido esta tarea podría ser implementada únicamente como un proceso
periódico dentro del módulo principal. No obstante, con el fin de estandarizar lo máximo posible
el sistema se han definido dos partes, un servidor, que se encarga de la comunicación con el
módulo de comportamiento y un cliente que se encarga de revisar periódicamente el archivo
para solicitar una nueva respuesta emocional.
4.7. Control Conversación
Esta tarea es algo diferente al resto. No se centra en el control de un dispositivo para
realizar una acción. Por el contrario, esta tarea trata de constituir un módulo de gestión de la
conversación que, para los conceptos recibidos, sea capaz de generar una respuesta tanto verbal
como emocional. De esta forma, la tarea constará de dos partes: un servidor que, como siempre,
se encargará de la comunicación con el módulo de comportamiento; y un cliente que recogerá la
relación de respuestas a cada concepto reconocido.
85
Diseño e implementación de un asistente personal capaz de
expresar emociones
En resumen, el comportamiento de esta tarea es el siguiente: El reconocedor entrega un
nuevo concepto al módulo de comportamiento que realiza la transmisión a la tarea mediante el
servidor. Una vez el concepto llega al cliente éste lo analiza y determina la respuesta pertinente
devolviéndola al servidor que, a su vez, la entregará al módulo de comportamiento donde
finalmente irá a los módulos correspondientes. Viéndolo con un ejemplo, si se recibe un insulto
esta tarea decidirá que es una acción que afecta negativamente a las emociones y, además,
generará una solicitud de síntesis al sintetizador eligiendo una frase relacionada con insulto.
4.8. Resumen de tareas
Como se ha visto, cada tarea tiene un objetivo específico, pero todas ellas comparten una
estructura común que permite que cualquier nueva tarea pueda ser incluida de forma sencilla.
Es preciso definir un servidor para cada tarea que implemente las funciones comunes a
todas ellas y que permita la interconexión con el módulo de comportamiento y, por extensión,
con el resto del sistema (interfaz de entrada, de salida y sistema emocional). La forma de
comunicación entre servidor y módulo de comportamiento será mediante llamadas locales.
Por otro lado, la tarea deberá incluir un cliente que implemente el funcionamiento
específico de la tarea y, en el caso en el que sea necesario, debe ser capaz de manejar elementos
86
Figura 41. Esquema de arquitectura de tarea
Capítulo 4 – Aplicación
Carlos Sanz Moreno
específicos de la tarea como comunicación por bluetooth, comunicación por infrarrojos, control
X10, etc. La forma de comunicación con estos elementos específicos de las tareas no puede ser
generalizada, siendo cada tarea la encargada de implementar la opción necesaria.
El comportamiento emocional de cada tarea, es decir, el tipo de eventos que pueden
ocurrir en el contexto de una tarea y su influencia en el sistema emocional es un tema que será
tratado en el siguiente apartado. Así mismo, la relación de conceptos que pueden ser
reconocidos asociados a cada tarea aparece definida en el correspondiente apéndice.
87
Capítulo 5 - Emotividad
Carlos Sanz Moreno
CAPÍTULO 5
5 EMOTIVIDAD
Desde sus inicios, las máquinas se han topado con un rechazo por parte de muchas
personas. Este rechazo sienta sus bases en el comportamiento monótono y a veces lógico de las
máquinas. Esta situación es totalmente contraria a la intención de que las máquinas estén
realmente integradas en el entorno cotidiano de las personas proporcionando servicios como
compañía, cuidados, entretenimiento, monitorización de pacientes, ayudas en terapias, etc. Los
sistemas no pueden ser simplemente sacados de su plataforma de desarrollo y puestos en la
vida real. Es necesario un proceso de adaptación a un entorno cambiante y que es solo
parcialmente conocido. Así mismo, la personalización del comportamiento para los usuarios y
compañeros son características necesarias para lograr una integración exitosa a largo plazo. Por
89
Diseño e implementación de un asistente personal capaz de
expresar emociones
tanto, será necesario el desarrollo de mecanismos capaces de funcionar bajo cualquier contexto
adaptándose al entorno. Con esta idea nacen multitud de sistemas. A continuación se exponen
algunos ejemplos:
iCat the affective Chess Player: (19) Este proyecto del Instituto Superior Técnico
de la Universidad Técnica de Lisboa trata de la creación de un jugador emocional
de ajedrez. El sistema es capaz de detectar la posición de las piezas durante la
partida y, además de busca un movimiento para ganar, analiza emocionalmente la
partida y genera respuestas emocionales.
Proyecto Feelix Growing: (20) Es un proyecto creado en 2006 hasta 2010 y
financiado por la Comisión Europea. Su objetivo es la investigación interdisciplinar
de un desarrollo social apropiado desde una perspectiva global o integrada como
un elemento clave hacia la consecución de robots que interaccionan con humanos
en ambientes cotidianos de una manera rica, flexible, autónoma y centrada en el
usuario. Entre los proyectos de esta línea de trabajo destaca la creación de una
guardería de robots compuesta por Aibos. Estos robots simulan el
comportamiento de bebés aprendiendo sobre emociones. Los participantes de
este proyecto son: La Escuela de Ciencias de la Informática de la Universidad de
Herthfordshire; El Centro Nacional Francés de Investigaciones Científicas; El
equipo de Neurocibernética, del laboratorio de Equipos de Tratamiento de
Imágenes y de Señales, dependiente de la universidad Cergy Pontoise y de ENSEA
(Escuela Superior Nacional de Electrónica y sus Aplicaciones); El Laboratorio de
Algoritmos de Aprendizaje y Sistemas, de la Escuela Politécnica Federal de
90
Figura 42. iCat Chess PlayerFigura 43. Guardería robótica del proyecto Feelix Growing
Capítulo 5 - Emotividad
Carlos Sanz Moreno
Laussane; El Centro para el Estudio de Emociones, de la Universidad de
Portsmouth; El Laboratorio de Imagen, Vídeo y Sistemas Multimedia Inteligentes,
del Instituto de Comunicación y Sistemas Informáticos de la Universidad Técnica
Nacional de Atenas; Entretainment Robotics, compañía del grupo Adaptronics; y
Aldebaran Robotics.
Robot Urbano: Este proyecto está realizado de forma conjunta por el Grupo de
Automática DISAM de la ETSII y por el GTH de la ETSIT. Persigue fomentar la
integración, en la sociedad, de técnicas relacionadas con la automática (control
inteligente, navegación de robots autónomos, ingeniería de software), mediante
el uso de nuevas tecnologías de la información (protocolos de Internet, interfaces
web y habla) que faciliten una comunicación amigable con el ciudadano. Para ello
se ha creado un cuerpo artificial móvil con un cierto nivel de autonomía. El
objetivo es permitir el acceso personalizado de ciudadanos a lugares públicos, así
como una interacción fluida con la información y con otros ciudadanos allí
presentes.
A la vista de estos ejemplos se extrae que la emotividad está llamada a jugar un papel
principal en el desarrollo de sistemas inteligente. En este sentido ha sido incluida como parte del
sistema de este proyecto. Nace de la idea de elevarlo a la categoría de compañero, ya que
tendrá más aceptación por parte de los usuarios si se puede interaccionar con él de una forma
más cercana. Para conseguirlo es necesaria la implementación de dos funcionalidades.
La primera está recogida en el modelo de relaciones y trata sobre la adaptación del
sistema a su relación con el usuario. Es decir, en un entorno domótico como el que se establece,
es necesario que el sistema sea capaz de recordar su relación con el usuario y modificar su
91
Figura 44. Urbano en una exposición
Diseño e implementación de un asistente personal capaz de
expresar emociones
comportamiento en función de ella. De otra forma, la interacción con el sistema se podría
asemejar a dos personas que viven juntas, pero que, cada día que se cruzan por el pasillo, se
presentan como si no se conocieran. Obviamente esta situación generaría rechazo por parte de
los usuarios.
La segunda funcionalidad es más ambiciosa y trata la idea de generar artificialmente
emociones. De este modo, el sistema tiene un comportamiento cercano al humano, pudiendo
realizar las tareas, como por ejemplo los juegos, de una manera más natural. Mediante este
comportamiento la interacción persona máquina se mejora sustancialmente intentando que el
usuario tenga la sensación de estar comunicándose casi con un igual. De hecho, la inteligencia
artificial (IA) resulta realmente interesante para las personas cuando presenta, al menos, un
mínimo de comportamiento emocional. Esto es debido a que si un sistema se comporta
únicamente basándose en la lógica sería altamente predecible y aburrido para los humanos. Por
el contrario, si el comportamiento es emocional a menudo se escapa de la lógica y genera
sistemas menos predecibles. De hecho, la investigación emocional se encuentra en un punto de
máxima actividad. Hay multitud de grupos de investigación por todo el mundo que se centran en
esta disciplina.
La importancia de la IA queda patente en palabras del MIT, en el cual se ha creado un
grupo de inteligencia emocional (Affective Computing Group), que describe la necesidad de
desarrollar sistemas emocionales de la siguiente manera:
“La importancia de esto se desprende de los trabajos de Damasio y otros que han
estudiado a los pacientes que esencialmente no tienen "suficientes emociones" y, en
consecuencia, sufren de deterioro en la toma de decisiones racionales. La naturaleza de su
discapacidad es extrañamente similar a la que presentan en la actualidad las máquinas
booleanas de toma de decisiones, y a la frágil inteligencia artificial de los sistemas expertos. Los
hallazgos recientes indican que, en los seres humanos, las emociones son esenciales para una
toma de decisiones flexible y racional. Nuestra hipótesis es que serán esenciales para que las
máquinas también presenten una toma de decisiones flexible y racional, así como un
pensamiento verdaderamente creativo y una variedad de capacidades cognitivas a semejanza de
los humanos" (21).
92
Capítulo 5 - Emotividad
Carlos Sanz Moreno
Sin embargo, aunque el trabajo de Damasio es bastante reciente, su postura no es nueva.
De hecho puede ser trazada hasta los años sesenta. No obstante, fue olvidada por la mayoría de
los investigadores hasta que la incapacidad de los sistemas para realizar actividades complejas
de manera autónoma ha revivido el interés por este tipo de alternativas.
A continuación se entrará en detalle sobre cada uno de los dos componentes del módulo
de emotividad. En primer lugar se analizará el modelo de relaciones implementado obteniendo
unas conclusiones específicas de este módulo. Seguidamente se analizará el modelo emocional
haciendo un breve repaso a las diferentes teorías emocionales existentes y entrando en detalle
sobre la arquitectura definida. Finalmente, también se ofrecen una serie de conclusiones
específicas de este modelo.
93
Diseño e implementación de un asistente personal capaz de
expresar emociones
5.1. Relaciones
La adaptación de las máquinas a los usuarios es un concepto que ha estado presente casi
siempre. Si se piensa en los ordenadores personales, se puede encontrar un claro ejemplo de
esto en la personalización de los escritorios. También los asientos eléctricos de algunos
automóviles poseen memoria y permiten adoptar la postura deseada del usuario de forma
automática una vez identificado de quién se trata. En la actualidad el grado de personalización
de los teléfonos móviles va desde el tono de llamada, pasando por el fondo de pantalla, hasta
incluso poder elegir las aplicaciones que corren en primer plano. En definitiva, es obvio que la
relación entre personas y máquinas requiere que estas últimas sean personalizables para que el
usuario experimente una utilización más satisfactoria.
5.1.1. Modelo de Relaciones implementado
La implementación realizada sigue el concepto de que las máquinas deben poseer
autonomía para adaptarse a cualquier situación. Es decir, resulta interesante que la
personalización según el tipo de usuario se haga de forma automática. Esto significa que el
sistema debe ser capaz de: primero, identificar de quién se trata; segundo, monitorizar la
relación; y tercero, adaptar el comportamiento en función de la relación. En otras palabras, si un
usuario X inicia una interacción con el sistema, éste debe ser capaz de identificarle y determinar
la relación que mantienen. Si ese usuario X realiza otra acción como una alabanza, el sistema
tiene que detectarla y determinar cómo afecta a su relación. Además, las acciones que realiza el
sistema deben estar condicionadas por la relación. Así por ejemplo, las palabras que elija a la
hora de sintetizar voz para un concepto vendrán determinadas por la relación con su
interlocutor.
94
Capítulo 5 - Emotividad
Carlos Sanz Moreno
Para la caracterización de la relación entre el sistema y las personas se ha utilizado una
máquina de estados de Moore. La relación con la persona es un estado determinado y en
función de que se cumplan las condiciones de transición la relación evolucionará.
Como se puede ver, el sistema se compone de tres estados:
Desconocido: Este es el estado por defecto de cualquier usuario. Cuando se
presenta por primera vez a un usuario, se clasifica según este tipo y se inicia
automáticamente un proceso de presentación. Este proceso consta de una serie
de preguntas que el sistema utilizará como modelo del nuevo usuario para una
mejor identificación en el futuro.
Conocido: Este es un estado intermedio de transición. En él se intenta recoger el
comportamiento frente a un usuario con el que se ha interaccionado varias veces,
pero no las suficientes como para considerarle amigo. La confianza con la que se
trata al usuario es mayor que en desconocido. La transición al siguiente estado se
realiza en función del número de interacciones entre usuario y sistema. Este
número puede ser modificado para simular una personalidad más o menos
extrovertida. No obstante, un valor excesivamente bajo puede causar un rechazo
por parte del usuario ya que el sistema haría amigos demasiado rápido. Para la
implementación realizada se ha considerado un valor de 17 iteraciones de modo
que el fenómeno se pueda apreciar en relativamente poco tiempo.
Amigo: Este es el estado de máxima confianza. La relación entre sistema y usuario
trata de acercarse a una relación entre dos amigos cualesquiera. Se ha
95
Figura 45. Esquema del modelo de relaciones
Diseño e implementación de un asistente personal capaz de
expresar emociones
considerado que este es el estado final. No obstante, podría establecerse que un
usuario pudiera perder el estatus de amigo.
En el sistema implementado el modelo de relaciones reside en el servidor del reconocedor
de voz. Consiste en una capa intermedia que analiza la información (frase, concepto asociado a
la frase, número de locutor y número de frases del locutor) recibida del reconocedor antes de
que sea enviada al resto del sistema.
5.1.1.1. Actualización de usuarios
El funcionamiento del modelo de relaciones es sencillo. Cada vez que se reconoce una
nueva frase el contador de frases asociadas al usuario se aumenta manteniendo inalterado el
comportamiento del sistema. Además se analiza si se satisface cada una de las condiciones de
transición entre los estados de relaciones. Todas estas acciones se realizan incluso dentro del
proceso de presentación.
Para contabilizar las frases de los usuarios así como almacenar información acerca de
ellos, el modelo de relaciones se apoya en un archivo de texto generado en tiempo de ejecución.
En este archivo se va almacenando la información relativa a los distintos usuarios del sistema.
De esta forma, al recibir una nueva frase, el sistema buscará en el archivo al locutor pertinente e
incrementará su contador. Además, analizará el valor de este contador y determinará en qué
estado se encuentra su relación con ese locutor (desconocido, conocido, amigo) actualizándola
en caso necesario. Finalmente, a lo largo del proceso de presentación, el sistema irá
almacenando la dirección de los archivos de audio donde se encuentra la información que se ha
ido solicitando al locutor (e-mail, trabajo…), así como el nombre del usuario. El formato del
archivo de texto es el siguiente.
96
usuario (numFrases) -->Relacion Nombre archivoDeTrabajo archivoDeMail archivoDeNacimiento archivoDeDomicilio
<_1 (00006) -->UKWN &Carlos $..\datavoz\Grabaciones\juancho_0_16.wav @..\datavoz\
Grabaciones\juancho_0_17 º..\datavoz\Grabaciones\juancho_0_18.wav *..\datavoz\Grabaciones\juancho_0_19.wav >
Capítulo 5 - Emotividad
Carlos Sanz Moreno
Se puede apreciar el ejemplo de un usuario identificado como “_1” que ha realizado seis
locuciones, cuyo estado es desconocido (UKWN) y que se llama Carlos. Además aparece el
conjunto de archivos donde se encuentra cada una de las grabaciones: profesión, correo
electrónico….
5.1.1.2. Presentación de nuevos usuarios.
Aparte de monitorizar el estado de las relaciones, este módulo se encarga del proceso de
presentación de un nuevo usuario. Es decir, cuando se le indica que se va a presentar a un nuevo
usuario, el módulo toma el control del sistema y realiza una serie de acciones que conducen a
que, finalmente, el nuevo usuario quede caracterizado, para que el sistema de identificación
tenga información suficiente. Este funcionamiento se basa en una máquina de estados. Las
entradas son conceptos proporcionados por el reconocedor y la salida son frases a sintetizar e
información para el cliente del reconocedor. Concretamente, el locutor al cual debe asignarse la
frase y si el modo de presentación se encuentra activo o no. En la figura se puede ver el
esquema de esta máquina.
97
Figura 46. Máquina de estados del proceso de identificación
Diseño e implementación de un asistente personal capaz de
expresar emociones
Inicialmente se parte del estado “Por defecto”. Este estado constituye el funcionamiento
normal del servidor de reconocimiento. Es decir, cuando se recibe un concepto se actualiza el
número de versión del reconocedor y el módulo de comportamiento se encargará de enviarlo a
todos los demás módulos. Además, se envía al cliente de reconocimiento el locutor al que debe
asignarse la frase (en este estado coincide con el proporcionado por el identificador) así como el
indicador de modo de presentación (en este caso 0 ó modo normal). No obstante, el servidor
está a la espera del concepto “presentación”. Cuando se recibe este concepto se pasa al
siguiente estado (confirmar nuevo usuario) y se sintetiza una frase que pregunte explícitamente
si hay alguien nuevo. A partir de este estado los conceptos reconocidos dejan de ser
transmitidos al resto del sistema de modo que sólo se utilizan en la máquina de estados. Esto es
así hasta el estado “Fin de presentación” o hasta el estado “por defecto”
En el estado “Confirmar nuevo usuario” se devuelve el usuario que ha identificado el
sistema como el autor de la frase y el modo de presentación sigue desactivado. Además el
sistema permanece a la espera de uno de los dos conceptos posibles: sí (Y) y no (N) ignorando
los demás. En el caso de que el concepto reconocido sea “N” el sistema vuelve al estado “por
defecto”. En cambio, si se reconoce “Y” se pasará al siguiente estado (Nombre) sintetizando una
frase que pregunte el nombre del nuevo locutor.
En “Nombre” se devuelve al cliente un nuevo locutor para que se le asignen las frases. A
partir de este momento, durante el resto del proceso, el locutor al que deben asignarse las
frases será a éste que se acaba de crear (candidato) independientemente de lo que decida el
identificador. Este es el último estado en modo normal, de esta forma lo que se reconozca
puede ser comprendido, permitiendo que el sistema almacene el nombre del usuario. Cuando se
recibe una nueva frase se sintetiza una respuesta que pregunte sobre la profesión del locutor y
se guarda en un archivo la frase de lo que el usuario dijo que era su nombre. Además se pasa al
estado “Profesión”.
“Profesión” es otro estado de recepción de información genérico. En él se espera una
frase del reconocedor sin importar el contenido. De hecho, el umbral de confianza es cero y, por
tanto, es casi seguro que lo que se reconozca no sea asociado a ningún concepto. Cuando se
recibe la frase, el sistema almacena en un archivo la dirección del archivo de audio que contiene
lo que se ha grabado como profesión. Además devuelve al cliente el locutor candidato (al que se
le tiene que asignar esa frase independientemente de que haya sido o no identificado como el
locutor que la realizó) y se habilita el modo de presentación. Como respuesta al usuario, se
98
Capítulo 5 - Emotividad
Carlos Sanz Moreno
sintetiza una frase solicitando el correo electrónico del locutor. El resto de estados presentan
comportamientos similares. Se recibe una frase reconocida que responde al concepto solicitado
en la transición del estado anterior y se almacena en un archivo. Además se genera una frase de
síntesis que solicita la información que actuará como evento de cambio al siguiente estado. En
todos estos estados el locutor que se devuelve al cliente es el candidato y el modo de
presentación permanece activo. La finalidad del modo de presentación es que el umbral de
confianza del reconocedor sea cero. De esta forma se pueden reconocer todo tipo de palabras
aunque no estén definidas en el vocabulario de ejemplo. No obstante, obrando de así se corre el
riesgo de que un ruido durante el proceso de reconocimiento sea admitido y, por tanto, la
información de identificación de usuario se corrompa. En este sentido es especialmente
importante un control de los posibles ruidos durante el proceso de identificación.
Por último se llega al estado “Lugar de residencia”. En este estado se recibe la
información a la pregunta sobre dónde vive y se almacena en un archivo. Como respuesta se
sintetiza una frase de fin de presentación, esto puede ser “encantado de conocerte”, y se pasa al
estado “Fin de presentación”. “Lugar de residencia” sigue devolviendo el locutor candidato y
modo de presentación activado.
Finalmente, se llega al estado “Fin de presentación”. En este estado el locutor que se
devuelve pasa a ser el identificado por el módulo de identificación. Además, la transición al
estado “por defecto” se realiza al recibir la solicitud de modo de presentación por parte del
cliente.
5.1.2. Influencia de relaciones en el comportamiento del
sistema
Este modelo de relaciones es muy potente pues genera una gran variedad de alternativas
a la hora de adaptar un sistema a un usuario. No obstante, por sí solo no es más que una
posibilidad. Es necesario que los módulos que constituyen el sistema tengan en cuenta la
información de la relación con el usuario y sean capaces de adaptar su comportamiento a ella.
En el modelo implementado se ha decidido mostrar un ejemplo concreto y fácilmente
apreciable, mediante la síntesis de voz, de la capacidad que se menciona. En concreto, cada vez
que un módulo del sistema desea sintetizar una frase, ésta es escogida atendiendo a la relación
99
Diseño e implementación de un asistente personal capaz de
expresar emociones
con el último locutor detectado. Por ejemplo, para generar una despedida existen varias
alternativas:
Para un usuario desconocido: “Mucho gusto hasta otro momento.”
Para un usuario conocido: “Hasta luego.”
Para un amigo: “¡Nos vemos!”
Sin embargo, el abanico de adaptaciones posibles en las tareas es enorme. De hecho,
incluso las emociones podrían verse alteradas en función del usuario, de esta forma un insulto
podría generar enfado si proviniese de un desconocido, o apenas alterar el estado emocional si
proviene de un usuario amigo.
5.1.3. Conclusiones sobre el modelo de relaciones
El modelo de relaciones se trata de modelar un comportamiento social. En este sentido
especificar una serie de estados que satisfagan a todos es complejo ya que cada uno entiende las
relaciones interpersonales a su manera. De hecho, una persona puede considerar a otra como su
amigo no siendo así en el otro sentido. Además, es comprensible que cada persona entienda el
tipo de estados posibles de formas distintas. De todo ello se deduce que en la implementación
de este modelo existe un componente implícito que no se ha tenido en cuenta directamente: La
personalidad del sistema. Es decir, las condiciones pueden hacer un sistema más o menos
extrovertido, mientras que la definición de estados puede llevar a, por ejemplo, un sistema
rencoroso (un número de insultos conduce a un estado de enemistad). Finalmente, en pro de
realizar un modelo simplificado que exponga la idea, se ha considerado que los estados
definidos son suficientemente significativos, aunque cabría añadir muchos más.
100
Capítulo 5 - Emotividad
Carlos Sanz Moreno
5.2. Emociones
Las emociones han estado presentes en la IA desde sus inicios. Si bien su relevancia ha
sufrido una importante evolución. Inicialmente, las emociones no eran más que una
característica suplementaria en sistemas de procesos cognitivos. Este tipo de sistemas se
caracteriza por un conjunto de tareas bien definidas en función de un entorno conocido. En ellos
las emociones cobran un papel opcional, es decir, el sistema puede funcionar perfectamente sin
presencia de emociones (22). Como alternativa a este tipo de sistemas aparece la inteligencia
emocional. Los sistemas de inteligencia emocional se basan en torno a la creación de un modelo
de emociones como parte central.
En los inicios de la inteligencia emocional los modelos usaban una simplificación del
complejo entorno que rodea a un sistema. Estaban basados en un conjunto de reglas
deterministas que definían el estado emocional en función del entorno. Estos sistemas llamados
razonadores “Reasoners” demostraron sus limitaciones. Es decir, una descripción exhaustiva del
entorno resulta imposible ya que éste es cambiante e imposible de predecir en su totalidad. Por
ello, para realizar un sistema más o menos completo, se requería una gran cantidad de casos, lo
que requería una cantidad importante de recursos y, en consecuencia, aumentaba los tiempos
de decisión. En definitiva, una solución inviable.
Frente a estos sistemas aparecieron aquellos basados en modelos psicológicos. Estos no
establecen reglas causa-efecto para cada evento del entorno, sino que intentan simular los
procesos humanos que ocurren durante la generación de emociones. Esto significa dotar al
sistema de los mecanismos necesarios para que sea capaz de hacer frente a un cambio del
entorno que nunca había experimentado y poder responder, emocionalmente, en consonancia
con él. (23). Es decir, donde en el pasado la investigación en IA buscaba una representación del
conocimiento, ahora busca el desarrollo de agentes inteligentes autónomos.
El interés en desarrollar agentes inteligentes autónomos radica en los requisitos prácticos,
por ejemplo, la exploración espacial. Enviar un robot a explorar un planeta como Marte significa
hacer funcionar a un sistema en un entorno desconocido y, por tanto, confiar en que el sistema,
de forma autónoma, sea capaz de explorar y reaccionar. Otro ejemplo es desarrollar agentes
que accedan a internet y sean capaces de determinar, de forma autónoma, qué tipo de
101
Diseño e implementación de un asistente personal capaz de
expresar emociones
información será de utilidad para el usuario. Aplicando esta idea a un agente emocional, debería
ser capaz de adaptarse emocionalmente a una situación que puede no estar contemplada
explícitamente en el momento del diseño, pero que, gracias a su autonomía, puede ser
procesada igualmente.
A continuación se va a hacer un breve repaso de las teorías que persiguen la creación de
sistemas emocionales. De esta forma se espera crear una visión general que permita entender la
solución propuesta.
5.2.1. Estado del arte: Teorías emocionales.
En la actualidad la teoría de la evaluación o “Appraisal Theory” se sitúa a la vanguardia de
las teorías psicológicas que definen el comportamiento emocional de las personas. Esta teoría
postula la idea de que las emociones son consecuencia de los juicios (“appraisals”) que una
persona realiza de los eventos que ocurren en su entorno. En otras palabras, la evaluación de
una situación provoca una respuesta emocional que está basada en esa misma evaluación. Un
ejemplo de esta teoría es una primera cita. Si la velada es evaluada como positiva, uno puede
sentir felicidad, alegría, vértigo, emoción y/o anticipación porque se ha evaluado este evento
como algo que podría tener efectos positivos a largo plazo, es decir, comenzar una nueva
relación, compromiso o incluso matrimonio. Por otro lado, si la cita es evaluada como negativa
las emociones, en consecuencia, podrían incluir abatimiento, tristeza, vacío o incluso miedo.
(24).
La importancia de esta teoría en el panorama psicológico que trata de caracterizar los
procesos que generan las emociones radica en que es la única capaz de llenar el vacío que dejan
las demás. Esto es: (25)
Permite determinar tanto el grado como el tipo de respuesta emocional para
una situación: Inicialmente se consideró la respuesta emocional como un
problema unidimensional. Sin embargo, con el paso del tiempo, esa teoría fue
expandida para incorporar una componente de positividad o negatividad de modo
que las respuestas emocionales se modelan como un sistema bidimensional. En
consecuencia existen varias emociones distintas como alegría, tristeza, miedo…
tal y como se manifiesta en la observación de las expresiones faciales de
diferentes culturas. Esto revela que las emociones son más generales de lo que se
102
Capítulo 5 - Emotividad
Carlos Sanz Moreno
pensó en un principio. La Appraisal Theory ayuda a explicar el problema del grado
y el tipo de cambios emocionales.
Permite explicar las diferentes respuestas emocionales de los individuos ante la
misma situación: Sin tener en cuenta esta teoría, cada estímulo debería provocar
la misma reacción en cada individuo que lo recibiese. En cambio, según la
Appraisal Theory, un estímulo va a provocar diferentes respuestas en cada
individuo dependiendo del contexto precedente a la estimulación. Por ejemplo, si
una amistad está llegando a su fin, una persona podría probablemente sentirse
triste, culpable o furiosa. Sin embargo la otra persona posiblemente sienta alivio o
apatía. Es decir, acorde al punto de vista que cada individuo tiene de la amistad,
su respuesta emocional a una ruptura de la relación será muy diferente.
Tiene en cuenta la matriz de estímulos que causa respuestas emocionales
similares: No hay manera de cuantificar todos los estímulos que conducen a una
respuesta emocional concreta. Cualquier tipo de contexto que se considere
apropiado para producir una respuesta emocional determinada puede producir
cualquier emoción. Otro tipo de teorías son incapaces de explicar este hecho. Sin
embargo la Appraisal Theory sí es capaz.
Tiene en cuenta los desencadenantes de la respuesta emocional: Esta teoría
tiene en cuenta el hecho de que las respuestas emocionales no se obtienen de la
nada. Es decir, la respuesta a un estímulo se ve intensificada dentro del contexto
de la situación. Por ejemplo, una persona ha perdido a su madre y al mes
siguiente muere un conocido. La respuesta emocional a la pérdida del conocido se
ve intensificada por el hecho de haber perdido recientemente a la madre.
Permite determinar la respuesta emocional más pertinente: Es decir, si se
reacciona con enfado a una situación en la que el enfado resultaría una pérdida de
energía se está afrontando la situación de un modo ineficiente. Las respuestas
emocionales están desarrolladas de modo que el gasto de energía sea el mínimo
que permita manejar la situación.
Es capaz de explicar la existencia de respuestas emocionales absurdas: Esta
teoría ayuda a clarificar por qué respuestas emocionales irracionales son
correctas. Otras teorías, que establecen que las emociones tienen la función de
ayudar a conseguir los objetivos de las personas y que además pueden ser
inhibidas en cualquier momento, son incapaces de explicar estas respuestas
irracionales.
103
Diseño e implementación de un asistente personal capaz de
expresar emociones
Como consecuencia de la robustez que presenta esta teoría psicológica, los sistemas
emocionales actuales la utilizan como base para obtener una respuesta emocional. La idea es
definir una forma de obtener atributos de evaluación y combinarlos para generar las emociones.
A continuación se describirán algunos de los modelos más relevantes. (26)
5.2.1.1. La teoría de Ortony, Clore and Collins
Esta teoría desarrollada en 1988 fue elaborada con vistas a posibilitar una implementación
en los ordenadores. Asume que las emociones se desarrollan como consecuencia de la
interpretación y de procesos cognitivos relacionados con los estímulos. Por tanto, se centra
exclusivamente en los desencadenantes cognitivos de las emociones. (27)
Los autores postulan que hay tres aspectos que determinan esos procesos cognitivos:
eventos, agentes y objetos. Los eventos son relevantes por sus consecuencias. Los agentes lo
son por sus acciones y los objetos por las propiedades que presentan.
Por tanto, esta teoría se desarrolla alrededor de la idea de que las emociones representan
reacciones proporcionales a la percepción del mundo. Es decir, uno puede sentirse complacido
o no con las consecuencias de un evento (agrado /desagrado); puede aprobar o rechazar las
acciones de un agente (aprobación/desaprobación) o puede gustarle o no las características de
un objeto (gusto/disgusto).
Una diferenciación más exhaustiva consiste en el hecho de que los eventos conllevan
consecuencias para uno mismo y para los demás y que un agente puede ser uno mismo u otra
persona. Las consecuencias de un evento para otra persona pueden ser catalogadas como
deseables o indeseables mientras que las consecuencias para uno mismo pueden clasificarse,
atendiendo a las expectativas que generan, como relevantes o irrelevantes. Por último, las
expectativas relevantes para uno mismo pueden diferenciarse de nuevo si son confirmadas o no
confirmadas.
Atendiendo a esta clasificación se puede realizar un árbol con los diferentes criterios. En él
se puede ver cómo las diferentes emociones quedan determinadas por ciertas características.
104
Capítulo 5 - Emotividad
Carlos Sanz Moreno
En esta teoría la intensidad de un sentimiento emocional está determinada
principalmente por tres variables de intensidad: Desirability que está relacionada con la reacción
a eventos y es evaluada atendiendo a los objetivos. Praiseworthiness, que está relacionado con
la reacción a acciones de agentes y es evaluada en función de unas normas. Appealingness,
relacionado con la reacción a los objetos y evaluada en función a las actitudes.
A parte de estas tres variables de intensidad, esta teoría define un grupo de variables
secundarias, algunas de ellas globales y otras específicas, que sirven para complementar el
modelado de la intensidad emocional. El grupo de variables se encuentra en la siguiente tabla.
105
Figura 47. Estructura del tipo de emociones (27)
Diseño e implementación de un asistente personal capaz de
expresar emociones
En la práctica, a cada una de estas variables se le asigna un valor y un peso. Además, existe
un umbral para cada emoción por debajo del cual no son percibidas.
Basándose en este modelo, la aparición de una emoción puede ser descrita mediante un
lenguaje formal. Sea la desirability (D) de un evento (e) para una persona (p) en un
cierto instante de tiempo (t). Esta función tiene un valor positivo para un evento deseable y un
valor negativo para uno no deseable. Además, sea una combinación de las variables
de intensidad globales y el potencial para un estado de alegría. De esta manera, la
regla para el estado de alegría puede ser:
=
Donde la función proporciona una nueva regla que permite determinar la intensidad
de la emoción y hace posible la experiencia de la alegría. Si se establece un umbral para
alegría ( ) entonces:
106
EVENTS AGENTS OBJECTS
desirability praiseworthiness appealingness
sense of reality sense of reality sense of reality
proximity proximity proximity
unexpectedness unexpectedness unexpectedness
arousal arousal arousal
desirability for other strength of cognitive unit familiarity
deservingness expectation deviation
liking
likelihood
effort
realization
Tabla 3. Local variables in the theory of Ortony, Clore and Collins (27)
Capítulo 5 - Emotividad
Carlos Sanz Moreno
Esto significa, que si el umbral de dicha emoción es superado se produce esa respuesta
emocional, pero si, por el contrario, el umbral no es superado, la emoción no es experimentada.
En este modelo cada emoción tiene sus propias formulas y, aunque los autores sólo formalizaron
algunas, defienden que todas pueden ser descritas de la misma manera, si bien admiten que,
con más emociones, esto sería mucho más complicado.
5.2.1.2. La teoría de Roseman
La teoría de Roseman fue elaborada en 1979 y revisada numerosas veces por él mismo.
Aunque ha sufrido muchos cambios, el enfoque en la appraisal theory permanece inalterado. La
ventaja de esta teoría es que provee una estructura que puede ser traducida fácilmente en
reglas, lo cual hace que tenga una gran aceptación en el desarrollo de IA. (28)
Roseman desarrolló su teoría basándose en unos doscientos informes sobre experimentos
emocionales. A partir del análisis de esos documentos estableció un modelo en el que seis
dimensiones cognitivas determinan cuándo surge una emoción y qué tipo de emoción es. Si bien
la composición de cada uno de estos niveles ha ido variando en diferentes revisiones. La versión
más actual sería la siguiente.
La primera dimensión describe si una persona tiene una motivación que le
conduzca a una situación deseada o por el contrario que le aleje de situaciones
indeseadas. De esta forma, la dimensión caracteriza estados positivos y negativos.
La segunda dimensión describe si la situación es acorde al estado de ánimo de la
persona o no. Para ello, la dimensión diferencia entre situación apetecible y
situación de adversa. Además, se establecen los estados motivación coherente:
que está ligado a los valores positivos de la primera dimensión (hacia situaciones
deseadas), y motivación incoherente, que está ligado a valores negativos de la
primera dimensión (hacia situaciones indeseada).
107
Diseño e implementación de un asistente personal capaz de
expresar emociones
La tercera dimensión describe si un evento es detectado como una certeza o
como una posibilidad. Esta dimensión, por tanto, establece lo seguro y lo posible.
Además incluye el estado inesperado determinante de la emoción sorpresa.
La cuarta dimensión está relacionada con la evaluación de la capacidad para
controlar una situación. Esto establece los estados bajo y alto.
La quinta dimensión describe quién es el causante del evento. Por tanto, se
definen los estados: circunstancias, otro o uno mismo.
La última dimensión está relacionada con las emociones negativas. Se denomina
“tipo de problema” y describe si un evento es detectado como negativo, porque,
impida alcanzar un objetivo (con el resultado de frustración) o porque sea
negativo en su naturaleza (con el resultado de aborrecimiento). Esta dimensión
contiene los estados característico y no característico.
De la combinación de estas dimensiones y sus valores se puede elaborar una tabla de la
que, según Roseman, las emociones pueden ser obtenidas. Hasta hoy el modelo de Roseman no
ha podido ser probado empíricamente. Una debilidad es evidente: Existe un problema a la hora
de analizar una situación en la que una persona realiza dos apreciaciones diferentes. Por
ejemplo, si un estudiante cree que el examen de su profesor no es justo pero, al mismo tiempo,
reconoce que no se ha preparado lo suficiente para el examen. La teoría de Roseman no podría
determinar de forma clara qué emoción es la resultante, ya que en este caso dos estados de la
quinta dimensión estarían activos al mismo tiempo. No obstante, como se ha dicho al principio,
este modelo tiene gran aceptación en los círculos de IA debido a la facilidad que presenta
realizar una implementación que tenga en cuenta todos los estados.
5.2.1.3. La teoría de Scherer
En este modelo se establecen cinco subsistemas, los cuales están involucrados en los
procesos emocionales. Estos subsistemas son: (29)
Un subsistema de procesado de información evalúa el estímulo de entrada
mediante la percepción, la memoria, la previsión y la evaluación de la información
disponible.
Un subsistema de apoyo, que altera la situación interna gracias al control de los
estados neuroendocrinos, somáticos y autónomos.
108
Capítulo 5 - Emotividad
Carlos Sanz Moreno
Un subsistema de elaboración de planes a seguir, que prepara las acciones y
selecciona entre posibles motivaciones en conflicto.
Un subsistema de actuación controla las expresiones motoras y el
comportamiento visible.
Un subsistema de monitorización, que controla la atención asignada a los estados
actuales y realimenta con esa información al resto de subsistemas.
Esta teoría se centra sobre todo en el primer subsistema, el de procesado de información.
Atendiendo a su teoría, este subsistema está basado en “appraisals” que son denominadas
controles de evaluación de estímulos (stimulus evaluation checks SEC). El resultado de estas
SECs ocasiona de nuevo cambios en los otros subsistemas. Scherer define cinco SECs básicos,
cuatro de los cuales poseen más variedades.
El novelty check decide si el estímulo interno o externo ha cambiado; su sub-
características son: suddenness, confidence and predictability.
El intrinsic pleasantness check especifica si un acercamiento al estímulo es
agradable o no y, por tanto, provoca tendencias de aproximación o evitación.
El goal significance check decide si el evento contribuye o dificulta el objetivo de la
persona. Su sub-características son: goal relevance, probability of result,
expectation, support character y urgency.
El coping potential check determina en qué medida cree la persona que tiene la
situación bajo control. Su sub-características son: agent, motive, control, power y
adaptability.
El compatibility check compara el evento con normas internas y externas. Su sub-
características son: externality e internality
Por tanto, según este modelo, cada emoción puede ser claramente determinada por una
combinación de SECs y sub-características. En contraposición a la teoría de Roseman, esta teoría
ha sido apoyada empíricamente hasta el momento.
5.2.1.4. La teoría de Frijda
Esta teoría postula que la palabra emoción no se refiere a un tipo natural. Establece que
no es posible referirse a un tipo de fenómenos bien definidos que sean claramente
diferenciables de otros eventos mentales o de comportamiento.
109
Diseño e implementación de un asistente personal capaz de
expresar emociones
Para Frijda los procesos que provocan las emociones tienen mucho interés. De hecho el
centro de esta teoría es el término motivación. La motivación define la disposición de un sistema
a preferir una situación frente a otra, ya sea referida al entorno o al propio organismo. Por lo
tanto, las motivaciones producen objetivos (“goals”) y preferencias para el sistema de modo
que, el grado de dificultad del sistema para perseguir a sus motivaciones, es la causante de las
emociones. Además, la intensidad de cada emoción está determinada, esencialmente, por la
relevancia de la motivación.
En su teoría Frijda define seis características principales con las que se describe el
funcionamiento emocional del sistema.
Detección de la relevancia de la motivación: El subsistema emocional determina el
significado de cada evento para los objetivos del sistema y lo anuncia a todos los demás
componentes mediante una señal denominada “affect”. Esto implica que el sistema
debe ser capaz de recoger información del entorno así como del propio sistema.
Evaluación: La siguiente fase es que el significado del estímulo para las motivaciones sea
evaluado. Este proceso consta de dos pasos: evaluación de relevancia y evaluación de
contexto.
Control de prioridad: Si la señal de relevancia es suficientemente intensa será capaz de
modificar las prioridades de la percepción, la atención y el procesado. Por tanto,
presentará una tendencia a afectar al comportamiento del sistema.
Cambios en la disposición para actuar: Según esta teoría, esto representa el corazón de
la respuesta emocional. Modificando esta disposición se producen cambios en el
tratamiento de procesos, en los recursos de atención y en la tendencia hacia cierto tipo
de acciones.
Regulación: Además de la determinación de la disposición para actuar, el sistema
emocional monitoriza todos los procesos del sistema general y los eventos del entorno
que pueden modificar la disposición para actuar. De esta forma es capaz de intervenir
apropiadamente.
Naturaleza social del entorno: El sistema emocional se ajusta al hecho de que opera en
un entorno social. En este sentido, muchas categorías de evaluación son de naturaleza
110
Capítulo 5 - Emotividad
Carlos Sanz Moreno
social. De hecho, la disposición para actuar es mayoritariamente una predisposición a
acciones sociales.
En esta teoría se reconoce la tremenda necesidad de las emociones en sistemas que
poseen múltiples motivaciones en un entorno incierto. Si una ocurre situación que pueda poner
en peligro alguna de las motivaciones, se desarrollan las llamadas tendencias de actuación. Estas
tendencias están íntimamente ligadas a los estados emocionales y sirven como dispositivos de
seguridad para lo que, Frijda, denomina realización de la motivación (CR). Una lista de las
principales tendencias de actuación es la siguiente:
Approach (Desire)
Avoidance (Fear)
Being-with (Enjoyment, Confidence)
Attending (Interest)
Rejecting (Disgust)
Nonattending (Indifference)
Agonistic (Attack/Threat) (Anger)
Interrupting (Shock, Surprise)
Dominating (Arrogance)
Submitting (Humility, Resignation)
Además, según Frijda, un sistema emocional debe presentar los siguientes elementos;
Motivaciones: Son representaciones internas mediante las cuales la situaciones percibidas son probadas.
Repertorio de acciones: Está formado por un conjunto de: reacciones instantáneas de urgencia, señales sociales y mecanismos para desarrollar nuevos planes.
Mecanismos de evaluación: Son mecanismos que establecen la relación entre eventos y motivaciones así como conectan el control de acciones al repertorio de acciones.
Analizador: Consiste en la observación de la información que se está recibiendo y la consiguiente codificación en función de sus implicaciones y consecuencias.
Comparador: Prueba toda la información centrándose en la relevancia para las motivaciones. El resultado son señales de relevancia. Estas señales activan el sistema de
111
Diseño e implementación de un asistente personal capaz de
expresar emociones
actuación y el generador de diagnósticos. Además provocan un incremento de la atención.
Generador de Diagnósticos: Es el responsable de la evaluación del contexto, escanea la información en función de las relevancias de cada acción. Realiza un conjunto de pruebas (p.e. si las consecuencias de un evento son seguras o inciertas, quién es el responsable…) y genera un perfil de evaluación.
Evaluador: Las señales de acuerdo o discrepancia del comparador y el perfil del generador de diagnósticos son combinados en una señal de relevancia final y un parámetro de intensidad. Este parámetro indica la urgencia de una acción para el sistema de actuación. La relevancia constituye lo llamado control de procedencia de la señal.
Proponedor de acciones: Prepara la acción seleccionando un camino de actuación apropiado y habilitando los recursos necesarios.
Actor: Genera la acción.
Esta composición de un sistema emocional puede ser formalizada de modo que sea capaz
de constituir las bases para un modelo informático. De hecho, ha sido utilizada en sistemas como
ACRES (30) y su evolución WILL (31).
112
Figura 48. Sistema emocional de Frijda (40)
Capítulo 5 - Emotividad
Carlos Sanz Moreno
5.2.1.5. La teoría de Oatley & Johnson-Laird
Oatley y Johnson-Laird desarrollaron su teoría con vistas a que pudiera ser implementada
como un modelo de ordenador. Percibieron la necesidad de elaborar su teoría en el hecho de
que la mayoría de los sistemas informáticos que modelaban la mente humana no consideraban
las emociones. En contraposición a este hecho, ellos situaron a las emociones como el centro de
la organización de los procesos cognitivos. (32)
Asumen una jerarquía de procesos concurrentes que tratan solicitudes formuladas por
tareas asíncronas. Estas solicitudes se coordinan por un sistema de control central o sistema
operativo. Éste sistema de control contiene un modelo del sistema completo. Los módulos que
componen el sistema se comunican unos con otros mediante dos tipos de comunicación:
Comunicación simbólica o proposicional: A través de esta comunicación se envía
información acerca del entorno.
Comunicación no proposicional o de naturaleza emocional: Su tarea no es
transmitir información sino sumir a todo el sistema en un estado de mayor
atención, lo que se llama modo emocional, que se puede asemejar a una
interrupción en programación. Este tipo de comunicación puede invocar acciones
de unos módulos e inhibir otros.
Si el sistema se sume en un modo de organización emocional, sin que existan datos del
exterior que deban ser evaluados por un sistema operativo consciente de alto nivel, la señal
emocional simplemente se propaga de forma global a través de todo el sistema. De este modo
se establecen un número reducido de modos emocionales.
Según Oatley, cada objetivo y cada plan poseen un mecanismo de monitorización que
evalúa los eventos según su relevancia para ellos. Cuando un cambio de la probabilidad de
conseguir un determinado objetivo o sub-objetivo tiene lugar, el mecanismo de monitorización
difunde esta situación por todo el sistema cognitivo mediante una señal. Esta señal puede
entenderse como la predisposición para responder a ese cambio.
113
Diseño e implementación de un asistente personal capaz de
expresar emociones
Las emociones coordinan procesos cuasi autónomos del sistema nervioso. De esta forma
se comunica la situación de los planes o “plan junctures”. Esta teoría establece la siguiente
conexión entre “plan junctures” y la emociones.
Como conclusión se puede decir que las emociones son una solución a los cambios en los
planes para un sistema de múltiples objetivos. Además este sistema establece que la tarea
encargada de las emociones es la que brinda información a todos los demás módulos.
5.2.2. Diseño del modelo emocional: Requisitos del sistema
emocional
Como se ha mencionado anteriormente, uno de los objetivos de este proyecto es crear un
sistema emocional. No obstante, antes de definir un modelo resulta necesario analizar qué
requisitos precisa el sistema global:
Sistema multitarea: Este sistema está orientado a un funcionamiento como
asistente domótico. En este sentido, debe ser capaz de realizar multitud de tareas
muchas de las cuales constituirán una influencia para el estado emocional. Por
tanto, el requisito que se establece es que el modelo que se escoja sea capaz de
evaluar cambios de diferentes tareas.
Sistema concurrente: Así mismo, el sistema puede realizar acciones de diversa
naturaleza en el mismo instante de tiempo. Esto requiere un sistema emocional
que tenga en cuenta los eventos concurrentes y, además, pueda jerarquizar su
influencia para generar una respuesta emocional coherente.
114
Plan juncture Emotion
Subgoals being achieved Happiness
Failure of major plan Sadness
Self-preservation goal violated Anxiety
Active plan frustrated Anger
Gustatory goal violated Disgust
Tabla 4.
Capítulo 5 - Emotividad
Carlos Sanz Moreno
Sistema escalable: Por último, y pensando en el gran crecimiento que puede sufrir
un sistema de estas características en cuanto al número de funcionalidades
disponibles, el sistema emocional debe proporcionar los medios necesarios para
que la inclusión de una nueva tarea no suponga un rediseño del modelo
emocional.
Inicialmente se pensó utilizar la “appraisal theory” como base del sistema emocional ya
que, como se ha dicho anteriormente, es la teoría psicológica que presenta mayor robustez a la
hora de explicar el comportamiento emocional de las personas. En este sentido, una primera
aproximación consistía en que cada tarea generase un vector de atributos de evaluación
independientes de la tarea (task independet features TIF). Estos atributos caracterizarían cada
evento en relación al objetivo específico de la tarea. Posteriormente, un módulo se encargaría
de generar la respuesta emocional a partir de los TIF de cada tarea. El esquema de esta
arquitectura puede verse a continuación.
Sin embargo esta aproximación presentaba deficiencias. En concreto si se atiende a la lista
de características requeridas se puede ver:
Sistema multitarea: Inicialmente esta aproximación satisface este requisito ya
que cada evento ocurrido en las distintas tareas es juzgado y descrito mediante un
115
Figura 49. Arquitectura mediante TIF
Diseño e implementación de un asistente personal capaz de
expresar emociones
vector TIF. De esta forma, el módulo generador de emociones será genérico e
independiente de tarea. Simplemente generará una respuesta emocional en
función de los vectores de evaluación.
Sistema concurrente: Aquí se presentaba la necesidad de tratar diferentes
eventos que ocurriesen de forma simultánea así como de generar un mecanismo
que los jerarquizase. Con esta aproximación no hay ningún problema a la hora de
tratar eventos simultáneos. No obstante, a la hora de jerarquizarlos sí que existen
dificultades. En concreto, cada tarea caracteriza un evento en función de su
objetivo de tarea. Esto implica que, aunque la información de los TIF sea
homogénea, no posea la capacidad de, por sí misma, priorizarse. Véase el
siguiente ejemplo: se ejecuta simultáneamente un juego y la monitorización de la
batería. En un momento determinado se realiza un buen movimiento en el juego,
pero el nivel de la batería decrece. La primera tarea generará un vector TIF que
conducirá, probablemente, a una emoción positiva como alegría. Por el contrario,
la segunda tarea generará un TIF que conducirá a un estado emocional negativo
de miedo o tristeza. Ante esta situación la única forma de decidir qué emoción
debe ser la predominante es mediante algún tipo de información que sea
dependiente de la tarea. Por tanto, al introducir esta modificación se está
perjudicando, por un lado, el requisito de multitarea, ya que el módulo generador
de emociones no será tan genérico. Por otro lado, se dificulta la escalabilidad.
Sistema escalable: Como hemos dicho el modelo emocional debe permitir que el
sistema crezca de forma sencilla. Atendiendo a esta aproximación. La inclusión de
una nueva tarea implica que el programador tenga en cuenta, para cada evento
que se produzca, la situación emocional a la que se conduce. Por tanto, es el
programador quien debe generar el vector de TIF. Además cómo este vector es
utilizado directamente en el cálculo de emociones, los valores que se asignen a
cada uno de estos atributos deben estar en consonancia con los valores que
otorguen el resto de las tareas. Esto implica que además de tener en cuenta el
comportamiento emocional, el programador debe analizar el comportamiento
emocional de las otras tareas. Finalmente, si se incluye información destinada a
jerarquizar las emociones, la inclusión de una nueva tarea debería reconfigurar de
alguna forma el módulo generador de emociones.
116
Capítulo 5 - Emotividad
Carlos Sanz Moreno
Por tanto, a la vista de las deficiencias encontradas en la satisfacción de cada uno de los
requisitos definidos, la aplicación en estos términos de la “appraisal theory” no es aconsejable
de forma directa. Además, a la vista de los resultados emerge una incongruencia de tipo
psicológico. Las emociones son consecuencia directa de la satisfacción o no de los objetivos de
las tareas. Es decir, el sistema se “pone alegre” porque, por ejemplo, se gana a un juego. Por el
contrario, parece más apropiado que el sistema se ponga alegre porque, al ganar en un juego,
consigue un objetivo de más alto nivel. Esta visión permite justificar el aprendizaje emocional de
nuevas tareas de la siguiente forma. Al aprender una nueva tarea no se responde
emocionalmente porque se ha aprendido que, por ejemplo, no caerse de una bicicleta es
positivo para la tarea, sino que se ha aprendido que no caerse de la bicicleta es positivo porque
no perjudica algún objetivo de alto nivel como permanecer ileso.
5.2.3. Definición de objetivos de alto nivel: la teoría de
Maslow.
Abraham Maslow estableció en 1943 una teoría sobre la motivación humana (33). Esta
teoría fue desarrollada a partir de la observación de personas que no presentaban ningún tipo
de trastorno psicológico como Albert Einstein o Eleanor Roosevelt entre otros y concluye que las
personas están motivadas por la búsqueda de la satisfacción de una serie de necesidades.
Además, Maslow fue capaz de jerarquizar dichas necesidades mediante cinco niveles,
constituyendo la conocida Pirámide de Maslow. En esta pirámide las necesidades se posicionan
117Figura 50. Pirámide de Maslow
Diseño e implementación de un asistente personal capaz de
expresar emociones
de más prioritarias (situadas en la parte de debajo de la pirámide) a menos prioritarias. Además,
estas necesidades se encuentran en una relación de subsunción de modo que si un nivel básico
está insatisfecho se impedirá la satisfacción de los niveles superiores. Así mismo, se puede
apreciar que las más prioritarias son aquellas que están más relacionadas al comportamiento
animal o instintivo, mientras que las superiores son de más alto nivel.
Maslow estableció que el comportamiento de las personas está motivado por la
satisfacción de todas y cada una de estas necesidades y que, una vez satisfechas, se alcanzaría
un estado de felicidad.
Los niveles son:
Nivel Fisiológico: Este nivel es el más prioritario y también el de más bajo nivel. En él se
recogen las necesidades básicas de las personas como son respiración, alimentación….
En definitiva, aquellas necesidades que permiten estar vivo.
Nivel de Seguridad: Este nivel recoge aquellas necesidades que, no siendo estrictamente
necesarias para seguir vivo, resultan imprescindibles para poder realizar cualquier
acción. Por ejemplo, seguridad física, de recursos, salud….
Nivel de Afiliación: En este nivel se recoge la necesidad de pertenencia a un grupo. Esto
significa amistad, afecto…
Nivel de Reconocimiento: O también denominado nivel de estima. Este nivel fue
clasificado por Maslow mediante dos tipos: alta estima (relacionada con la necesidad de
respeto de uno mismo, de maestría, de confianza, etc.) Baja estima (relacionada con el
respeto de las demás personas, de la necesidad de reconocimiento, de estatus etc.)
Nivel de Autorrealización: Es el nivel más alto de la pirámide y por ello es el más
abstracto. Mediante la satisfacción de este nivel Maslow establece que se alcanza el
sentido de la vida. Además, a este nivel se llega cuando todos los demás han sido, al
menos, parcialmente satisfechos.
Como puede apreciarse, la teoría de Maslow es una jerarquización de las necesidades de
las personas. Es decir, es una definición de los objetivos que posee el individuo y que persigue y
evalúa durante la realización de las tareas. Este concepto cuadra, precisamente, con lo que
requiere el sistema emocional cuando habla de objetivos de alto nivel. Una serie de necesidades
suficientemente genéricas, para que, cualquier cambio proveniente de cualquier acción, pueda
ser caracterizado en relación a ellos. Por todo ello la teoría de Maslow sirve de eslabón entre los
118
Capítulo 5 - Emotividad
Carlos Sanz Moreno
eventos y la “appraisal theory”. Sin embargo, el comportamiento de un sistema así como sus
necesidades presentan diferencias con el de las personas y, en consecuencia, resulta pertinente
una adaptación de las necesidades. Esta adaptación es la siguiente:
Nivel Fisiológico: Este nivel conserva la misma interpretación que para el caso de los
humanos. Es la necesidad de estar funcionando. Analizando los eventos que pueden
afectar a este nivel aparecen cambios en el nivel de batería, en la memoria disponible o
en la temperatura de la CPU. Si cualquiera de estos eventos hace que su variable quede
en un valor crítico la necesidad tornará insatisfecha y el sistema no podrá funcionar. Es
decir, si se produce un evento de decaimiento del nivel de batería que hace que este
nivel pase a un valor suficientemente bajo como para que el equipo entre en
hibernación, la necesidad estará insatisfecha. Además, por el tipo de necesidad, se
puede ver que el sistema no funcionará a no ser que se satisfaga.
Nivel de Seguridad: Este nivel recoge los eventos que puedan imposibilitar que el
sistema realice sus acciones de forma correcta. Eventos de este nivel pueden ser tanto
un fallo de comunicación con los módulos que integran el sistema, como una variación
del nivel de iluminación del entorno. Nótese que mientras que si la necesidad fisiológica
del sistema se encuentra insatisfecha, éste no puede funcionar, si se encuentra
insatisfecha la necesidad de seguridad, el sistema no podrá realizar una acción. Por
ejemplo, en un estado de insatisfacción de esta necesidad causado por la iluminación, el
sistema se verá impedido para un tipo de acciones, en concreto aquellas que precisen
imágenes de la webcam, pero podrá realizar cualquier otro tipo de acciones.
Nivel de Afiliación: Como se dijo anteriormente, este nivel tiene que ver con sentirse
parte de un grupo social. Esta definición puede llevar a generar varias variables para
computar dicha necesidad. Es decir, la necesidad de afiliación puede depender del
número de amigos del sistema, del número de veces que se juega a un juego, etc. Sin
embargo, en el modelo desarrollado, se ha utilizado una única variable denominada
“changes” que es dependiente del número de cambios que ocurren en el sistema. Esto
es así porque se ha considerado que, para el modelo, sentirse integrado socialmente
significa que el usuario está interactuando con el sistema. De esta forma la detección de
caras o el reconocimiento de conceptos son dos muestras del tipo de eventos que
influirán en esta variable y por ende, en esta necesidad.
Nivel de Reconocimiento: En este caso la necesidad de sentirse reconocido puede venir
nuevamente modelado por varias variables. No obstante, se ha elegido la variable
119
Diseño e implementación de un asistente personal capaz de
expresar emociones
“success”. Esta variable recoge los eventos que alcanzan al objetivo específico de cada
una de las tareas. Es decir, eventos como ganar o perder en un juego, conocer a alguien
nuevo, recibir un concepto correctamente, etc. modificarán el valor de success.
Nivel de Autorrealización: Quizás éste sea el nivel más difícil de adaptar. Atendiendo a
las alternativas proporcionadas por Maslow, tal vez sea la moralidad la que mejor encaje
en un sistema robótico. En este sentido se ha decido utilizar la variable “ethics” que se
ve afectada por eventos que puedan considerarse inmorales. Es decir, trampas en un
juego, un insulto, etc.
Como resumen se puede decir que los niveles más bajos de Maslow (fisiológico y
seguridad) dependerán directamente de variables físicas del sistema, mientras que cada uno de
los tres superiores están modelados por una variable que resulta del cómputo a lo largo del
funcionamiento del sistema.
5.2.4. Diseño del modelo emocional: Arquitectura
propuesta
Combinando la teoría de Maslow con la “appraisal theory” se ha llegado a un esquema en
el que el cálculo de la respuesta emocional es independiente de la tarea. Esto es posible
mediante la capa de objetivos de alto nivel proporcionada por Maslow. El funcionamiento es el
siguiente: Un evento producido en el contexto de una tarea es detectado por ella, quien
además, se encarga de juzgar a qué necesidades afectará ese evento. Seguidamente se
modificará el nivel de satisfacción de las necesidades implicadas y se caracterizará esta variación
120
Figura 51. Adaptación de la Pirámide de Maslow.
Capítulo 5 - Emotividad
Carlos Sanz Moreno
en términos de la “appraisal theory”, es decir, mediante un vector de atributos de evaluación. En
este caso estos atributos son denominados atributos independientes de necesidad (need
independet feature NIF). Además, la información de los NIFs es complementada por el valor del
Peso, que es característico de cada nivel de Maslow. De esta forma se genera suficiente
información como para que el generador emocional determine la nueva respuesta emocional
final.
En esta arquitectura se pueden distinguir dos partes. Una primera parte es totalmente
dependiente de tarea y consiste en la relación de cada tarea con las necesidades de Maslow.
Esta relación debe ser establecida por el creador de las tareas atendiendo a la definición de cada
nivel. Por ejemplo, si se incluye una tarea que sea saludar a personas para encontrar a un locutor
específico pueden ocurrir dos tipos de eventos: recibir respuesta del locutor buscado o recibir
respuesta de otro locutor. Cada vez que se saluda a una persona y se recibe respuesta, el nivel
de satisfacción de afiliación debería incrementarse. Además, si la persona que devuelve el saludo
no es la buscada, el nivel de estima puede decaer, mientras que, si es la correcta, el nivel
aumentará. En definitiva, la forma en que se relacionan tareas y necesidades está determinada
por las características de la tarea.
La siguiente parte es independiente de la tarea. La información del evento ya ha sido
codificada como variación de las necesidades y, gracias a esto, el resto del cálculo emocional no
precisa la información de qué tarea ha detectado el evento. Es decir, en el ejemplo anterior, al
121
Figura 52. Arquitectura emocional implementada
Diseño e implementación de un asistente personal capaz de
expresar emociones
detectar al locutor buscado se aumentaría la satisfacción de estima. No obstante, estima
también podrá resultar incrementada por ganar a un juego. Por tanto, al analizar la variación de
estima no se tendrá en cuenta cuales son las causas del cambio de valor. Simplemente se analiza
el cambio de valor mediante un vector de apreciación (NIF vector).
El vector NIF es un conjunto de atributos que caracterizan el cambio del valor de la
necesidad. Dado que la necesidad está modelada por una variable numérica (n-value), el
conjunto de NIFs puede ser obtenido mediante un análisis matemático. Siguiendo con el ejemplo
dado, el evento de la tarea generó un aumento en el n-value de estima de, por ejemplo, +10.
Este aumento será analizado y clasificado mediante NIFs como deseable, relevante, etc (Más
adelante se hablará en detalle de este tipo de atributos).
Recapitulando lo sucedido se ve que, lo que inicialmente era una detección de locutor,
ahora es un conjunto de variables como deseable, relevante, etc. Es decir, se ha caracterizado un
evento de forma abstracta permitiendo la comparación entre eventos cualesquiera.
Adicionalmente se proporciona una información en forma de un Peso, que es dependiente
del nivel de Maslow que sufre el cambio. Así, el módulo generador emocional, recibe este tipo
de información abstracta y genera la respuesta emocional. Es decir, con el ejemplo dado, al
aumentar +10 el nivel de necesidad y clasificarlo como deseable, relevante, etc. el generador
emocional establecerá que la emoción resultante debe ser positiva y muy probablemente sea
alegría. Además, esta emoción tendrá una importancia, indicada por su Peso, frente a otras
emociones.
En los siguientes puntos se analizará con detenimiento cada una de las partes de esta
arquitectura (relación tareas-necesidades; variación de necesidades y generación de NIFs; y
generación de emociones).
5.2.4.1. Relación tareas-necesidades
122
Capítulo 5 - Emotividad
Carlos Sanz Moreno
La inclusión de una nueva tarea requiere definir a qué necesidades afectará cada uno de
los eventos que es capaz de generar. A continuación se muestra el total de los eventos que han
sido considerados en el sistema.
En la figura se ve tanto el módulo que genera el evento como la necesidad a la que se
asocia dicho evento. No obstante, como se puede apreciar, ningún evento ha sido relacionado
con la necesidad de afiliación o variable changes. Esto es así por motivos de simplificación del
dibujo, ya que, se ha considerado que todos estos eventos, además de modificar los niveles que
se indican en la figura, modifican la variable changes. A continuación se justificarán estas
conexiones.
123
Figura 53. Lista de eventos y relación con necesidades
Diseño e implementación de un asistente personal capaz de
expresar emociones
Fisiológica (survival): Se han asociado eventos de batería y de memoria. Este tipo
de eventos se refieren a los parámetros claves del sistema. Si cualquiera de ellos
falla gravemente, el sistema dejará de funcionar.
Seguridad (safety): Aquí se han asociado únicamente los eventos del módulo de
tratamiento de imágenes relativos a la luz. Se considera que, si no hay luz, el
sistema lo interpreta como un riesgo a su seguridad, ya que esto impide la
realización de tareas como utilizar la cámara para recoger imágenes.
Afiliación (changes): Como se ha dicho, a este nivel afectan todos los eventos de
la figura. Esto es debido a que todos ellos tienen una procedencia externa. Es
decir, la ocurrencia de cualquiera de estos eventos implica que ha habido una
interacción con alguien.
Estima (success): En este nivel influyen los eventos concepto reconocido y
presentación por parte del módulo de reconocimiento. Es decir un éxito en el
reconocimiento de voz aumenta el nivel de estima. En cuanto a presentación,
tiene más que ver con que el sistema desee conocer gente, por ello, al conocer a
alguien lo califica como éxito. También afectan alabanza, saludo y despedida, por
parte del control de conversación y, caricias, por parte del sistema central. Estos
últimos eventos tienen el significado de un reconocimiento, por parte de un
usuario, de las acciones que realiza el sistema, mientras que, saludo y despedida,
están relacionados con el concepto el objetivo de servir al usuario, es decir, si el
usuario se va el sistema no cumple su objetivo. Finalmente, de los dos juegos 3 en
raya, están los eventos ganar, perder y empatar que se relacionan con el éxito en
dicha tarea.
Autorrealización (ethics): A este nivel afectan el evento insulto del módulo de
conversación y los movimientos ilegales del módulo de juego. Se ha considerado
que estos dos eventos son contrarios a la moralidad del sistema.
Una vez que se han definido qué tareas afectan a qué necesidades, se procederá a detallar
matemáticamente esta relación.
5.2.4.2. Variación de necesidades.
La forma en cómo se relacionan las tareas con las necesidades es un tema complicado. De
hecho, dependiendo de cuál sea la necesidad afectada este procedimiento se realiza de una
124
Capítulo 5 - Emotividad
Carlos Sanz Moreno
forma u otra. Además, el tipo de tarea que interviene es, a su vez, un condicionante. Así pues, lo
más sencillo resulta analizar esta variación necesidad por necesidad.
Antes de comenzar el análisis pormenorizado se establecen una serie de consideraciones
generales:
Los valores de los niveles de necesidad (n-values) se encuentran acotados entre 0
y 100.
0 es el n-value cuando una necesidad se encuentra insatisfecha mientras que 100
es el de una necesidad completamente satisfecha.
Existe una zona crítica, por debajo del valor crítico tomado como 15, que indica
que cualquier evento tiene el riesgo de llevar a un estado de insatisfacción
absoluto de la necesidad.
Los n-values iniciales deben calcularse tras un periodo de evaluación de la
situación. De esta forma, el sistema no se pondrá feliz o triste de forma repentina
al iniciarse.
Existen necesidades de tipo incremental y necesidades directas. Las de tipo
incremental sufren una modificación respecto a su estado anterior con la
aparición de un nuevo evento. Las de tipo directo adoptan un valor proporcional
al valor de la variable que sufre el evento.
El cómputo de los niveles de necesidad se realiza asíncronamente, cada vez que se
produce un evento. No obstante, la evaluación del nivel de necesidad, esto es
generar los vectores de atributos NIF, se realiza de forma síncrona.
5.2.4.2.1. Nivel Fisiológico
Este nivel es de tipo forma directa ya que depende directamente de parámetros críticos
en el funcionamiento del sistema. Es decir, si cualquiera de ellos falla el nivel debe quedar
insatisfecho. O lo que es lo mismo, las variables que influyen en este nivel se relacionan
mediante una operación lógica “and” o “y”, equivalente a una multiplicación. De ésta forma el n-
value survival será
125
Diseño e implementación de un asistente personal capaz de
expresar emociones
Así pues, si, tanto nivel de batería como memoria libre, valen 0, el nivel valdrá 0.
La gráfica anterior es una representación de una situación de funcionamiento en la que el
sistema consume memoria de forma constante hasta quedarse con un 10% de memoria libre.
Así mismo el nivel de batería también decrece hasta que en el instante 9 se conecta a la red
eléctrica. El resultado es que el valor de survival decrece y, pese a que se mejora la situación de
batería, el consumo de memoria hace que esta necesidad no se encuentre satisfecha.
5.2.4.2.2. Nivel de Seguridad
Este nivel depende directamente del valor de la luminosidad y, por tanto, no presenta
grandes problemas. Como particularidad cabe citar el proceso de normalización de luminosidad.
Luminosidad es una variable que recoge la luminosidad medida en el entorno. Sus valores
típicos son del orden de 107 y por tanto debe ser sometido a un proceso de normalización. En
primer lugar se define un procedimiento de filtrado de muestras de luz. Este procedimiento
consiste en que luminosidad sea el promedio de varias medidas, en concreto se ha optado por
una historia de 5. El funcionamiento es el siguiente: cada vez que se realiza una medida (éstas se
126
Figura 54. Simulación de survival
Capítulo 5 - Emotividad
Carlos Sanz Moreno
realizan de forma periódica) se incluye en la historia desechando la muestra más antigua.
Además se calcula la media aritmética de los cinco valores guardados. El siguiente paso es la
comparación de ese promedio con un umbral de luminosidad. Si el promedio es menor, se
considera que no hay luz, mientras que si es superior a dicho umbral, se considera que sí hay luz.
Finalmente, se normaliza mediante un proceso no lineal. Si el valor era superior al umbral (hay
luz) el n-value safety valdrá 100. Si, en cambio, el valor es inferior al umbral el safety resultará
de la siguiente expresión:
Donde valor Crítico es 15 (definido en consideraciones generales) y el umbral de luz es
2x107. De esta forma la simulación de este nivel es la siguiente.
En la gráfica superior está el valor de la luz en promedio mientras que, en la inferior, se
encuentra el n-value. Las líneas rojas son los umbrales tanto de luz como de necesidad. Se puede
ver que en las zonas en las que el valor de la luz está por encima del umbral, el n-value se
encuentra saturado en 100. Por el contrario, la zona de luz por debajo del umbral implica un
comportamiento lineal del n-value.
127
Figura 55. Simulación de safety
Diseño e implementación de un asistente personal capaz de
expresar emociones
Si a este nivel de necesidad se le incluyeran nuevas entradas deberían hacerse con una
relación lógica “or”. Es decir, este nivel, a diferencia del fisiológico, puede estar parcialmente
satisfecho aunque alguno de los parámetros que influyen en él sea 0. En otras palabras, ahora,
para que el sistema falle, deben fallar todos los parámetros que influyen en el nivel. Por el
contrario, antes, en el fisiológico, para que el sistema fallase debía fallar al menos uno.
5.2.4.2.3. Nivel de Afiliación
Para este nivel se tienen en cuenta todos los eventos posibles del sistema. Por ello, resulta
necesario algún mecanismo que sea capaz de adaptar el efecto de cada evento en este nivel.
Como una primera alternativa surge la idea de utilizar porcentajes determinados por las propias
tareas generadoras de eventos. El problema de esto es que, al coincidir este mecanismo con el
desarrollado para otros niveles, un mismo evento afectaría de forma similar a distintas
necesidades, por lo cual parece redundante la existencia de varios niveles. Como alternativa se
ha propuesto un mecanismo de influencia basado en la cantidad de información que
proporciona un evento. En este sentido un evento que es muy repetitivo resulta de menor
interés en comparación con un evento que se repite cada más tiempo.
Para llevar a cabo el mecanismo mencionado se hace uso de un histograma por cada
evento. Este histograma recoge la cuantificación de un valor del evento y el número de
ocurrencias de cada una de ellas. Posteriormente, en base al número de ocurrencias de un caso
y al número de ocurrencias globales se puede obtener un porcentaje que, tras la adaptación
pertinente, estará relacionado con la cantidad de información. Inicialmente se analizará el
mecanismo del histograma para un caso particular como puede ser la luz.
La luz es un evento periódico, por lo que medir la velocidad de repetición no resulta de
interés. En su lugar se analizará el valor de luminosidad proporcionado, de esta forma las
distintas situaciones posibles de luminosidad quedan caracterizadas. Por ejemplo, otro caso
sería analizar movimiento. En esta ocasión, al ser evento asíncrono, sí proporcionaría
información analizar con qué velocidad se producen.
No obstante, volviendo al caso de la luz, se analizará el nivel de luminosidad. Este nivel es
una variable continua que puede tomar muchísimos valores y, por tanto, debe aplicarse un
proceso de cuantificación. En este sentido se ha definido un rango desde 0 hasta 4x107 con saltos
128
Capítulo 5 - Emotividad
Carlos Sanz Moreno
de 0.25x107. De esta forma cualquier valor fuera de rango se aproximará al extremo más cercano
mientras que los valores que queden dentro serán asignados al nivel más cercano.
Antes de presentar los resultados de la simulación realizada es necesario resaltar otro
concepto. Este histograma pretende, a partir de un conjunto de mediciones, ser capaz de
estimar la probabilidad para cada uno de sus niveles. En este sentido es necesario el empleo de
alguna técnica que, a partir de los datos presentes, sea capaz de estimar la probabilidad de los
otros niveles. Para realizar esto aparecen diversas alternativas:
Interpolación: La interpolación consiste en generar una probabilidad a partir de
los niveles vecinos. Asumiendo esta técnica se incurre en el error de suponer que
la función de la probabilidad estimada se corresponde con una recta.
K-NN vecinos: Esta técnica consiste en determinar la probabilidad estimada de un
punto a partir de los K vecinos. Es importante señalar que no importa la longitud
de la distancia entre el punto y los vecinos. Se debe coger K.
Ventana de Parzen: El condicionante ahora no es el número de vecinos que se
elegirán sino la longitud de la ventana. De esta forma, en función de donde se
encuentre el punto que va a ser estimado, el número de vecinos que intervendrán
en el cálculo será uno u otro.
El estudio sobre la elección de qué método es el que presenta mayores ventajas rebasa
ampliamente el objetivo de este proyecto. No obstante, se ha determinado emplear una
Ventana de Parzen. La anchura de esta ventana también debe ser escogida teniendo en cuenta
las bondades y defectos de cada caso. Por ejemplo, una ventana muy pequeña llevaría a que las
contribuciones vecinas no se tuviesen en cuenta mientras que una ventana excesivamente
grande llevaría a que el número de ocurrencias en cualquier nivel se homogeneizase. Para este
caso se ha definido la siguiente anchura.
129
Diseño e implementación de un asistente personal capaz de
expresar emociones
Como se ve en la simulación, inicialmente hay un situación inicial con dos repeticiones de
1.5x107 y tres repeticiones de 3.5 x107. A continuación se produce un primer evento 2.6 x107,
este evento se cuantifica en el nivel de 2.5 x107 y se determina su valor. En este caso no hay
ningún vecino por lo que el valor es uno (la única ocurrencia es la del caso actual). En la tercera
gráfica se aprecia un segundo evento, esta vez de valor 1.72 x107. En esta ocasión dicho evento
se cuantifica en el nivel de 2 x107 y se recalcula su valor. En este caso sí existen vecinos, por lo
que la ocurrencia es resultado del siguiente análisis.
130
Figura 56. Simulación de histogramas para luz
Capítulo 5 - Emotividad
Carlos Sanz Moreno
A partir del nuevo punto se dibuja la ventana de anchura 2x0.25 alrededor de él, tal y
como muestra la figura.
Como se ve, los niveles que quedan dentro son el 1.5x107 y el 1.75x107. Este último nivel
es, por proximidad, al que se va a asignar el nuevo evento. Por tanto, el siguiente paso es
determinar la estimación de ocurrencias del nivel al que se asigna el nuevo punto. Para ello se
promedia el número de ocurrencia de los niveles que caen en la ventana teniendo en cuenta una
nueva ocurrencia en el nivel que corresponda.
En este ejemplo concreto:
Que es el resultado presentado en la simulación de histogramas.
131
Figura 57. Ventana de Parzen sobre histograma para el punto 1.72x107
Diseño e implementación de un asistente personal capaz de
expresar emociones
Finalmente, el cuarto histograma de la simulación presenta un nuevo caso. Esta vez a
partir del punto la ventana no incluye ningún nivel vecino que tenga un número de ocurrencias
distinto de cero. Es por esto que el número de repeticiones para el nivel 1.75x107 aumenta en 1.
Una vez analizado el cálculo de las contribuciones resta profundizar en el mecanismo de
modificación de changes. Este mecanismo consiste en la modificación mediante contribuciones
que son resultado de todo el cálculo anterior. En concreto la contribución de un nivel se define
como:
De esta forma se obtiene un valor para las contribuciones menor o igual que uno. El
siguiente paso es utilizar ese valor para incrementar el n-value changes de la siguiente forma.
Con este modelo el límite superior es 100 y es convergente. No obstante existe un
problema, y es que ningún evento decrementa este nivel. Por ello, atendiendo a la definición de
changes (cambios ocurridos) tiene sentido que la causa por la que se decremente este nivel sea
el paso del tiempo. De esta manera, tras un cierto tiempo sin cambios, este nivel de necesidad
tornará insatisfecho.
El modelo matemático que lo recoge es el siguiente:
Tras una serie de repeticiones
De modo que, teniendo en cuenta que esta evaluación se hará cada, aproximadamente,
100 ms y estableciendo una caída de changes de un 60% se puede obtener que factor realmente
coincide con τ-1. A continuación se puede ver una simulación del funcionamiento completo de
changes asociados a eventos procedentes de la luz. Para dicha simulación se ha supuesto un τ -
132
Capítulo 5 - Emotividad
Carlos Sanz Moreno1=0.0338, o lo que es lo mismo, se ha supuesto que el sistema tarda 15 segundos en atenuar un
60% el nivel de changes.
En la simulación se aprecia un conjunto de eventos periódicos de luz en color verde y el
nivel de changes en azul. Inicialmente sólo ocurren eventos del mismo valor (3.5x10 7) por lo que
la información que aportan es pequeña y, en consecuencia, el efecto sobre el valor de changes
es nulo. De esta forma changes se amortigua por el paso del tiempo.
A continuación sucede un evento de valor 2x107. Este evento es la primera vez que
ocurre, y como en el sistema se habían producido otro tipo de eventos, el valor de changes se ve
alterado. A partir de este momento se suceden eventos del mismo valor lo que hace que la
tendencia de changes sea a atenuarse.
Finalmente el último evento es de valor 1.72x107 que, como se puede apreciar en el
histograma, es la primera vez que ocurre. En este sentido, su contribución será enorme, de
modo que el valor de changes aumenta casi llegando al 100%. A partir de este momento se
terminan este tipo de eventos y el resultado es la atenuación, mediante la constante de tiempos,
de este nivel.
133
Figura 58. Simulación completa de Changes
Diseño e implementación de un asistente personal capaz de
expresar emociones
5.2.4.2.4. Nivel de Estima
Este nivel depende de diferentes eventos procedentes de distintos módulos. La forma
general de actualización de este n-value es mediante porcentajes. Cada tarea indica el cambio de
este n-value, ya sea mediante un incremento o un decremento, y proporciona un porcentaje. Si
es un incremento el porcentaje se refiere a la reducción del opuesto del n-value. Si, por el
contrario, se refiere a un decremento, el porcentaje es relativo al decrecimiento del n-value.
Matemáticamente el modelo es el siguiente.
Las consecuencias inmediatas de este modelo matemático son:
El n-value tiene como límite superior 100. Además es convergente
asintóticamente a este límite.
El límite inferior del n-value es 0 y también converge asintóticamente.
Los eventos positivos tienen una influencia dependiente del estado de la
necesidad. De esta forma, la aparición de eventos positivos cuando el n-value es
elevado, presenta una modificación de la necesidad menor que si el n-value fuese
bajo. Es decir, en estados de insatisfacción se valora más la aparición de eventos
positivos, mientras que en estados de satisfacción los eventos positivos son
menos importantes. Así mismo, estas conclusiones se pueden extender para el
caso de eventos negativos, haciéndose obvio que los eventos negativos tendrán
mayores consecuencias cuando el sistema se encuentra en un estado de
satisfacción.
134
Capítulo 5 - Emotividad
Carlos Sanz Moreno
En la figura se presenta la simulación de este n-value. Para su realización se han supuesto
8 eventos representados en color verde. Así mismo, el valor inicial de success era de 50. Como se
ve, el primer evento es un saludo que incrementa el valor de success. Seguidamente hay un
error de reconocimiento que lo decrementa. A partir de este momento se suceden una serie de
caricias que elevan el valor de success hasta 85 más o menos. Por último hay un nuevo saludo y
una victoria que dan el valor final de 93. El cálculo sigue las operaciones descritas anteriormente
por lo que la única incógnita son los porcentajes de cada evento:
Saludo: un evento saludo tiene un tanto por uno fijo de 0,25. Esto implica que
decrementa el opuesto de success un 25% cada vez que ocurre.
Error de reconocimiento: este evento también responde a un porcentaje fijo, en
este caso es de 0,15. Sin embargo, en esta ocasión se disminuye un 15% success
con cada aparición.
Ganar: otro evento de tanto por uno fijo. En este caso vale un 0,4 y, al ser un
evento de éxito, contribuye a disminuir el opuesto de success un 40%.
Caricia: este evento tiene un peso especial que se modifica en función de la
historia. Guarda los tres últimos eventos de este tipo ocurridos y a partir de ellos
135
Figura 59. Simulación de success
Diseño e implementación de un asistente personal capaz de
expresar emociones
estima una frecuencia de repetición. Esta frecuencia es comparada con una
estimación de la frecuencia máxima posible de este tipo de eventos, y, con esta
información se genera un porcentaje que varía a lo largo del tiempo.
5.2.4.2.5. Nivel de Autorrealización
Este nivel se ve afectado por movimientos legales e ilegales por parte de los juegos y, por
insultos, por parte del control de conversación. El funcionamiento es similar al nivel de estima.
Cada tarea evento proporciona una dirección (disminución o aumento) y un porcentaje (en que
se modifica el n-value). En concreto, los movimientos ilegales así como los insultos disminuyen
el n-value en el porcentaje correspondiente, mientras que los movimientos legales lo
incrementan mediante la disminución del opuesto del n-value en el porcentaje determinado. De
esta forma el análisis matemático es el mismo que antes:
Además se vuelven a extraer las mismas conclusiones:
Límite superior de 100 con convergencia.
Límite inferior de 0 con convergencia.
Influencia de los eventos determinada por la situación de la necesidad. Si está
insatisfecha los eventos positivos tienen mayores efectos. Por el contrario, si está
satisfecha los eventos negativos tendrán más efecto.
136
Capítulo 5 - Emotividad
Carlos Sanz Moreno
La simulación adjunta consiste en un caso en el que se está jugando una partida. Por este
motivo se suceden una serie de movimientos legales. Acto seguido se producen dos
movimientos ilegales que originan la sucesión de tres insultos. Como puede verse, el n-value
ethics se inicia en 50 y, con la ocurrencia de los sucesivos eventos positivos, incrementa
gradualmente su valor hasta aproximadamente 80. A partir de ese momento se suceden
movimientos ilegales que conducen a ethics hasta 20. Finalmente, los insultos acaban
arrastrando el valor hasta la zona crítica. Los porcentajes de cada evento son:
Movimiento Legal: Presenta un porcentaje fijo de 0.2. Es decir, decrementa el
opuesto de ethics un 20%.
Movimiento Ilegal: Presenta un porcentaje fijo de 0.25. Es decir, decrementa
ethics un 25%.
Insulto: Presenta un porcentaje fijo de 0.5. Es decir, decrementa ethics un 50%.
5.2.4.3. Generación de NIFs
Como se ha mencionado, una de las características del modelo basado en las necesidades
de Maslow es que los eventos se convierten en un cambio de los n-values. Por tanto, la
obtención de atributos de evaluación a partir de estos cambios, puede ser realizada
matemáticamente.
137
Figura 60. Simulación de ethics
Diseño e implementación de un asistente personal capaz de
expresar emociones
Otro aspecto relevante es el número de atributos de evaluación necesarios. Para abordar
este problema se debe pensar en que la misión de estas variables es caracterizar un evento de
forma que se puedan diferenciar unas emociones u otras a partir de ellos. Atendiendo a las
características de expresión emocional de este sistema. Concretamente a los gestos que se
pueden realizar con la cara robótica así como a las diferentes con que emociones se puede
sintetizar texto. Se concluye que el número de emociones que pueden ser expresadas es
reducido. De hecho son 6 emociones: miedo, alegría, tristeza, enfado, sorpresa y neutralidad. Así
pues, el número de atributos de evaluación no precisa ser muy elevado.
En cuanto a la notación, se han denominado NIF, o atributos independientes de
necesidad, puesto que permiten obtener la información de la misma forma para cualquier
necesidad. Es decir, dependen del valor n-value pero no de a qué nivel pertenezca.
A continuación se detallará matemáticamente cada uno de los NIFs y se realizará una
simulación para cada uno de ellos. En la simulación se utilizará un n-value genérico que, como
todos, estará acotado entre 0 y 100 y cuya zona crítica está por debajo de 15.
Finalmente se debe mencionar el otro atributo que caracteriza a la variación de un nivel,
el Peso. Este atributo no es exactamente un NIF, puesto que su valor está determinado por qué
nivel sea el evaluado, lo que lleva a pensar que es un atributo dependiente de la necesidad. Los
valores que puede tomar este atributo son estáticos y predefinidos. Para el nivel fisiológico vale
5 y decrece con cada nivel hasta valer 1 para autorrealización.
5.2.4.3.1. Deseabilidad
La deseabilidad caracteriza cómo, el evento ocurrido, contribuye a satisfacer o no la
necesidad. Se modela mediante una variable continua entre -100 y 100 cuyo signo está
asociado al sentido de la satisfacción de una necesidad. Es decir, si el evento contribuye a que se
satisfaga una necesidad el valor será positivo. Si, por el contrario, el evento conduce a la
insatisfacción de la necesidad, será negativo.
Además, la deseabilidad proporciona información que permite comparar distintos
eventos del mismo signo. Es decir, dos eventos que tiendan a satisfacer una necesidad deben
ser diferenciados en función de cuánto contribuye cada uno. Esta información está contenida en
el valor absoluto.
138
Figura 61. Simulación de deseabilidad.
Capítulo 5 - Emotividad
Carlos Sanz Moreno
Así pues, la deseabilidad corresponde matemáticamente a la derivada primera del n-value
Como se puede ver en la simulación pertinente, el módulo de la deseabilidad es mayor
cuanto mayor es el cambio que experimenta el n-value. Inicialmente hay incrementos pequeños
del n-value que se suceden de forma continuada. Éstos son de deseabilidad positiva y módulo
reducido. Además se puede apreciar que hacia el instante 20 hay una variación de la pendiente
del n-value lo cual modifica el valor de deseabilidad. Posteriormente, hacia el instante 60, hay
una disminución importante del n-value y por tanto la deseabilidad es negativa llegando a
alcanzar el valor de -20. Esto es debido a que cambia el n-value de forma más o menos brusca.
Finalmente, cabe señalar que, cuando el valor del n-value no se modifica, la deseabilidad
permanece igual a 0. Esto es debido a que este NIF caracteriza cambios y no situaciones.
139
Diseño e implementación de un asistente personal capaz de
expresar emociones
5.2.4.3.2. Inesperado
Este atributo caracteriza la tendencia a corto plazo. Su significado parte de la hipótesis de
que un evento tiende a ser muy parecido al anterior. O lo que es lo mismo, el sistema tiende a
no sufrir cambios en su tendencia. En este sentido si la tendencia es una reducción del n-value
una conservación o un aumento de este valor serán inesperados. Así mismo, una variación en la
velocidad de reducción de dicho valor también es considerada como inesperada.
En definitiva, inesperado caracteriza cuánto se aparta el evento actual de la tendencia
generada por el evento precedente. Esto se puede modelar matemáticamente mediante la
diferencia entre el evento actual y el evento anterior convenientemente normalizado.
Además, por su significado, este NIF sólo tendrá valores entre 0 (evento esperado) y 100
(evento muy inesperado).
140
Figura 62. Simulación de inesperado en sistema continuo
Capítulo 5 - Emotividad
Carlos Sanz Moreno
En la simulación adjunta se aprecia que el valor de inesperado es 0 a menos que se
produzca un cambio de pendiente. Analizando en detalle el máximo de inesperado se aprecia
que una variación desde una pendiente de -17,5 aproximadamente, a una de -1.67, inesperado
vale alrededor de un 8. Lo cual es coherente con el hecho de que el valor máximo de inesperado
se obtiene si se pasa de una pendiente de -100 a otra de +100. Si por el contrario se supone que
el n-value sufre eventos puntuales que modifican su valor de forma discontinua, se tendrá la
siguiente simulación.
Ahora las variaciones ocurren en saltos, lo que genera eventos inesperados en cada
variación. Nótese que ambas simulaciones tratan la misma secuencia de valores del n-value. No
obstante, mientras que en el sistema continuo los eventos se sucedían con cada instante de
tiempo, en el sistema discontinuo apenas hay catorce eventos.
5.2.4.3.3. Urgencia
La urgencia modela el grado en el que la velocidad de variación generada puede conducir
al nivel crítico desde la situación actual. Es decir, tendrá en cuenta tanto la relación entre, el
141
Figura 63. Simulación de inesperado en sistema discontinuo
Diseño e implementación de un asistente personal capaz de
expresar emociones
módulo del cambio producido y el necesario para llegar a la zona crítica, como la distancia a la
zona crítica. Debido a esta definición se intuye que la urgencia será una variable no lineal. De
hecho, una vez se alcanza el nivel crítico, urgencia queda saturada en su valor máximo. También
se considera de urgencia máxima que la repetición del evento conduzca a la zona crítica.
Finalmente, el tramo lineal de urgencia se modela como, la relación entre la variación ocurrida y
la necesaria para llegar a la zona crítica por un peso que es inferior cuanto más lejos se esté de la
zona crítica. El detalle matemático es el que sigue.
Nuevamente hay que resaltar que la urgencia está acotada entre 0 (valor mínimo) y 100
(valor máximo). Además, con este modelo, el mismo cambio es menos urgente cuando el n-
value es elevado pues, por un lado el cambio producido respecto al necesario para alcanzar la
zona crítica es menor y, por el otro, la situación está más cerca de la satisfacción de la necesidad
y, por tanto, cualquier cambio tiene menos urgencia. Sin embargo, si el mismo cambio ocurriera
en zonas de bajo valor del n-value sería mucho más urgente porque, por un lado, está en una
142
Figura 64. Simulación de urgencia
Capítulo 5 - Emotividad
Carlos Sanz Moreno
zona cercana a la zona crítica y, por el otro, porque la distancia entre el cambio ocurrido y el
cambio necesario para caer en la zona crítica es menor.
Analizando la simulación de este NIF lo primero que se ve es que, cuando el n-value se
encuentra por debajo del nivel crítico, urgencia vale 100. Otra característica interesante que se
desprende de la simulación se puede ver en el tramo del sexto al octavo cambio de pendiente.
En él se aprecia que, con una tendencia generada (mismo módulo de cambio en cada instante
de tiempo), la urgencia se incrementa en la medida en que el valor del n-value va siendo más
bajo.
Si se realiza la simulación para un sistema discontinuo se aprecia que el cuarto evento,
que conduce al valor de 100, no es urgente, mientras que el sexto evento, que conduce al valor
50, tiene una urgencia máxima, pues la repetición de este evento conduce a la zona crítica.
Finalmente, cabe destacar que existen un par de eventos (1º y 13º) que incrementan el n-value
hasta un valor inferior a 100 pero superior a la zona crítica. Estos eventos presentan algo de
urgencia, pues no conducen al estado de satisfacción máxima. Sin embargo, si estos eventos
provocasen una disminución del n-value presentarían una mayor urgencia. Hay que recordar que
143
Figura 65. Simulación de urgencia con variaciones discontinuas
Diseño e implementación de un asistente personal capaz de
expresar emociones
urgencia depende tanto de la relación entre el cambio producido y el necesario para alcanzar la
zona crítica, como de la situación a la que conduce el cambio.
5.2.4.3.4. Relevancia
La relevancia es un atributo que caracteriza la situación a la que conduce un evento. En
este sentido valores más altos del n-value serán caracterizados como menos relevantes que
valores bajos. Matemáticamente la relevancia es una función que responde a una recta entre
100 y el valor crítico y que se satura por debajo de él. Además esta recta presenta un cierto
offset que permite que, cuando el n-value vale 100, la relevancia no sea 0. Esto significa que
eventos que tengan lugar cuando la necesidad está satisfecha son poco relevantes pero no
irrelevantes. La expresión matemática es la siguiente.
En la simulación correspondiente se aprecia cómo el valor de relevancia va
disminuyéndose a medida que aumenta el n-value hasta alcanzar su mínimo (15). A partir del
sexto cambio de pendiente se aprecia como la relevancia aumenta hasta que se satura en 100,
pues el n-value se encuentra en la zona crítica. Finalmente, la relevancia vuelva a bajar porque
se satisface la necesidad (n-value sube a 90).
144
Figura 66. Simulación de relevancia
Capítulo 5 - Emotividad
Carlos Sanz Moreno
5.2.4.3.5. Infrecuente
Este atributo indica el grado de “desconocido” que es un evento. Es decir, si en la
situación actual se están sucediendo eventos que producen la misma variación, este atributo
tenderá, tras un número de repeticiones suficientes, a 0. No obstante, si, de repente, aparece un
evento que produce un cambio del n-value distinto de la tendencia generada a largo plazo, ese
será evaluado como más infrecuente (situación desconocida). Matemáticamente, esto es
modelado mediante una distribución normal en la que, con cada evento, se calcula el inverso de
la probabilidad de ocurrencia y se actualiza la media y la varianza con el nuevo cambio del n-
value sucedido.
En la simulación adjunta se ven tres gráficas: la media, la desviación y la simulación en sí. Como
puede apreciarse al principio de la simulación, hay un cambio importante en el tercer evento,
esto hace que la media y la desviación fluctúen. Sin embargo, justo a continuación, se entra en
una zona de cambios más o menos constantes del n-value. En esta zona, tanto la media como la
desviación se van estabilizando. De hecho, la media acaba alcanzado el valor uno mientras que la
desviación baja hacia 0. Como consecuencia, el valor de infrecuente desciende ya que cada vez
es más probable que ocurra uno de esos eventos. Finalmente se llega a la zona en la que se
alcanza la región crítica. En esta zona, tanto la media como la desviación vuelven a variar. De
hecho, la media desciende, ya que los eventos provocarán cambios negativos, y la desviación,
obviamente, aumentará debido a que se rompe con la situación anterior. En consecuencia el
valor de inesperado volverá a ser elevado ya que la probabilidad de un evento como estos era
reducida.
Una de las particularidades que presenta el empleo de este atributo es la capacidad para
adaptarse a una situación. Si se repiten eventos que generan las mismas variaciones del n-value
145
Diseño e implementación de un asistente personal capaz de
expresar emociones
el sistema cada vez los valorará como menos infrecuentes. De esta forma, un evento que
inicialmente era extraño, tras un número de repeticiones es evaluado como típico.
5.2.4.4. Generación de emociones
La generación de emociones a partir de los NIFs se realiza en el módulo generador de
emociones. Gracias al diseño del sistema, en el que los atributos son iguales para cualquier nivel,
éste proceso puede ser realizado de una forma genérica. Cada vez que se detecta una variación
en un n-value se generá el vector NIF correspondiente, que es utilizado en el cálculo de la
variación emocional. Además, tras un cierto tiempo, las emociones tenderán a amortiguarse.
En cuanto al número de emociones implementado, el factor determinante, como ya se
mencionó, es la capacidad expresiva del sistema. En concreto, la cara robótica y el sintetizador
de voz (interfaces de salida) son los condicionantes del repertorio que puede ser expresado.
Teniendo en cuenta estas características, el número de emociones presentes es de seis: miedo,
alegría, tristeza, enfado, sorpresa y neutralidad. De forma genérica, la variación de una emoción
puede estar expresada de la siguiente manera.
146
Figura 67. Simulación de infrecuente
Capítulo 5 - Emotividad
Carlos Sanz Moreno
147
Diseño e implementación de un asistente personal capaz de
expresar emociones
Donde los pesos k1, k2 y k3 dependen de distintas circunstancias. En la siguiente tabla
quedan recogidos sus valores.
El singo de la deseabilidad es una función que modifica el signo del incremento en función
de la deseabilidad y la emoción. En concreto, para las emociones de alegría y sorpresa
148
K1 K2 K3
Alegrí
a + 0.5 0.5 0.5 Peso
>
>
0
Sorpr
esa+ 0.5 Peso
~
0
Triste
za- Peso
>
>
0
Mied
o
- 0.5 0.5~
0
Enfad
o- 0.5
~
0
Capítulo 5 - Emotividad
Carlos Sanz Moreno
(consideradas positivas), el signo del incremento coincide con el de deseabilidad. Esto implica
que un evento positivo aumente estas emociones. Sin embargo, el resto de emociones, miedo,
tristeza y enfado, presentan una relación contraria. El signo del incremento es opuesto al de la
deseabilidad. Esto provoca que eventos positivos reduzcan el nivel de estas emociones, mientras
que eventos negativos las incrementan.
En cuanto a la función de peso, ésta es una función que para alegría, sorpresa y tristeza
devuelve el peso tal cual. No obstante, para miedo devolverá 0 si el nivel de necesidad es
superior al de seguridad. Esto provoca que la contribución a miedo sea cero y refleja el hecho de
que el miedo está generado por amenazas a los niveles básicos de Maslow, que constituyen
riesgos para el funcionamiento del sistema. Finalmente, para enfado el peso será distinto de 0
para niveles de Maslow superior o igual a estima; Esto significa que el sistema se enfada por no
conseguir éxitos o por una ausencia de ética en las acciones. Además, dado que éstas son las
únicas fuentes de enfado, el peso de estos niveles para dicha emoción es elevado.
A continuación hay que hablar de la constante de tiempos. En concreto se distinguen dos
tipos de emociones, aquellas de largo plazo (alegría y tristeza) y aquellas de corto plazo (miedo,
sorpresa y enfado). Véase el siguiente caso: Tras un evento que genere sorpresa la tendencia es
que quede alegría ya que, la sorpresa, tras un cierto tiempo, desaparece. No tiene sentido que
alguien esté sorprendido media hora, o al menos, que exprese sorpresa durante media hora. En
este sentido, la constante de tiempo de sorpresa hace que dicha emoción se amortigüe de forma
más o menos rápida. No obstante, como el evento que genera sorpresa, por definición, también
generará un nivel de alegría, al tener esta última una constante de tiempos mayor, tardará más
en atenuarse y, en consecuencia, tras una sorpresa inicial quedará alegría hasta, que pasado
suficiente tiempo, la alegría se amortigüe y el sistema llegue a neutral. Esto mismo se produce
con las emociones negativas, miedo y enfado frente a tristeza. No obstante, regulando las
constantes de tiempo se puede modificar la personalidad del sistema, haciendo que tarde más o
menos en superar un enfado, o provocando que sea más o menos miedoso mediante la
constante de miedo.
Por último se hablará de la emoción neutral. Se ha mencionado que existían seis
emociones, no obstante, en la tabla de pesos para cálculo el emocional no aparecía neutral. Esto
es debido a que esta emoción está modelada de forma peculiar. Ningún evento en sí mismo
contribuye al aumento de la neutralidad. Es más bien la ausencia de eventos la que provoca la
149
Diseño e implementación de un asistente personal capaz de
expresar emociones
neutralidad, siendo los eventos los que atenúan esta emoción. En este sentido neutralidad se ha
modelado como el opuesto del sumatorio de todas las emociones.
De esta forma, el incremento de una emoción provoca una disminución de la neutralidad,
pero la amortiguación de una emoción provoca un aumento de la neutralidad.
Las consecuencias de este tipo de cálculo emocional pasan por que el sistema es capaz de, pasado un cierto tiempo, acostumbrarse a la situación de satisfacción de las necesidades. Esto provoca que la expresión emocional sea dinámica y cambie con el paso del tiempo.
150
Capítulo 5 - Emotividad
Carlos Sanz Moreno
5.2.5. Sistema emocional implementado
El propósito de este apartado es dar una visión general de cómo están distribuidas las
diferentes etapas del cálculo emocional en el sistema. Lo primero que se hará es recapitular el
proceso de cálculo emocional representado en la figura:
1. Aparece un evento en el contexto de una determinada tarea.
2. La tarea, conforme a su programación, modifica los n-values de los niveles de
necesidad correspondientes.
3. Los cambios en la satisfacción de las necesidades generan los NIFs de evaluación
de cada cambio.
4. El módulo generador de emociones, a partir de estos NIFs y de los Pesos genera la
respuesta emocional.
Una vez resumido cómo se calcula una nueva emoción se expondrá en qué módulo del
sistema se realiza cada acción ordenándolas según su secuencia de ocurrencia. Para ello se
utilizará el siguiente esquema.
151
Figura 68. Secuencia de cálculo emocional
Diseño e implementación de un asistente personal capaz de
expresar emociones
Como se ve, los módulos encargados de controlar las interfaces de entrada son los que
detectan un cambio en el entorno. Este cambio es enviado al módulo de comportamiento que,
tras un proceso de sondeo, lo retransmite a la tarea pertinente. Esta tarea generará una
respuesta, así como, un cambio en las necesidades del sistema.
Seguidamente, el sistema emocional almacena las variaciones de necesidad solicitadas y
permanece a la espera.
A continuación, el módulo de comportamiento solicita la emoción. En este momento el
módulo emocional realizará el cálculo de NIFs y el subsiguiente cálculo emocional para cada
nivel de necesidad que haya variado. Como resultado de este proceso, devuelve la respuesta
emocional dominante (de mayor valor).
Finalmente, el módulo de comportamiento, envía la respuesta de la tarea así como la
emoción a los controladores de las interfaces de salida, que se encargarán de enviar la respuesta
al exterior.
No obstante, llegados a este punto, se ha de realizar un breve inciso sobre el cálculo de la
emoción predominante. Teniendo en cuenta que cada emoción está modelada por un valor
152
Figura 69. Proceso de respuesta emocional
Capítulo 5 - Emotividad
Carlos Sanz Moreno
entre 0 y 100 y que puede haber dos emociones simultáneas con valores parecidos, es necesario
proporcionar un mecanismo que impida fluctuaciones de las emociones en momentos de
transición emocional. Esto es, por ejemplo, que una emoción, como alegría, va decreciendo
mientras que origina el aumento de neutral. En un instante determinado, ambas emociones
tendrán prácticamente el mismo valor y, por tanto, la respuesta emocional final fluctuará entre
ellas. Para resolver este problema, el sistema implementado incluye una cierta histéresis que
favorece la emoción predominante en el pasado hasta que la nueva emoción la supera en un
valor determinado. Con esto se garantiza que, tras el primer cambio emocional, no se sucederán
cambios a no ser que haya un aumento real de otra emoción.
Aunque no aparece reflejado en la figura, el módulo de comportamiento, cada cierto
tiempo, se encarga de solicitar la amortiguación de las emociones al módulo emocional.
En conclusión, este proceso se puede caracterizar de la siguiente manera:
Una primera fase compuesta de la detección de cambios del exterior de forma
asíncrona.
El envío de estos cambios a las tareas de forma síncrona.
Respuesta de las tareas y cálculo de los nuevos valores de las necesidades de
forma asíncrona.
Solicitud del estado emocional así como de la amortiguación de emociones, si
procede, de forma síncrona.
Respuesta final de forma síncrona.
Las acciones síncronas están gobernadas por la secuencia de ejecución del módulo de
comportamiento que se repite cada Periodo General de Muestreo (aproximadamente 100ms).
Finalmente, haciendo un nuevo análisis desde un punto más cercano a la programación, el
sistema emocional se compone de las siguientes partes:
Tarea: Módulo cliente que detecta un evento y comunica su nuevo estado
mediante la llamada al procedimiento remoto “Comunicar Situación
Módulo” que es procesada por el servidor de la tarea en el núcleo del
sistema. Como resultado se generará una actualización de las necesidades.
Necesidades: Modeladas como clases derivadas de la clase “CGoalProcess”
proporcionan una serie de métodos particulares para cada una de ellas que,
153
Diseño e implementación de un asistente personal capaz de
expresar emociones
tras ser llamados por los servidores de las tareas, actualizan el valor de la
necesidad. Además de estos métodos específicos de necesidad, heredan los
métodos necesarios para detectar el cambio de una necesidad y generar el
vector NIF pertinente (este método será llamado desde el Módulo de
Comportamiento).
Emociones: Las emociones son implementadas como objetos de la clase
“CEmotion”. Esta clase proporciona los métodos necesarios para: calcular
las emociones a partir de los NIFs. Este método se llama
“actualizaEmociones” y es llamado desde el método que detecta la
variación de la necesidad y genera un vector NIF; Buscar la emoción
máxima mediante “BuscaEmociónMáxima” llamado desde el módulo de
comportamiento; O amortiguar las emociones cada cierto tiempo mediante
“amortiguacionEmociones” también llamado desde el módulo de
Comportamiento.
5.2.6. Conclusiones del sistema emocional
Una vez expuesto el sistema emocional diseñado e implementado resulta conveniente
analizar los requisitos establecidos inicialmente:
Sistema multitarea: El sistema implementado es capaz de traducir cualquier
evento procedente de cualquier tarea en una variación de necesidades. A partir
de este momento, el cálculo de emociones se realiza de forma independiente a las
tareas, por lo que es factible para varias tareas distintas.
Sistema concurrente: El mecanismo de necesidades permite, por un lado,
acumular cambios de distintas tareas en una misma necesidad para que, a la hora
del cálculo emocional, la respuesta tenga en cuenta a todos los cambios. Por otro
lado, en el caso de que varias tareas afecten a distintas necesidades, el modelo
propuesto incluye una prioridad para cada necesidad de modo que, el cálculo
emocional contempla la importancia de unos eventos frente a otros.
Sistema escalable: La inclusión de una tarea en este sistema resulta instantáneo,
simplemente hay que definir qué eventos pueden ocurrir en la nueva tarea y
relacionar cada evento con las necesidades pertinentes. El resto del cálculo
emocional permanecerá invariable. No obstante, con esta implementación
154
Capítulo 5 - Emotividad
Carlos Sanz Moreno
también se ganan en escalabilidad en el otro extremo. Es decir, la inclusión de
nuevas emociones puede realizarse a partir de un mayor número de NIFs
obtenidos de la necesidad. Esto implica que la inclusión de nuevas emociones no
hacen el diseño de una tarea más complejo. En definitiva, la pirámide de Maslow
definen dos partes claramente diferenciadas.
En este sistema, la forma en la que se relacionan las tareas con las necesidades, así como
la forma en la que se calculan las emociones a partir de los NIFs, son condicionantes que, de
forma implícita, constituyen el temperamento del sistema. Actuando sobre estas variables así
como sobre las constantes de tiempo de las emociones, se puede conseguir un sistema que
tienda a estar enfadado con facilidad, o tienda a sorprenderse.
Finalmente, como se ha visto, la inclusión de la pirámide de Maslow, como objetivos de
alto nivel, resulta un importante avance en el modelo emocional. Sin embargo, sus efectos no
afectan únicamente a este cálculo. De forma implícita se ha dotado de un mecanismo capaz de
servir como motivación del sistema y, en consecuencia, permitiría generar comportamientos
autónomos que tiendan a satisfacer las necesidades. No obstante, esto va más allá de este
proyecto y queda recogido en el capítulo de líneas futuras.
155
Capítulo 6 – Subsistema de Comunicaciones
Carlos Sanz Moreno
CAPÍTULO 6
6 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.
157
Diseño e implementación de un asistente personal capaz de
expresar emociones
6.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
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.
158
Capítulo 6 – Subsistema de Comunicaciones
Carlos Sanz Moreno
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.
159
Figura 70. Topologías de redes peer-to-peer.
Diseño e implementación de un asistente personal capaz de
expresar emociones
6.2. Arquitectura Cliente/Servidor
6.2.1. Descripción
Su funcionamiento es sencillo, se tiene un ordenador cliente que requiere un servicio de
un ordenador servidor, que 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 determinadas
tareas y servidores para otras ya que el objetivo es que cada ordenador realice las funciones
óptimas para sus recursos (34).
La tendencia en este tipo de arquitecturas es 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
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
geográficas.
6.2.2. Componentes
Los componentes principales de una arquitectura Cliente/Servidor son:
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,
160
Capítulo 6 – Subsistema de Comunicaciones
Carlos Sanz Moreno
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.
6.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
clientes. No obstante, puede darse el caso de que el servidor actúe como
cliente para un tercer servidor.
161
Diseño e implementación de un asistente personal capaz de
expresar emociones
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.
6.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.
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
162
Capítulo 6 – Subsistema de Comunicaciones
Carlos Sanz Moreno
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.
6.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.
163
Diseño e implementación de un asistente personal capaz de
expresar emociones
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
164
Figura 72. Estructura de cliente-servidor de la implementación
Capítulo 6 – Subsistema de Comunicaciones
Carlos Sanz Moreno
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.
6.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.
6.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.
165
Diseño e implementación de un asistente personal capaz de
expresar emociones
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.
6.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).
6.3.2.1. XML-RPC
166
<?xml version="1.0"?><methodCall> <methodName>examples.getStateName</methodName> <params> <param> <value><i4>40</i4></value> </param> </params></methodCall>Solicitud XML-RPC
<?xml version="1.0"?><methodResponse> <params> <param> <value><string>South Dakota</string></value> </param> </params></methodResponse>Respuesta XML-RPC
Capítulo 6 – Subsistema de Comunicaciones
Carlos Sanz Moreno
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.
167
<soapenv:Envelope> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <req:echo xmlns:req="http://localhost:8080/axis2/services/MyService/"> <req:category>classifieds</req:category> </req:echo> </soapenv:Body></soapenv:Envelope>
Solicitud SOAP
<soapenv:Envelope> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"> <soapenv:Header> <wsa:ReplyTo> <wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address> </wsa:ReplyTo> <wsa:From> <wsa:Address>http://localhost:8080/axis2/services/MyService</wsa:Address> </wsa:From> <wsa:MessageID>ECE5B3F187F29D28BC11433905662036</wsa:MessageID> </soapenv:Header> <soapenv:Body> <req:echo xmlns:req="http://localhost:8080/axis2/services/MyService/"> <req:category>classifieds</req:category> </req:echo> </soapenv:Body></soapenv:Envelope>
Respuesta SOAP
Diseño e implementación de un asistente personal capaz de
expresar emociones
6.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.
A continuación se presenta un ejemplo de solicitud y respuesta mediante SOAP.
168
Capítulo 6 – Subsistema de Comunicaciones
Carlos Sanz Moreno
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
que da cobertura a las carencias de XML-RPC.
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 (35), una utilidad para la creación automática
del código SOAP a partir de la implementación en C++ de las funciones.
6.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.
169
Figura 73. Estructura física implementada
Diseño e implementación de un asistente personal capaz de
expresar emociones
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.
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.
170
Capítulo 7 – Resultados
Carlos Sanz Moreno
CAPÍTULO 7
7 RESULTADOS
Una vez concluida la presentación del sistema es necesario evaluar en qué medida han
sido alcanzados cada uno de los requisitos que se definieron en el Capítulo 2.
Interfaz multimodal: El sistema consta de una interfaz visual capaz de detectar
movimiento, caras y luz mediante cámara web además de poder representar
información por pantalla. También se ha incluido una interfaz verbal capaz de, por
un lado, reconocer conceptos e identificar usuarios y por el otro, de sintetizar voz.
Por último se ha añadido una interfaz física capaz de expresar emociones
mediante gestos faciales y detectar acciones como caricias, además de la
171
Diseño e implementación de un asistente personal capaz de
expresar emociones
implementación física de una versión de las tres en raya. Por tanto, se puede decir
que el requisito de crear una interfaz capaz de comunicarse con el exterior de
distintas formas está satisfecho.
Comportamiento emocional: Se ha visto como se ha definido un sistema
emocional que es capaz de evaluar la situación en cada momento y generar una
emoción acorde a ella. Además, esa emoción es tenida en cuenta a la hora de,
primero, elegir qué frase se va a sintetizar y segundo, de la entonación con que se
sintetizará. Por tanto, se ha conseguido definir un comportamiento acorde a las
emociones y, en consecuencia, este requisito resulta satisfecho.
Comportamiento personalizado: Se ha mencionado la inclusión de un sistema de
identificación de usuario mediante voz. Este sistema está asociado a un modelo de
usuarios que recopila la historia de las interacciones entre cada usuario y el
sistema, determinando, en base a ella, la relación que les une. Además esa
relación es tenida en cuenta a la hora de elegir las frases a sintetizar. De modo
que se está alterando el comportamiento en función de la relación con el usuario
y, por tanto, este requisito está cumplido
Funcionalidad de asistente doméstico: Prueba de esto es todo el Capítulo 4, en el
que se detallan cada una de las tareas incluidas: control de luces, control de
aspiradora Roomba, control de equipo HI-FI, etc. Todas estas tareas responden al
comportamiento como asistente domótico y, una vez más, el requisito está
cumplido.
Compañero de juegos: Se han incluido dos implementaciones del juego tres en
raya, una física y otra virtual. Ambas implementaciones son capaces de generar
información relativa a la situación del juego (ganar, perder, empatar, trampas…)
que es utilizada para generar variaciones en el sistema emocional. Como se ha
visto, el estado emocional es expresado de distintas formas de modo que, en
conjunto, se consigue que el sistema muestra su situación emocional tras eventos
sucedidos en el contexto del juego. Por tanto, este requisito está cumplido.
Arquitectura escalable: Se ha mencionado en repetidas ocasiones el objetivo de
intentar realiza un sistema lo más escalable posible. En cuanto a las tareas se
mencionó la creación de interfaces estandarizadas destinadas a crear una forma
de comunicación normalizada con el módulo de comportamiento. De esta
manera, la inclusión de las tareas resultaba muy sencillo pues simplemente habría
que ajustar cada nueva tarea a una interfaz común, evitando modificaciones en el
172
Capítulo 7 – Resultados
Carlos Sanz Moreno
resto del sistema. Además, al imponer requisitos únicamente relativos a la
interfaz, el grado de libertad a la hora de crear la tarea es enorme. Por otro lado,
la creación del sistema emocional ha contemplado como pilar base la
escalabilidad. Como se explica en el Capítulo 5, la inclusión de una nueva tarea no
supone grandes cambios en el modelo emocional, simplemente deben definirse
las necesidades que serán afectadas. Por tanto, el sistema presenta gran
escalabilidad en cuanto a tareas y muestra una arquitectura suficientemente
independiente para que la funcionalidad de una tarea pueda ser modificada de
forma independiente al resto del sistema. Es decir, el requisito está cumplido.
173
Capítulo 8 – Conclusiones y Líneas Futuras
Carlos Sanz Moreno
CAPÍTULO 8
8 CONCLUSIONES Y LÍNEAS FUTURAS
Este capítulo está dedicado a la reflexión sobre el trabajo realizado, a la autocrítica y como
fruto de ello se desprenderán líneas de actuación que pueden resultar interesantes a la hora de
mejorar el sistema.
Este proyecto ha sido financiado por la Cátedra Adecco-Indra basándose en el objetivo de
buscar accesibilidad en las tecnologías. En este sentido se ha realizado una presentación durante
el desarrollo del trabajo que resultó muy formativa en cuanto a la respuesta de las personas
frente a un sistema de estas características. El resultado fue que, mientras que el
comportamiento meramente “profesional” como asistente personal, es decir, controlar luces,
175
Diseño e implementación de un asistente personal capaz de
expresar emociones
pasar la aspiradora, etc. no generaba ningún tipo de respuesta por parte de los espectadores,
cuando se demostró el comportamiento emocional el público se interesó mucho más por el
agente. Este hecho refleja la importancia que tienen las emociones en el objetivo de crear
sistemas destinados a convivir con las personas.
Atendiendo a los resultados del proyecto, siempre ha estado presente que cada una de las
funcionalidades incluidas presenta un enorme campo que, en el contexto de un proyecto fin de
carrera, resulta imposible de profundizar. Por ello se ha optado por mostrar el potencial
disponible al incluir muchas funcionalidades pero sin profundizar en ninguna de ellas. De esta
forma se ha conseguido el objetivo de asistente personal capaz de realizar múltiples tareas.
No obstante, el hecho de apreciar las posibilidades de crecimiento ha motivado la
búsqueda de escalabilidad del sistema, en concreto, del sistema emocional. De hecho, éste es el
elemento que más tiempo de diseño ha consumido, ya que resultaba imperativo encontrar
alguna forma de crear un sistema emocional abierto que pudiese calcular una emoción
independientemente del número de tareas disponibles. Es decir, se sigue la tendencia actual de
la inteligencia artificial. Esto es la búsqueda de sistemas que no necesiten conocer todas las
opciones posibles antes de actuar, sino que presenten mecanismos que permitan adaptarse a
nuevas situaciones. En este sentido la inclusión de Maslow resulta de gran utilidad.
Para terminar se enumeraran una serie de líneas de trabajo que, durante el transcurso de
este proyecto, han aparecido como mejoras interesantes:
- La adaptación del modelo de comportamiento para que, en función del nivel de
satisfacción de las necesidades de Maslow, pudiera realizar acciones destinadas a
satisfacerlas resulta muy interesante a la hora de crear un sistema autónomo.
- Parece necesario invertir esfuerzos en perfeccionar las interfaces de salida para
enriquecer el rango de expresión emocional. De esta forma será preciso añadir
más emociones al modelo emocional y buscar una solución para generarlas, esto
puede ser mediante ejes. De hecho, numerosos trabajos emocionales se basan en
el modelado mediante ejes de positividad y negatividad, en este sistema las
emociones aparecen como regiones dentro del espacio definido.
- Otra de las funcionalidades interesantes a la hora de seguir trabajando en un
asistente de estas características es proporcionar la capacidad de aprender
acciones para contrarrestar una situación. Por ejemplo, si se va la luz el sistema
176
Capítulo 8 – Conclusiones y Líneas Futuras
Carlos Sanz Moreno
probaría un conjunto de acciones y monitorizaría el nivel de la necesidad. Si ésta
se satisface reforzaría las acciones realizadas y conseguiría aprender que
determinada acción tiene determinadas consecuencias. Este objetivo se podría
unir al de actuar conforme al nivel de necesidad.
- Mejora de la interfaz visual basada en Opencv: Como se ha visto, la funcionalidad
incluida en este proyecto es bastante básica. Sin embargo, es un hecho que con
esta herramienta se consiguen sistemas mucho más complejos. Por tanto, una
línea de trabajo consistiría en adaptar esta interfaz para ser capaz de distinguir
más elementos. Éstos pueden ser los gestos relacionados con las emociones de
una persona u otro tipo de características. Además es interesante preservar la
independencia del modelo frente a quién esté interactuando con él. De este modo
no será necesaria ninguna intervención con vistas a adaptar al sistema cada vez
que aparezca un nuevo usuario.
- Por supuesto, líneas de trabajo interesantes serían la profundización de las tares
incluidas, no obstante, en el GTH existen proyectos que tratan sobre ellas y, por
tanto, esta línea de trabajo consistiría más bien en la adaptación de a este
sistema. Por ejemplo, la inclusión del control del equipo HI-FI mediante lenguaje
natural.
177
Capítulo 9 – Pliego de Condiciones
Carlos Sanz Moreno
CAPÍTULO 9
9 PLIEGO DE CONDICIONES
9.1 Condiciones generales
9.1.I. La obra será realizada bajo la dirección técnica de un Ingeniero de
Telecomunicación y el número de programadores necesarios.
9.1.II. La ejecución material de la obra se llevará a cabo por el procedimiento de
contratación directa. El contratista tiene derecho a obtener, a su costa, copias del
pliego de condiciones y del presupuesto. El ingeniero, si el contratista lo solicita,
autorizará estas copias con su firma, después de confrontarlas.
179
Diseño e implementación de un asistente personal capaz de
expresar emociones
9.1.III. Se abonará al contratista la obra que realmente se ejecute, de acuerdo con el
proyecto que sirve de base para la contrata.
9.1.IV. Todas las modificaciones ordenadas por el ingeniero-director de las obras, con
arreglo a sus facultades, o autorizadas por la superioridad, serán realizadas
siempre que se ajusten a los conceptos de los pliegos de condiciones y su importe
no exceda la cifra total de los presupuestos aprobados.
9.1.V. El contratista, o el organismo correspondiente, quedan obligados a abonar al
ingeniero autor del proyecto y director de obra, así como a sus ayudantes, el
importe de sus respectivos honorarios facultativos por dirección técnica y
administración, con arreglo a las tarifas y honorarios vigentes.
9.1.VI. Tanto en las certificaciones de obra como en la liquidación final, se abonarán las
obras realizadas por el contratista a los precios de ejecución material que figuran
en el presupuesto, por cada unidad de obra.
9.1.VII. En el caso excepcional en el que se ejecute algún trabajo no consignado en la
contrata, siendo admisible a juicio del ingeniero-director de las obras, se pondrá
en conocimiento del organismo correspondiente, proponiendo a la vez la
variación de precios estimada por el ingeniero. Cuando se juzgue necesario
ejecutar obras que no figuren en el presupuesto de la contrata, se evaluará su
importe a los precios asignados a ésta u otras obras análogas.
9.1.VIII. Si el contratista introduce en el proyecto, con autorización del ingeniero-director
de la obra, alguna mejora en su elaboración, no tendrá derecho sino a lo que le
correspondería si hubiese efectuado la obra estrictamente contratada.
9.1.IX. El ingeniero redactor del proyecto se reserva el derecho de percibir todo ingreso
que en concepto de derechos de autor pudiera derivarse de una posterior
comercialización, reservándose además el derecho de introducir cuantas
modificaciones crea convenientes.
9.2 Condiciones generales a todos los programas
9.2.I. Estarán realizados en lenguajes estándar.
9.2.II. Se entregarán tres copias de los listados para cada programa o subrutina.
9.2.III. Los programas y subrutinas deberán ir documentados, indicando brevemente su
función, entradas y salidas, y cualquier otra información de interés.
9.2.IV. Se entregará, junto con los programas, un manual de uso e instalación.
180
Capítulo 9 – Pliego de Condiciones
Carlos Sanz Moreno
9.3 Condiciones generales de prueba
9.3.I. Los programas y subrutinas que se entreguen deberán funcionar sobre un
ordenador PC o compatible con microprocesador AMD 2000+ o superior y con, al
menos, 256 MBytes de RAM. Se ejecutarán bajo sistema operativo Windows XP
Professional, en entorno local.
9.3.II. Solamente se aceptarán los programas si funcionan correctamente en todas sus
partes, rechazándose en caso contrario. Si, por causas debidas al contratista, los
programas no funcionaran bajo las condiciones expuestas anteriormente, la
empresa contratante se reservará el derecho de rescindir el contrato.
9.4 Recursos materiales9.4.I Ordenador PC compatible, AMD Athlon XP 2300, 1GB de memoria RAM y
40 GB de disco duro.
9.4.II Altavoces.
9.4.III Tarjeta de red Ethernet.
9.4.IV Controlador X10 Marmitek LM15 y marmitek CM11.
9.4.V WebCam.
9.4.VI Cara robótica compuesta por 5 servomotores y placa controladora
Netmedia 8 servo torque board.
9.4.VII Módulo iRTrans.
9.5 Recursos lógicos9.5.I Sistema operative Microsoft Windows XP Professional.
9.5.II Compilador Microsoft Visual C++ 6.0
9.5.III Microsoft Office 2007.
181
Capítulo 10 – Presupuesto
Carlos Sanz Moreno
CAPÍTULO 10
10 PRESUPUESTO
El presupuesto consta de cuatro apartados: el cálculo del presupuesto de ejecución
material, el presupuesto de ejecución por contrata que incluirá el cálculo de los gastos generales
y del beneficio industrial, el coste de la dirección de obra y, por último, el presupuesto total,
suma de todos los conceptos anteriores.
Todas las cantidades que aparecen están contempladas en Euros.
183
Diseño e implementación de un asistente personal capaz de
expresar emociones
10.1. Presupuesto de ejecución material
Se incluye en este presupuesto los gastos en herramientas empleadas, tanto hardware
como software, así como la mano de obra.
En la ejecución de este proyecto han participado las siguientes personas:
Un Ingeniero Superior de Telecomunicación, encargado del desarrollo y redacción
del proyecto, así como de la obtención e interpretación de los resultados.
Un mecanógrafo, encargado de la escritura del proyecto en un procesador de
textos, elaboración de gráficos, etc.
10.1.1. Relación de salarios
Se parte del sueldo base mensual de cada una de las personas que han intervenido en el
proyecto para calcular el sueldo base diario respectivo. A éste habrá que añadir las obligaciones
sociales.
10.1.2. Relación de obligaciones sociales
184
Sueldo base mensual
Sueldo base diario Gratificación Sueldo total
diarioIngeniero Superior de
Telecomunicación 1.334,59 44,49 6,07 50,56
Mecanógrafo 632,49 21,08 5,67 26,76
Tabla 6. Sueldos de las personas que han intervenido en el proyecto
Capítulo 10 – Presupuesto
Carlos Sanz Moreno
10.1.3. Relación de salarios efectivos totales
10.1.4. Coste de la mano de obra
Para calcular el coste de la mano de obra basta con aplicar el número de días trabajado
por cada persona por el salario respectivo.
185
CONCEPTOVacaciones anuales retribuidas 8,33%
Indemnización por despido 1,60%Seguro de accidentes 7,00%
Subsidio familiar 2,90%Subsidio de vejez 1,80%
Abono días festivos 12,00%Días de enfermedad 0,75%
Plus de cargas sociales 4,25%Otros conceptos 15,00%
TOTAL 53,63%
Tabla 8. Obligaciones sociales
Sueldo diario
Obligaciones sociales Total/día
Ingeniero Superior de Telecomunicación 50,56 27,11 77,67
Mecanógrafo 26,76 14,35 41,1
Tabla 7. Salarios efectivos totales
Días Salario(€)/día Total (€)Ingeniero Superior
de Telecomunicación
330 77,67 25.630,7
Mecanógrafo 40 41,1 1.644,13TOTAL COSTE DE MANO DE OBRA 27.274,83
Tabla 9. Coste de la mano de obra.
Diseño e implementación de un asistente personal capaz de
expresar emociones
10.1.5. Coste total de materiales
Para la ejecución de este proyecto se han empleado un ordenador personal tipo PC
basado en el microprocesador Pentium III y una impresora Láser HP LaserJet 2100 Series PCL 6-1,
para la elaboración de toda la documentación necesaria. También se incluyen los gastos de
material fungible y de oficina.
Los costes referentes a los materiales utilizados se reflejan en la siguiente tabla:
10.1.6. Importe total del presupuesto de ejecución material
El presupuesto de ejecución material se calcula basándose en los costes de mano de obra
y los costes materiales.
186
Precio (€) Uso (meses)
Amortización (años) Total (€)
1 ordenador personal para diseño 1.502,53 12 5 300,51
Controladores X10 LM15 y CM111 50,00 12 5 10,00
WebCam 40,00 12 5 8,00Cara Robótica 100,00 12 5 20,00
iRTrans 100,00 12 5 20,002 ordenadores auxiliares para
reconocimiento y síntesis 3.005,06 12 5 601,02
Compilador Microsoft Visual C++ 420,71 12 5 84.14
Impresora Láser HP LaserJet 2100 780,71 1 5 13,01
Placa de red Ethernet 120,2 - - 120,2Material fungible y de oficina 120,2 - - 120,2
TOTAL GASTO DE MATERIAL 1.297,08
Tabla 10. Coste de
CONCEPTO IMPORTE (€)COSTE TOTAL DE MATERIALES 1.297,08
COSTE TOTAL DE MANO DE OBRA 27.274,83TOTAL PRESUPUESTO DE EJECUCIÓN MATERIAL 28.571,91
Tabla 11. Presupuesto de ejecución material
Capítulo 10 – Presupuesto
Carlos Sanz Moreno
10.2. Importe de ejecución por contrata
Al importe de ejecución material hay que añadirle los siguientes conceptos:
Resultando:
10.3. Honorarios Facultativos
Este proyecto se encuadra dentro del grupo XII: Aplicaciones de la Electrónica y Aparatos
de Telecomunicación. Si se aplican las tarifas correspondientes sobre el importe del presupuesto
de ejecución material se tiene:
187
IMPORTE DE EJECUCIÓN POR CONTRATA 36.387,51
Tabla 13. Importe de ejecución por contrata
CONCEPTO IMPORTE (€)GASTOS GENERALES Y FINANCIEROS (22%) 6.140,83
BENEFICIO INDUSTRIAL (6%) 1.674,77TOTAL G.G. Y B.I. 7.815,6
Tabla 12. Relación de conceptos adicionales
Hasta 30.050,61 (Coef. 1,0 sobre 7%) 2.103,54Hasta 60.101,21 (Coef. 0,9 sobre 7%) 399,22
TOTAL HONORARIOS FACULTATIVOS (€) 2.502,76
Tabla 14. Honorarios facultativos
Diseño e implementación de un asistente personal capaz de
expresar emociones
Los honorarios que hay que aplicar son los correspondientes tanto por redacción del
proyecto como por dirección, por lo que el total de honorarios es:
10.4. Importe Total del Proyecto
El Importe Total del Proyecto es la suma del Importe de Ejecución por Contrata, los
Honorarios de Redacción y los Honorarios de Dirección, al cual habrá que aplicar el 16% de IVA.
El importe total del presente proyecto asciende a la cantidad de CUARENTA Y OCHO MIL
QUINCE euros NOVENTA Y TRES céntimos.
EL INGENIERO AUTOR DEL PROYECTO
188
Honorarios de Ingeniero por redacción 2.502,76Honorarios de Ingeniero por dirección 2.502,76
TOTAL HONORARIOS 5.005,53
Tabla 15. Honorarios totales
EJECUCIÓN POR CONTRATA 36.387,51
HONORARIOS 5.005,53
IMPORTE 41.393,04
IVA (16%) 6.622,88
IMPORTE TOTAL 48.015,93
Tabla 16. Importe total del proyecto
Capítulo 10 – Presupuesto
Carlos Sanz Moreno
Fdo.: Carlos Sanz Moreno
MADRID, SEPTIEMBRE DE 2009.
189
Bibliografía
Carlos Sanz Moreno
BIBLIOGRAFÍA
1. Seneff, Stephanie, y otros. GALAXY-II: A Reference Architecture for Conversational
System Development. ICSLP. 1998.
2. Goddeau, David, y otros. GALAXY: A Human-Language Interface to on-line Travel
Information. ISCLP. 1994.
3. Pellom, Bryan, Ward, Wayne y Sameer, Pradhan. The CU Communicator: An
Architecture for Dialogue Systems. ISCLP. 2000.
4. Rabiner, Lawrence y Juang, Biing Hwang. Fundamentals of speech recognition.
Englewoods Cliffs, New Jersey : Prentice-Hall PTR , 1993.
5. Lucas Cuesta, Juan Manuel. Análisis e implementación de mejoras para un reconocedor
de habla continua. Proyecto Fin de Carrera. Madrid : ETSIT, 2006.
6. Pérez Magariños, Nuria. Mejora de la interfaz vocal de control de un robot autónomo
móvil. Adaptación acústica y generación supervisada de mapas. Proyecto Fin de Carrera.
Madrid : ETSIT, 2008.
7. Huang, Xuedong, Acero, Alex y Hon, Hsiao Wuen. Spoken language processing. A guide
to theory, algorithm and system development. New Jersey : Prentice-Hall PTR, 2001.
8. García Mancebo, Javier. Desarrollo de un sistema en tiempo real para la identificación
de locutores a través de la voz en un entorno domótico. PFC. Madrid : ETSIT, 2007.
9. Alcázar Prior, Rosario. Desarrollo de un conversor texto-voz con emociones y aplicación
a la interacción hablada en entornos inteligentes. Proyecto Fin de Carrera. Madrid : ETSIT, 2007.
10. Raitio, Tuomo. Hidden Markov Model Based Finnish Text-to-Speech System Utilizing
Glottal Inverse Filtering. Master’s Thesis. HELSINKI : UNIVERSITY OF TECHNOLOGY, 2008.
191
Diseño e implementación de un asistente personal capaz de
expresar emociones
11. Cancela González, Jorge. Desarrollo de una interfaz multimodal para un robot
domótico móvil. Control por voz y mando a distancia. Proyecto fin de carrera. Madrid : ETSIT,
2009.
12. Peñalva Zambrano, Jorge Miguel y García Moral, Daniel. Groucho está contento,
Groucho quiere jugar…. [En línea] http://emotionalbot.wordpress.com/page/1/.
13. Montero de Espinosa Marrón, Ainhoa. Análisis y desarrollo de una interfaz gestual
para ambientes inteligentes. Proyecto fin de carrera. Madrid : ETSIT, 2008.
14. Fueyo Ramírez, Enrique y Hernández Munuera, Juan Carlos. 3enRaya jugando contra
Groucho. [En línea] http://3nraya.wordpress.com/.
15. Guirao Rodríguez, Alejandro. Mejora de la interfaz vocal para el control de un equipo
de alta fidelidad. Proyecto fin de carrera. Madrid : Etsit, 2006.
16. García Sánchez, Rafael. Controlling a High Fidelity system from speech. Proyecto fin de
carrera. Madrid : ETSIT, 2005.
17. Müller, Marcus. IRTrans User Manual. Alemania : s.n., 2004.
18. Zlotnik, Alexander. DRAC (Distributed Remote ACcess system) - A remote access
system to electronics laboratories. Proyecto fin de carrera. MADRID : ETSIT, 2007.
19. iCat, the Affective Chess Player. Leite, Iolanda y Pereira, André. Porto Salvo, Portugal :
s.n., 2007.
20. Feelix Growing. About Feelix Growing. Feelix Growing. [En línea] http://www.feelix-
growing.org/about.
21. MIT Affective Computing Group. Affective Computing Group Home Page. [En línea]
http://affect.media.mit.edu/index.php.
22. Pfeiffer, R. Artificial intelligence models of emotion. . In Cognitive Perspectives on
Emotion and Motivation. V. Hamilton, G. Bower & N. Frijda. s.l. : Kluwer Academic Publishers.,
1988.
192
Bibliografía
Carlos Sanz Moreno
23. —. The "Fungus Eater" approach to the study of emotion: A View from Artificial
Intelligence. Artificial Intelligence Laboratory. Universidad de Zürich : s.n., 1994.
24. Scherer, K.R., Shorr, A. y Johnstone, T. Appraisal processes in emotion: theory,
methods, research. Oxford University Press. 2001.
25. Appraisal Theory. Wikipedia . [En línea] http://en.wikipedia.org/wiki/Appraisal_theory.
26. Ruebenstrunk, Gerd. Emotional Computers. Computer models of emotions. 1998.
27. Ortony, A., Clore, G.L. y Collins, A. The cognitive structure of emotions. Cambridge,
U.K. : Cambridge University Press., 1988.
28. Roseman, I.J., Antoniou, A.A. y Jose, P.A. Appraisal Determinants of Emotions:
Constructing a More Accurate and Comprehensive Theory. Cognition and Emotion. 1996.
29. Scherer, K.R. On the nature and function of emotion: a component process approach.
Hillsdale : Erlbaum, 1984.
30. Frijda, N. H. y Swagerman, J. Can computers feel? theory and design of an emotional
system. Cognition & Emotion. 1987.
31. Moffat, D. y Frijda, N.H. Where there's a Will there's an Agent. [aut. libro] M.J.
Woolridge y N.R. Jennings. Intelligent Agents - Proceedings of the 1994 Workshop on Agent
Theories, Architectures, and Languages. s.l. : Springer, 1995.
32. Oatley, K. y Johnson-Laird, P.N. Towards a cognitive theory of emotions. 1987.
33. Maslow, A.H. A Theory of Human Motivation. Psychological Review. 1943.
34. Carneige Mellon. Software Engineering Institute. Client/server Software Architectures
An Overview. s.l. : Carneige Mellon University, 2003.
35. Rodríguez Losada, Diego. JABON a SOAP C++ Code Generator. [En línea]
http://www.intelligentcontrol.es/jabon/.
36. Instituto Nacional de Estadística. Encuesta sobre Equipamiento y Uso de Tecnologías
de la Información y Comunicación en los hogares. 2003-2008.
193
Diseño e implementación de un asistente personal capaz de
expresar emociones
37. Hurtado Gil, Sandra Victoria. Representación de la arquitectura de software usando
UML. Universidad Icesi.
38. XML-RPC. [En línea] http://www.xmlrpc.com/.
39. W3C. SOAP Version 1.2 Part 1: Messaging Framework (Second Edition). [En línea]
http://www.w3.org/TR/soap12-part1/.
40. Frijda, N.H. y Moffat, D. Modeling emotion. Cognitive Studies. 1994.
41. Oatley, K. Best Laid Schemes. The Psychology of Emotions. Cambridge University
Press. 1992.
42. Salazar Canal, Jorge. Diseño, implementación y pruebas de esquemas de
personalización en sistemas de gestión de diálogo persona-máquina a través de la identificación
de la voz. Proyecto fin de carrera. Madrid : ETSIT, 2009.
43. Saxe, D. y Foulds, R. Automatic Face and Gesture Recognition,. Toward Robust Skin
Identification in Video Images,”. 1996.
44. Rowley, H., Baluja, S. y Kanade, T. Neural Network-Based Face Detection,. IEEE Trans.
Pattern Analysis and Machine Intelligence. 1998.
45. Face recognition with continuos n-tuple classifier. Lucas, S.M. s.l. : BMVA Press, 1997.
Brithis Machine Vision Conference.
46. Viola, P. y Jones, M. Robust real-time face detection. International Journal of
Computer Vision. 2003.
194
Apéndice A – Relación de Conceptos con Tareas
Carlos Sanz Moreno
APÉNDICE A: Relación de Conceptos con Tareas
195
Apéndice B – Listado de Frases para Sintetizar
Carlos Sanz Moreno
APÉNDICE B: Listado de Frases para Sintetizar
[JUEGO GANAR] 1 He ganado. 2 Te he ganado. 3 He ganado soy muy feliz.[JUEGO GANAR AMIGO] 1 Colega tienes que seguir practicando. 1 Amigo mío pensabas que ibas a ganarme?.[JUEGO GANAR CONOCIDO] 10 JEJEJE te he ganado. 10 Madre de dios que malo eres.[JUEGO PERDER] 10 Me has ganado Cómo ha podido suceder?. 10 Esto no va a quedar así me la próxima vez te venceré.[JUEGO INICIAR] 5 Vamos cobarde compite conmigo. 10 Juega conmigo.[JUEGO NEUTRAL] 8 Vamos te toca. 1 Te cuesta decidir tu movimiento?.[JUEGO TRAMPA] 80 Seguro que lo puedes hacer mejor. 50 Esa no es una posición correcta.[CONOCER NOMBRE] 50 Cómo te llamas?. 25 Cuál es tu nombre?. 25 Cómo decías que te llamabas?. 40 Cuál es tu nombre completo?.[CONOCER MAIL] 70 Cuál es tu i meil?. 10 Tienes correo electrónico?.[CONOCER PROFESION] 1 A qué te dedicas?. 2 En qué trabajas?.[CONOCER NUEVO] 5 Hay alguien nuevo?. 8 No consigo identificarte eres nuevo?.
197
Diseño e implementación de un asistente personal capaz de
expresar emociones
[CONOCER FIN] 1 Encantado de conocerte. 1 Hola mucho gusto.[SALUDAR UKWN] 1 Buenos días. 2 En qué puedo ayudarle?[SALUDAR KNWN] 1 Hola que tal?. 4 Te puedo ayudar en algo?.[INSULTO] 1 No me gusta que me insultes. 1 Me estas enfadando.[SALUDAR FRND] 1 Hola amigo. 1 Hola. 5 Qué quieres que haga?.[DESPEDIR UKWN] 1 Mucho gusto hasta otro momento.[DESPEDIR KNWN] 1 Hasta luego.[DESPEDIR FRND] 1 Nos vemos!.[FIN]
198
Apéndice C – Experimento de Identificación
Carlos Sanz Moreno
APÉNDICE C: Experimento de Identificación
199
Base de datos Modo Historia Locutores Lambda Acierto
s Frases Tasa Locutor inicial
DISAM 1 18 30 100 591 596 0,911DISAM 1 17 30 100 590 596 0,930DISAM 1 16 30 100 587 596 0,922DISAM 1 15 30 100 586 596 0,932DISAM 1 10 30 100 567 596 0,902DISAM 1 5 30 100 465 596 0,706DISAM 1 4 30 100 0 596 -0,252
DISAM 1 5 30 2 339 596 0,424DISAM 1 5 30 2,5 441 596 0,652DISAM 1 5 30 3 467 596 0,711DISAM 1 5 30 3,5 468 596 0,713DISAM 1 5 30 4 466 596 0,709DISAM 1 5 30 4,5 467 596 0,711DISAM 1 5 30 5 465 596 0,706DISAM 1 5 30 10 465 596 0,706DISAM 1 5 30 100 465 596 0,706
GTH 1 5 30 4,5 1364 1498 0,901 0GTH 1 5 30 4,5 1444 1498 0,960 2GTH 1 5 30 4,5 1273 1498 0,833 4GTH 1 5 30 4,5 1173 1498 0,759 6GTH 1 5 30 4,5 1236 1498 0,806 8GTH 1 5 30 4,5 1371 1498 0,906 10GTH 1 5 30 4,5 1330 1498 0,875 12GTH 1 5 30 4,5 1236 1498 0,806 14GTH 1 5 30 4,5 1321 1498 0,869 16GTH 1 5 30 4,5 1446 1498 0,961 18GTH 1 5 30 4,5 1302 1498 0,855 20GTH 1 5 30 4,5 1417 1498 0,940 22GTH 1 5 30 4,5 1369 1498 0,904 24GTH 1 5 30 4,5 1357 1498 0,895 26GTH 1 5 30 4,5 1281 1498 0,839 28
Tabla 17. Experimento Identificación de usuarios modo 1
Diseño e implementación de un asistente personal capaz de
expresar emociones
200
Modo Historia Locutores Locutores
ConocidosLambd
a FrasesCambios
Detectados
Cambios OkCambios
OKDetectados
Precisión Recall
2 5 30 1 2 1498 885 29 23 0,032 0,966
2 5 30 1 3 1498 266 18 10 0,064 0,586
2 5 30 1 4 1498 219 6 2 0,023 0,172
2 30 30 10 3 1498 216 8 5 0,034 0,350
2 30 30 10 4 1498 210 6 4 0,025 0,250
Tabla 18. Experimento Identificación de usuarios modo 2 base de datos GTH
Apéndice D – Relación entre Clases
Carlos Sanz Moreno
APÉNDICE D: Relación entre Clases
En este apéndice se realizará un análisis estructural del sistema. Con vistas a este objetivo
se presentarán, por un lado, la jerarquía entre clases. Posteriormente se analizará el
funcionamiento del método main y las llamadas que realiza.
Para la realización del modelo emocional se tiene la clase CEmotion.
Esta clase define la funcionalidad señalada y consta de un array de elementos
TEmociones. Cada una de las posiciones de ese array es una emoción distinta: alegría, tristeza,
enfado…
201
Figura 74. Definición de clase CEmotion
Diseño e implementación de un asistente personal capaz de
expresar emociones
Además, se necesita la implementación de los niveles de necesidad de Maslow para los
que se tiene el siguiente esquema
Figura 75. Jerarquía de clases para las necesidades
Como se ve cada necesidad está modelada por una clase heredada de CGoalProcess, la
cual proporciona la funcionalidad básica para el cálculo emocional (parte de ella heredada, a su
vez, de la clase CIOProcess). Esto consiste en mecanismos de regiones críticas, mecanismo de
generación de NIF, etc. A partir de esta clase básica cada nivel de necesidad genera unas
funciones que serán llamadas por las tareas que produzcan eventos. A continuación se presenta
el diagrama que describe todo el proceso emocional.
202
Apéndice D – Relación entre Clases
Carlos Sanz Moreno
Para la realización del Módulo de Aplicaciones se tiene la siguiente jerarquía para las
tareas remotas.
203
Figura 76. Diagrama de implementación del Módulo Emocional
Diseño e implementación de un asistente personal capaz de
expresar emociones
Como se puede ver, cualquier tarea hereda la clase básica CmoduloBaseSoap. Esta clase
proporciona la siguiente funcionalidad.
De esos métodos EnviarRespuestaAUsuario y ComunicarSituaciónMódulo son virtuales
obligano así a que cada tarea implemente una funcionalidad para estos métodos, que serán a la
postre los encargados de comunicar la respuesta y la variación de necesidades al módulo de
204
Figura 78. Jerarquía de clases de tareas remotas
Figura 77. Funcionalidad de CmoduloBaseSoap
Apéndice D – Relación entre Clases
Carlos Sanz Moreno
comportamiento. Hay que señalar que cada una de estas clases *Soap son clientes de modo que
la comunicación es remota.
Finalmente cabe proporcionar el árbol de llamadas que se producen desde el main del
sistema.
205
Figura 79. Árbol de llamadas del método main
Diseño e implementación de un asistente personal capaz de
expresar emociones
Este es el método principal del sistema, desde él se lanzan el resto de módulos que corren
localmente (llamadas a los métodos Lanza*). Por otra parte realiza las llamadas dentro del bucle
principal.
206
Orden de
secuencia
Finalidad Método
1 Lectura de entradas actuacionOpencv ()
2 Lectura de entradas enviaPalabraDelReconocedor()
3 Lectura de entradas analizaSensores()
4 Lectura de entradas lectura3enRaya()
5 Análisis de necesidades needsArray[i]->ProcessLoop()
6 Análisis de necesidades imprimeNiveles()
7 Análisis de emociones emotions->amortiguacionEmociones()
8 Análisis de emociones emotions->calcularNeutraYSatura()
9 Análisis de emociones emotions->buscaEmocionMaxima()
10 Análisis de emociones emotions->imprimeEmociones()
11 Generación de respuesta invocaSintetizador()
12 Generación de respuesta definirCara()
Apéndice D – Relación entre Clases
Carlos Sanz Moreno
Finalmente, los árboles de llamadas para los servidores de cara y de síntesis serán.
207
Figura 80. Árbol de llamadas para el servidor de síntesis
Diseño e implementación de un asistente personal capaz de
expresar emociones
208
Figura 81. Árbol de llamadas para el servidor de cara