4/6/2001
Nueva arquitectura para un Nueva arquitectura para un servidor vocal telefónico con servidor vocal telefónico con Reconocimiento Automático Reconocimiento Automático
de Hablade Habla
Autor: Javier López GarcíaAutor: Javier López García
Javier López García
ÍNDICEÍNDICE ObjetivosObjetivos Análisis y diseño de sistemas SWAnálisis y diseño de sistemas SW Arquitectura de SERVIVOX: el kernelArquitectura de SERVIVOX: el kernel Reconocimiento: TIDAISLReconocimiento: TIDAISL Matrices y evaluador de expresionesMatrices y evaluador de expresiones ConclusionesConclusiones Líneas futurasLíneas futuras
Javier López García
OBJETIVOS DEL PROYECTOOBJETIVOS DEL PROYECTO Diseñar una Diseñar una nueva arquitecturanueva arquitectura para SERVIVOX para SERVIVOX
que le proporcione mayor que le proporcione mayor modularidadmodularidad y y
flexibilidadflexibilidad..
Reestructurar el software de Reestructurar el software de TIDAISLTIDAISL de modo de modo
que se puedan que se puedan integrarintegrar los módulos los módulos
desarrollados en SERVIVOX.desarrollados en SERVIVOX.
Ampliar y mejorarAmpliar y mejorar el LDD.el LDD.
Generar Generar documentacióndocumentación precisa sobre: precisa sobre:– La estructura actual de SERVIVOX.La estructura actual de SERVIVOX.
– Los pasos a seguir para ampliarlo con software de Los pasos a seguir para ampliarlo con software de
TIDAISL.TIDAISL.
Javier López García
DESARROLLO DE SOFTWAREDESARROLLO DE SOFTWARE FasesFases::
– Análisis (Requisitos, ...)Análisis (Requisitos, ...)– Diseño.Diseño.– Implementación.Implementación.– Pruebas.Pruebas.– Mantenimiento.Mantenimiento.
EstrategiasEstrategias::– Lineal en cascada.Lineal en cascada.– Prototipado-evolutiva.Prototipado-evolutiva.
Metodologías:Metodologías:– Estructurada.Estructurada.– Orientada a objetos.Orientada a objetos.
Javier López García
ANÁLISIS Y DISEÑOANÁLISIS Y DISEÑO AnálisisAnálisis::
– Consiste en Consiste en descomponer un sistemadescomponer un sistema en los en los elementos que lo integranelementos que lo integran..
– RResponde a la pregunta esponde a la pregunta “qué es el problema”“qué es el problema”,, define define el problema con precisión.el problema con precisión.
– Genera un Genera un modelo conceptualmodelo conceptual del sistema. del sistema. DiseñoDiseño::
– Se realiza Se realiza después del análisisdespués del análisis..– Responde a la pregunta Responde a la pregunta ““cómo se resuelve el cómo se resuelve el
problemaproblema con las herramientas disponibles” con las herramientas disponibles”..– Modifica los modelos generados en el análisis para Modifica los modelos generados en el análisis para
reflejar decisiones relativas al entorno en que el reflejar decisiones relativas al entorno en que el sistema debe funcionar.sistema debe funcionar.
– Genera un Genera un modelo físicomodelo físico del sistema. del sistema.
Javier López García
ANÁLISIS ORIENTADO A ANÁLISIS ORIENTADO A OBJETOSOBJETOS
El análisis y el diseño orientados a objetos El análisis y el diseño orientados a objetos utilizan los utilizan los objetos como elementos básicosobjetos como elementos básicos para la elaboración de modelos.para la elaboración de modelos.
Objeto:Objeto: podemos definir formalmente un podemos definir formalmente un objeto como una abstracción de algún objeto objeto como una abstracción de algún objeto en el mundo real que en el mundo real que incluye los datos o incluye los datos o propiedades (atributos)propiedades (atributos) que describen el que describen el objeto real, e objeto real, e incluye las operaciones incluye las operaciones (métodos)(métodos) que manipulan estos datos, que son que manipulan estos datos, que son además las únicas autorizadas para hacerlo.además las únicas autorizadas para hacerlo.
Javier López García
ANÁLISIS PROPUESTOANÁLISIS PROPUESTO Fase inicial:Fase inicial:
– Estudio de documentación previa: PFCs.Estudio de documentación previa: PFCs.
– Reuniones con el cliente: desde gestores a técnicos.Reuniones con el cliente: desde gestores a técnicos.
Componentes:Componentes:– Modelo de requisitosModelo de requisitos:: necesidades de los usuarios. necesidades de los usuarios.
Ámbito del proyecto.Ámbito del proyecto. Diagrama de contexto.Diagrama de contexto. Guiones de casos de uso.Guiones de casos de uso.
– Modelo de objetosModelo de objetos:: Arquitectura.Arquitectura. Diagrama de objetos.Diagrama de objetos.
– Diccionario:Diccionario: define los conceptos utilizados. Se elabora define los conceptos utilizados. Se elabora conjuntamente con los modelos anteriores.conjuntamente con los modelos anteriores.
Javier López García
ÁMBITO DE SERVIVOXÁMBITO DE SERVIVOX– Un sistema que permita:
editar, compilar, ejecutar, configurar, depurar, crear, analizar y supervisar aplicaciones multimedia que proporcionen un servicio automático de atención al cliente con síntesis y reconocimiento de habla, con acceso a bases de datos y utilidades de correo electrónico.
– El sistema será también una herramienta para los desarrolladores de aplicaciones.
– Será competencia del sistema: proporcionar un lenguaje de descripción de aplicaciones
multimedia, junto con las herramientas necesarias para editar, compilar, ejecutar, etc, dichas aplicaciones.
– No será competencia del sistema: el reconocimiento y la síntesis del habla, el proporcionar un
servidor de “mail” o un servidor de bases de datos, pero sí definir una interfaz que se comunique con estos sistemas.
SISTEMASERVIVOX
DE APLICACIONESMULTIMEDIA
MÓDULOMAGODE OZ
SUPERVISOR
PROGRAMADOR
OPERADOR(A)TELEFÓNICO
MENSAJESPREGRABADOS
Interfaz Usuario Sistema
DRIVERTELÉFONO
DRIVERAUDIO
SERVIDORAGENTES
ANIMADOS
Interfaz Usuario Servicio
DRIVERIMÁGENES
RPCMOTOR
DE BÚSQUEDA(RENFE)
ODBC( BASES
DE DATOS )
MAIL(POP3)
Backend
PROGRAMASEXTERNOS
EJECUTABLES
MÓDULO DEGENERACIÓN
DE RESPUESTA
MÓDULO DECOMPRENSIÓN NLP
MÓDULO DEACENTOS
DLL DESÍNTESIS
LIBRERÍA DE RECONO
CIMIENTO
Voz
PORTABLE,PROFILE,
FILEHAND
Portable
Configura
Log
Javier López García
ÍNDICEÍNDICE ObjetivosObjetivos Análisis y diseño de sistemas SWAnálisis y diseño de sistemas SW Arquitectura de SERVIVOX: el kernelArquitectura de SERVIVOX: el kernel Reconocimiento: TIDAISLReconocimiento: TIDAISL MatricesMatrices Evaluador de expresionesEvaluador de expresiones ConclusionesConclusiones Líneas futurasLíneas futuras
Javier López García
ARQUITECTURA DEL ARQUITECTURA DEL SERVIVOX (I)SERVIVOX (I)
Inspirada en la arquitectura DARPA.Inspirada en la arquitectura DARPA. Estructura cliente-servidorEstructura cliente-servidor::
– El kernel controla la secuencia del diálogo (cliente).El kernel controla la secuencia del diálogo (cliente).
– Toda la funcionalidad reside en los servidores.Toda la funcionalidad reside en los servidores.
Estructura de subsistemas intercambiables:Estructura de subsistemas intercambiables:– Interfaz kernel-servidor normalizada (Interfaz kernel-servidor normalizada (__funciones__funciones).).
– Reparto normalizado de tareas entre los servidores.Reparto normalizado de tareas entre los servidores.
Kernel programableKernel programable: se define el LDD para la : se define el LDD para la descripción de aplicaciones multimedia.descripción de aplicaciones multimedia.
Log centralizadoLog centralizado: seguimiento cronológico de : seguimiento cronológico de la secuencia de trazas generadas por la la secuencia de trazas generadas por la aplicación. aplicación.
Javier López García
ARQUITECTURA DEL ARQUITECTURA DEL SERVIVOX (II)SERVIVOX (II)
Kernel
Compila Flex
BisonEncript
VozSíntesis
Recono
NLP
Generación
Comprensión
Acentos
BackendMotor
Búsqueda
ExternasFTP, RPC,Emu 3270
ODBC
Hw Mm&telefónico
Multimediay agentes
Audio
Interfaztelefónico
Interfaz de desarrollo
GrabadorEntornos:
OWL...Operador Supervisión
Magode Oz
supervisión
LogConfig
SISTEMA
Javier López García
EL KERNELEL KERNEL Núcleo de ejecución del autómata.Núcleo de ejecución del autómata. Lenguaje de alto nivel especializado en Lenguaje de alto nivel especializado en
aplicaciones con interfaces vocales y multimedia aplicaciones con interfaces vocales y multimedia (LDD).(LDD).
Principales objetos del kernel:Principales objetos del kernel:– Autómata y Ejecutar autómata. Autómata y Ejecutar autómata.
– Tabla de funciones.Tabla de funciones.
– Argumentos y Pila de Subrutinas.Argumentos y Pila de Subrutinas.
– Eventos y Errores.Eventos y Errores.
– Variables y Variables iniciales.Variables y Variables iniciales.
– Configuración y Log.Configuración y Log.
– Otros: fechasHoras, strings, ficheros, temporiz, matrices.Otros: fechasHoras, strings, ficheros, temporiz, matrices.
Javier López García
FUNCIONAMIENTO DEL FUNCIONAMIENTO DEL KERNEL KERNEL
Automata Ejecutor
Tabla Func.
Eventos yerrores
__Funciones Funciones C
1
2
34
Variables
Config y Log
PilaSub y Argumentos
Javier López García
ÍNDICEÍNDICE ObjetivosObjetivos Análisis y diseño de sistemas SWAnálisis y diseño de sistemas SW Arquitectura de SERVIVOX: el kernelArquitectura de SERVIVOX: el kernel Reconocimiento: TIDAISLReconocimiento: TIDAISL MatricesMatrices Evaluador de expresionesEvaluador de expresiones ConclusionesConclusiones Líneas futurasLíneas futuras
Javier López García
TIDAISLTIDAISL Plataforma donde se prueban los nuevos Plataforma donde se prueban los nuevos
parametrizadores y reconocedores.parametrizadores y reconocedores.
Mains Mains que integran: que integran: test bench test bench + + recono/paramrecono/param..
Objetivos: Objetivos:
– Separar el test bench del recono/param.Separar el test bench del recono/param.
– Proveer operaciones síncronas en trama.Proveer operaciones síncronas en trama.
– Crear librerías de procesamiento integrables en Crear librerías de procesamiento integrables en
SERVIVOX:SERVIVOX: paramet: rasta, mfcc.paramet: rasta, mfcc.
HMM_SC_DCHMM_SC_DC
lib_comun: configuración, listas...lib_comun: configuración, listas...
Javier López García
CLASES DE CLASES DE RECONOCIMIENTO (I)RECONOCIMIENTO (I)
Proponer una nueva arquitectura para las Proponer una nueva arquitectura para las
clases de reconocimiento de SERVIVOX. clases de reconocimiento de SERVIVOX.
Reducir la herencia (inclusión).Reducir la herencia (inclusión).
Desposeerlas de la funcionalidad de Desposeerlas de la funcionalidad de
reconocimiento: clases meramente interfaz.reconocimiento: clases meramente interfaz.
Integrar las librerías de TIDAISL disponibles.Integrar las librerías de TIDAISL disponibles.
Realizar de forma práctica un reconocedor de Realizar de forma práctica un reconocedor de
una etapa: TReconoNuevo.una etapa: TReconoNuevo.
Javier López García
CLASES DE CLASES DE RECONOCIMIENTO (II)RECONOCIMIENTO (II)
TRecoBase(abstracta)
TReco_Dig
TVQuant TOnepassDiscr
TReco_Dicc
TCalcFactor TOnePassCont
TReco_Spell
TCalcFactor2
TOnepassPalTAcclexTVit_sc_dc TVit_cont__dc_spell
TParam_Base(abstracta) TParam_LPC
TParam_rasta
TParam_Old
TWaveReco
TDetector
1
*
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1 *
1
1
TAcclex2
1
Javier López García
ÍNDICEÍNDICE ObjetivosObjetivos Análisis y diseño de sistemas SWAnálisis y diseño de sistemas SW Arquitectura de SERVIVOX: el kernelArquitectura de SERVIVOX: el kernel Reconocimiento: TIDAISLReconocimiento: TIDAISL MatricesMatrices Evaluador de expresionesEvaluador de expresiones ConclusionesConclusiones Líneas futurasLíneas futuras
Javier López García
MATRICES DEL LDD (I)MATRICES DEL LDD (I)
Dotar al LDD de arrays multidimensionales Dotar al LDD de arrays multidimensionales
accesibles por índice y por clave.accesibles por índice y por clave.
– Conjunto de pares atributo-valor.Conjunto de pares atributo-valor.
– Aplicaciones más legibles.Aplicaciones más legibles.
Diseño a medida para el módulo matrices.Diseño a medida para el módulo matrices.
Implementación puramente orientada a Implementación puramente orientada a
objetos.objetos.
Programación en C++ haciendo uso de la Programación en C++ haciendo uso de la
librería estándar (STL).librería estándar (STL).
Javier López García
MATRICES DEL LDD (II)MATRICES DEL LDD (II)
Javier López García
EVALUADOR DE EVALUADOR DE EXPRESIONESEXPRESIONES
Evaluador de expresiones aritmético-lógicas con Evaluador de expresiones aritmético-lógicas con
variables.variables.
Incorpora:Incorpora:
– Operadores lógicos.Operadores lógicos.
– Paréntesis.Paréntesis.
– Las precedencias habituales en C.Las precedencias habituales en C.
Diseño flexible para poder usarse más allá de la Diseño flexible para poder usarse más allá de la
mera asignación: clase virtual mera asignación: clase virtual TgestorVariablesTgestorVariables..
Ejemplo: “n_var2>(1+n_var)/3.1+2*3”Ejemplo: “n_var2>(1+n_var)/3.1+2*3”
Javier López García
RESUMENRESUMEN Análisis de alto nivel de SERVIVOX orientado a Análisis de alto nivel de SERVIVOX orientado a
objetos.objetos. Re-diseño del arquitectura y su implementación Re-diseño del arquitectura y su implementación
(prototipado evolutivo).(prototipado evolutivo). Rediseño de parte de TIDAISL y de las clases de Rediseño de parte de TIDAISL y de las clases de
reconocimiento y parametrización de SERVIVOX.reconocimiento y parametrización de SERVIVOX. Funcionalidad añadida al LDD:Funcionalidad añadida al LDD:
– Evaluador de expresiones aritmético-lógicas.Evaluador de expresiones aritmético-lógicas.
– Arrays multidimensionales.Arrays multidimensionales.
– Paso de argumentos a subrutinas.Paso de argumentos a subrutinas.
– Variables locales.Variables locales.
Javier López García
CONCLUSIONES (I)CONCLUSIONES (I) El análisis orientado a objetos es una herramienta El análisis orientado a objetos es una herramienta
más potente que el análisis estructurado. más potente que el análisis estructurado. El prototipado evolutivo es una estrategia El prototipado evolutivo es una estrategia
adecuada para desarrollar un sistema:adecuada para desarrollar un sistema:– Es más seguro.Es más seguro.– Implica menor coste.Implica menor coste.– Pero se pueden heredar características del sistema Pero se pueden heredar características del sistema
original.original. La importancia de un análisis natural:La importancia de un análisis natural:
– El sistema es más fácilmente comprensible.El sistema es más fácilmente comprensible.– El sistema puede crecer más fácilmente.El sistema puede crecer más fácilmente.
Al integrar TIDAISL y SERVIVOX hay que evitar la Al integrar TIDAISL y SERVIVOX hay que evitar la duplicación del código: usar librerías.duplicación del código: usar librerías.
Javier López García
CONCLUSIONES (II)CONCLUSIONES (II) Importancia de una buena documentación:Importancia de una buena documentación:
– No sólo documentación de uso (manuales),No sólo documentación de uso (manuales),– sino también documentación interna (desarrolladores).sino también documentación interna (desarrolladores).
Comparación con otros proyectos:Comparación con otros proyectos:– GTH: ahora situación análoga a TIDAISL o síntesis.GTH: ahora situación análoga a TIDAISL o síntesis.– Empresa: hay más separación entre desarrolladores y Empresa: hay más separación entre desarrolladores y
pruebas de sistemas y más documentación interna (pero pruebas de sistemas y más documentación interna (pero puede no ser de calidad porque se hace por cumplir).puede no ser de calidad porque se hace por cumplir).
Logros concretos del proyecto:Logros concretos del proyecto:– Desarrollo de aplicaciones (RENFE) facilitado por la Desarrollo de aplicaciones (RENFE) facilitado por la
ampliación del LDD: variables locales y subrutinas.ampliación del LDD: variables locales y subrutinas.– Añadir una nueva función de reconocimiento es más fácil.Añadir una nueva función de reconocimiento es más fácil.– La incorporación de personal es más sencilla (doc + arq).La incorporación de personal es más sencilla (doc + arq).
Javier López García
LÍNEAS FUTURASLÍNEAS FUTURAS Ejecución distribuidaEjecución distribuida Re-diseño de otros módulos de reconocimiento Re-diseño de otros módulos de reconocimiento
(dígitos, preselección y deletreo).(dígitos, preselección y deletreo). Registrar cambios en el repositorio de TIDAISL.Registrar cambios en el repositorio de TIDAISL. Incorporación del evaluador a la sintaxis de las Incorporación del evaluador a la sintaxis de las
asignaciones del LDD.asignaciones del LDD. Re-diseño de algunas aplicaciones existentes Re-diseño de algunas aplicaciones existentes
empleando variables locales y paso de empleando variables locales y paso de parámetros.parámetros.
Eliminación del procesamiento en segundo Eliminación del procesamiento en segundo plano por medio de funciones plano por medio de funciones idle.idle.
Javier López García
¿PREGUNTAS?¿PREGUNTAS?
Javier López García
LA ARQUITECTURA GALAXY LA ARQUITECTURA GALAXY (I)(I)
Consiste en:Consiste en:– Una estructura cliente-servidor.Una estructura cliente-servidor.
– Reparto normalizado de tareas entre servidores.Reparto normalizado de tareas entre servidores.
– Protocolos de comunicación normalizados.Protocolos de comunicación normalizados.
– Módulo central (Hub) que canaliza las comunicaciones Módulo central (Hub) que canaliza las comunicaciones
controlado por un lenguaje de “script”.controlado por un lenguaje de “script”.
Objetivos:Objetivos:– Favorecer la interoperabilidad de equipos y el Favorecer la interoperabilidad de equipos y el
“plug&play”.“plug&play”.
– Hacer flexible el diálogo, gracias a la configurabilidad Hacer flexible el diálogo, gracias a la configurabilidad
del “hub”.del “hub”.
Javier López García
LA ARQUITECTURA GALAXY LA ARQUITECTURA GALAXY (II)(II)
Servidor de audio
Conversión texto-voz
Generacióndel lenguaje
Gestor deldiálogo
Back-end dela aplicación
Seguimientodel contexto
“Parsing” del lenguaje
Reconocimientode habla
HUB
Javier López García
CARACTERÍSTICAS DEL LDDCARACTERÍSTICAS DEL LDD Instrucciones síncronas: aritméticas, strings, arrays.Instrucciones síncronas: aritméticas, strings, arrays.
Instrucciones especializadas: Instrucciones especializadas: – Asíncronas: reco, agentes animados, ...Asíncronas: reco, agentes animados, ...
– Síncronas: mailSíncronas: mail
Excepciones: Excepciones: – colgadocolgado
– timeouttimeout
– fin de intentosfin de intentos
– cadena cortacadena corta
Variables: predefinidas, de usuario, locales.Variables: predefinidas, de usuario, locales. Instrucciones de control: Instrucciones de control: IF, WHILE, SUBRUTINAS, ....IF, WHILE, SUBRUTINAS, ....
Javier López García
Subrutinas y variables localesSubrutinas y variables locales Ejemplo de uso:Ejemplo de uso:
– gosub SINTETIZAR_MENSAJE_LARGO_ARRAY: gosub SINTETIZAR_MENSAJE_LARGO_ARRAY: (n_array_mensaje_largo_dar_timeout, (n_array_mensaje_largo_dar_timeout, 2;n_result);2;n_result);
Ejemplo de subrutinaEjemplo de subrutina::– SUBRUTINA SINTETIZAR_MENSAJE_ARRAY: SUBRUTINA SINTETIZAR_MENSAJE_ARRAY:
(n_sub_array_mensajes, (n_sub_array_mensajes, n_sub_indice_array_mensajes; n_resultado)n_sub_indice_array_mensajes; n_resultado)
– DEF_VAR DEF_VAR – s_mensaje_auxs_mensaje_aux– FIN_VARFIN_VAR– LEE_ARRAY (n_sub_array_mensajes, LEE_ARRAY (n_sub_array_mensajes,
n_sub_indice_array_mensajes; s_mensaje_aux);n_sub_indice_array_mensajes; s_mensaje_aux);– sintetizar (s_mensaje_aux;);sintetizar (s_mensaje_aux;);– n_resultado=0;n_resultado=0;