scieee AI-readable full text Open interactive document viewer

Repositorio Institucional de Documentos

Abstract

En los sistemas de inteligencia ambiental una parte fundamental la constituye el interfaz hombre-máquina, y dentro de éste, la interacción oral en ambos sentidos, de la que forman parte los sistemas tanto de reconocimiento automático como de síntesis de voz. En sistemas complejos la interacción simple por medio de comandos limita las posibilidades de un sistema de inteligencia ambiental, por ello es preciso tener disponibles reconocedores de voz de gran vocabulario. El trabajo de investigación propuesto tiene como objetivo la mejora de las prestaciones de un reconocedor automático de voz de gran vocabulario, medidas en tasa de errores de palabra. Para ello la investigación atenderá principalmente a la mejora del modelo acústico, dejando el de lenguaje por defecto. Las mejoras propuestas consistirán en el uso de clasificadores en una fase previa al procesado de extracción de características, de forma que la salida de estos clasificadores se pueda concatenar a los vectores de características utilizados comúnmente y facilitar el reconocimiento. Los clasificadores estarán especializados en la distinción de ciertos fonemas o grupos de fonemas, e incluso aspectos articulatorios o contextuales de la producción de la voz. A través de la experimentación con distintas bases de datos elegiremos cual es la opción que nos proporciona mejores resultados. En la extracción de características haremos uso de varios tipos, como los coeficientes MFCC( Mel Frequency Cepstral Coefficients ), los coeficientes PLP ( predicción lineal perceptual ) o los coeficientes RASTA (Relative Spectral Transform). Para el diseño de los clasificadores se ensayarán distintas alternativas como redes neuronales, árboles de decisión, maquinas de soporte vectorial (SVMs), mezclas de gaussianas o redes bayesianas. En cuanto a la integración en el reconocedor, se ensayarán también distintas alternativas como el uso de distribuciones gaussianas, modelos gráficos o distribuciones beta. Villalta Pérez, Carolina; Miguel Artiaga, Antonio

Full text

ESTUDIO DE INTEGRACIÓN DE CLASIFICADORES DE RASGOS FONÉTICOS PARA LA MEJORA DE SISTEMAS DE RECONOCIMIENTO DE GRAN VOCABULARIO PROYECTO FIN DE CARRERA INGENIERÍA DE TELECOMUNICACIÓN ESPECIALIDAD: COMUNICACIONES JULIO 2011 AUTOR: CAROLINA VILLALTA PÉREZ DIRECTOR: DR. ANTONIO MIGUEL ARTIAGA 1 RESUMEN En los sistemas de inteligencia ambiental una parte fundamental la constituye el interfaz hombre-máquina, y dentro de éste, la interacción oral en ambos sentidos, de la que forman parte los sistemas tanto de reconocimiento automático como de síntesis de voz. En sistemas complejos la interacción simple por medio de comandos limita las posibilidades de un sistema de inteligencia ambiental, por ello es preciso tener disponibles reconocedores de voz de gran vocabulario. El trabajo de investigación propuesto tiene como objetivo la mejora de las prestaciones de un reconocedor automático de voz de gran vocabulario, medidas en tasa de errores de palabra. Para ello la investigación atenderá principalmente a la mejora del modelo acústico, dejando el de lenguaje por defecto. Las propuestas que se plantean consistirán en realizar clasificadores de rasgos fonéticos, en una fase previa a la de reconocimiento, y concatenar las salidas de estos clasificadores con los vectores de características utilizados comúnmente para facilitar el reconocimiento. Se propondrán diversas maneras de utilizar estos nuevos vectores de características como entradas al reconocedor. Los clasificadores estarán especializados en la distinción de ciertos fonemas o grupos de fonemas, e incluso aspectos articulatorios o contextuales de la producción de la voz. En concreto desarrollaremos siete tipos de clasificadores. Se propone realizar los clasificadores con redes neuronales artificiales o máquinas de soporte vectorial, a través de la experimentación con la base de datos TIMIT y distintos tipos de parametrización de la señal de voz, se elegirá el tipo de clasificador a utilizar que tendrá que cumplir unos requisitos. Una vez elegido los clasificadores se utilizarán para clasificar la base de datos WSJ0. Utilizaremos para el reconocimiento el reconocedor HTK y una modificación de este, el reconocedor HTK_STUZ desarrollado por el grupo GTC del I3A. Las pruebas consistirán en introducir directamente el vector de características formado por las salidas de los clasificadores junto con los vectores comúnmente utilizados (características tandem); después se adaptarán las salidas de los clasificadores a los modelos estadísticos utilizados en HTK y por último, y como novedad en el estado del arte de los reconocedores de gran vocabulario se utilizarán nuevos modelos estadísticos en el reconocimiento de estas características tandem, junto con los utilizados por el HTK. Los modelos que se usarán son: distribución Beta, redes Bayesianas y distribución de Bernoulli. 2 AGRADECIMIENTOS Este proyecto ha sido apoyado por el Instituto de Investigación en Ingeniería de Aragón (I3A), a través de la beca de iniciación a la investigación durante el periodo comprendido entre Octubre del 2010 y Abril del 2011. Primero quisiera agradecer el apoyo y la ayuda recibida durante todo el tiempo que ha durado este proyecto a mi director Antonio Miguel Artiaga. También me gustaría darles las gracias a una serie de personas que me han apoyado no solo durante el proyecto sino también durante toda la carrera. Gracias a Gonzalo, mis padres Joaquín y Nuria, mi hermana Nuria, mis abuelos Antonio y María, y por último a todos mis amigos. 3 ÍNDICE DE CONTENIDOS 1. INTRODUCCIÓN ................................................................................................................................... 9 1.1 OBJETIVO DEL PROYECTO .......................................................................................................................... 9 1.2 REVISIÓN BIBLIOGRÁFICA ........................................................................................................................ 10 1.3 METODOLOGÍA DE TRABAJO .................................................................................................................... 12 1.3.1 Documentación ......................................................................................................................... 12 1.3.2 Aprendizaje del uso de los clasificadores .................................................................................. 12 1.3.3 Experimentos ............................................................................................................................ 13 1.3.4 Análisis de resultados ............................................................................................................... 13 1.3.5 Diagrama de Gantt ................................................................................................................... 14 2. DESCRIPCIÓN ..................................................................................................................................... 15 2.1 SISTEMA DE RECONOCIMIENTO AUTOMÁTICO DEL HABLA ............................................................................. 16 2.2 FASE INICIAL ......................................................................................................................................... 17 2.2.1 Extracción de características .................................................................................................... 17 2.2.2 Clasificadores ............................................................................................................................ 19 2.3 FASE DE RECONOCIMIENTO ..................................................................................................................... 22 3. CLASIFICADORES DE RASGOS FONÉTICOS ......................................................................................... 26 3.1 RASGOS FONÉTICOS ............................................................................................................................... 26 3.2 DESARROLLO DE LOS CLASIFICADORES ........................................................................................................ 31 3.2.1 Redes Neuronales ..................................................................................................................... 31 3.2.2 Máquinas de soporte vectorial (SVM)....................................................................................... 35 3.3 EXPERIMENTOS ..................................................................................................................................... 37 3.3.1 TIMIT ......................................................................................................................................... 37 3.3.2 Experimentos realizados ........................................................................................................... 37 3.3.3 Conclusiones ............................................................................................................................. 41 4. EXPERIMENTOS DE RECONOCIMIENTO DE VOZ DE GRAN VOCABULARIO ........................................ 42 4.1 WALL STREET JOURNAL (WSJ0) .............................................................................................................. 42 4.2 CLASIFICADORES DE RASGOS FONÉTICOS PARA WSJ0 ................................................................................... 43 4.3 EXPERIMENTOS CON EL RECONOCEDOR ...................................................................................................... 44 5. CONCLUSIONES Y LÍNEAS FUTURAS ................................................................................................... 54 6. REFERENCIAS ..................................................................................................................................... 56 ANEXO I. EXTRACCIÓN DE CARACTERÍSTICAS............................................................................................. 59 ANEXO II. OPENSMILE ................................................................................................................................ 65 ANEXO III. USO DE REDES NEURONALES EN MATLAB ................................................................................ 68 ANEXO IV.PCA ............................................................................................................................................. 70 ANEXO V. DISTRIBUCIONES DE PROBABILIDAD .......................................................................................... 72 V.1 DISTRIBUCIÓN BETA .............................................................................................................................. 72 V.2 DISTRIBUCIÓN DE BERNOULLI .................................................................................................................. 73 V.3 REDES BAYESIANAS ............................................................................................................................... 73 ANEXO VI. HTK STREAMS............................................................................................................................ 75 4 ANEXO VII. LISTADO DE FONEMAS ............................................................................................................. 76 5 ÍNDICE DE TABLAS Tabla 1. Tabla de verdad puerta XOR ......................................................................................... 32 Tabla 2. Resultados de clasificación para XOR. ........................................................................... 34 Tabla 3. Resultados de la clasificación de nasales. ..................................................................... 38 Tabla 4. Resultados de la clasificación de oclusivas. ................................................................... 39 Tabla 5. Porción de datos elegida de cada una de las carpetas de la base de datos TIMIT para el conjunto de entrenamiento y test. ............................................................................................. 39 Tabla 6. Resultados de la clasificación de oclusivas, con 5 % de los datos de train y test. ........ 40 Tabla 7. Resultados de la clasificación de nasales, con 5 % de los datos de train y test. ........... 40 Tabla 8. Resultados obtenidos con todo el conjunto de test para el clasificador de nasales y oclusivas. ..................................................................................................................................... 40 Tabla 9. Tasa de acierto en el entrenamiento de los clasificadores. .......................................... 44 Tabla 10. Resultados obtenidos para distintos tipos de parametrizaciones de la señal de voz. 45 Tabla 11. Resultados de los dos primeros experimentos ........................................................... 46 Tabla 12. Resultados obtenidos al añadir el bloque PCA con la matriz A con distintas dimensiones. ............................................................................................................................... 47 Tabla 13. Primeros resultados combinando modelos gaussianos con otros tipos de modelos en la fase de reconocimiento. .......................................................................................................... 49 Tabla 14. Tasas de error obtenidas al aplicar distinto peso a las distribuciones. En todos los casos el peso asignado a las mezclas de Gaussianas (GMM) es de 1, y en el resto de los casos sus valores son: peso1=2, peso2=1.5 y peso3=2.5. .................................................................... 50 Tabla 15. Tasas de error obtenidas eliminando en cada experimento la salida de un clasificador de rasgo fonético. En todos los casos la GMM tiene un peso=1 y la Bernoulli un peso=2. ........ 51 Tabla 16. Tasas de error conseguidas para los tres sistemas propuestos eliminando la salida del clasificador de vocales. ................................................................................................................ 51 Tabla 17. Resultados obtenidos añadiendo el clasificador de fricativas y el de silencio. ........... 53 Tabla VII.1. Vocales ..................................................................................................................... 77 Tabla VII.2. Nasales ..................................................................................................................... 77 Tabla VII.3. Africadas ................................................................................................................... 77 Tabla VII.4. Fricativas ................................................................................................................... 77 Tabla VII.5. Líquidas ..................................................................................................................... 78 Tabla VII.6. Oclusivas ................................................................................................................... 78 6 ÍNDICE DE FIGURAS Figura 1. Diagrama de Gantt ....................................................................................................... 14 Figura 2. Sistema estándar de RAH ............................................................................................. 16 Figura 3. Estructura Sistema Tandem ......................................................................................... 16 Figura 4. Esquema del proceso de extracción de características MFCC ..................................... 18 Figura 5. Diagrama de bloques de extracción de los coeficientes PLP. ...................................... 18 Figura 6. Red MLP, con una capa oculta. .................................................................................... 20 Figura 7. Margen de decisión. ..................................................................................................... 21 Figura 8. Sistema estándar en RAH ............................................................................................. 23 Figura 9. Introducción de redes neuronales en el sistema estándar RAH. ................................. 23 Figura 10. Sistema RAH con de-correlación PCA. ........................................................................ 24 Figura 11. Sistema RAH que añade a su fase de reconocimiento distribuciones Beta o redes Bayesianas para crear una parte de los modelos........................................................................ 24 Figura 12. La imagen de arriba corresponde con el espectrograma de la palabra ‘she’ compuesta por los fonemas /sh//ix/, y la imagen inferior corresponde con su representación temporal. Para obtener estas gráficas se ha utilizado el programa WaveSurfer. ...................... 27 Figura 13. Espectrograma de la frase “She had your dark suit in greasy wash water all year” .. 28 Figura 14. Representación temporal de una señal de voz. La explosión que se produce al abrirse los órganos fonadores se puede observar en la parte rodeada en rojo. ....................... 28 Figura 15. Espectrograma del fonema oclusivo /p/ (parte seleccionada en rojo) en la palabra “private”. ..................................................................................................................................... 29 Figura 16. Espectrograma de la palabra “no”. La parte recuadrada de rojo corresponde al fonema /n/ y la otra parte al fonema /o/. .................................................................................. 29 Figura 17. Espectrograma de la palabra “si”. La primera parte que esta recuadrada en rojo corresponde con el fonema /s/ y la segunda parte con el fonema /i/. ...................................... 30 Figura 18. Espectrograma del fonema africado /ch/ (parte seleccionada en roja) en la palabra “such”. ......................................................................................................................................... 30 Figura 19. Espectrograma de los fonemas: /l/ y /ah/ respectivamente (partes seleccionadas en rojo) en la palabra “sale”............................................................................................................. 31 Figura 20. Representación temporal de los fonemas: /l/ y /ah/ respectivamente (partes seleccionadas en rojo) en la palabra “sale”. ............................................................................... 31 Figura 21. Datos generados aleatoriamente para la implementación de la XOR. ...................... 32 Figura 22. Conjunto de datos de test (800 ejemplos) ................................................................. 33 Figura 23. Programa WEKA. Distribución de los datos Iris.arff. .................................................. 36 Figura 24. Información que nos devuelve el clasificador SVM. .................................................. 36 Figura 25. Sistema base. Reconocedor WSJ0. ............................................................................ 44 Figura 26. Reconocedor base + clasificadores de rasgos fonéticos (CRF) ................................... 46 Figura 27. Reconocedor base + CRF + PCA. ................................................................................. 47 Figura 28. Sistema RAH que añade a su fase de reconocimiento la distribución Beta. .............. 48 Figura 29. Sistema RAH que añade a su fase de reconocimiento las redes Bayesianas (BBN) ... 48 Figura 30. Sistema RAH que añade a su fase de reconocimiento la distribución Bernoulli. ....... 49 Figura 31. Tasa de error en función del valor umbral en la distribución Bernoulli. .................... 52 Figura I.1. Esquema del proceso de extracción de características .............................................. 59 7 Figura I.2. Filtros triangulares para calcular el Mel-cepstrum. ................................................... 60 Figura I.3. Diagrama de bloques de extracción de coeficientes PLP. .......................................... 61 Figura I.4. Diagrama de bloques para calcular coeficientes RASTA-PLP ..................................... 63 Figura V.1. Función de densidad de probabilidad Beta .............................................................. 72 Figura V.2. Ejemplo de una red Bayesiana. ................................................................................. 74 14 1.3.5 Diagrama de Gantt En la Figura 1 se puede observar el diagrama de Gantt de este proyecto: Figura 1. Diagrama de Gantt 15 2. Descripción El reconocimiento automático del habla es básicamente un problema de clasificación estadística de secuencias de observaciones, donde queremos calcular la probabilidad a posteriori P(W|X). Donde W = w1w2…wm es la secuencia de palabras permitida por un diccionario y X = x1x2…xn es la representación paramétrica de la señal de voz. El problema de clasificación consiste en encontrar la secuencia de palabras W que maximice P(W|X). Para resolver este problema se utiliza el teorema de Bayes:  ( | ) ( | ) ( ) ( ) ( ) Dada una observación de la señal de voz X, en lugar de calcular P(W|X) podemos buscar aquella secuencia de palabras W que maximice:  ( | ) ( ) ( ) ya que la probabilidad de las observaciones P(X) no influye en la maximización. La probabilidad P(W) es conocida como el modelo del lenguaje (LM, language model) y la P(X|W) es conocida como el modelo acústico (AM, acoustic model). El objetivo es construir estos dos modelos de manera que reflejen de la manera más real posible el lenguaje hablado para poder reconocerlo. En sistemas de reconocimiento de gran vocabulario, hay una gran cantidad de palabras, de las cuales no podemos tener un modelo único, por lo que tenemos que dividirlas en secuencias de unidades más pequeñas como fonemas o trifonemas, por lo tanto P(X|W) está fuertemente relacionada con el modelo fonético. Además debe tener en cuenta la variabilidad de la voz, del género del hablante, de la pronunciación, del ambiente y también la variabilidad de la coarticulación en contexto dependiente de fonemas. El proceso de decodificación, donde se busca la secuencia de palabras W que mejor se adapte a la señal de voz X, en los sistemas de reconocimiento del habla es más que un simple problema de reconocimiento de patrones, puesto que en un sistema de reconocimiento de voz continua hay que buscar en una gran red de palabras que forman el modelo de lenguaje. En este proyecto como ya se comentó en la introducción dejaremos por defecto el modelo de lenguaje y nos centraremos en mejorar el modelo acústico. A lo largo de este capítulo describiremos en el punto 2.1 un sistema de reconocimiento automático del habla estándar así como el estudiado en el presente proyecto, en los puntos 2.2 y 2.3 describiremos de forma más detallada las distintas fases del sistema. 16 2.1 Sistema de Reconocimiento Automático del Habla La estructura estándar de un sistema de reconocimiento automático del habla (RAH) consta de tres etapas principales: En la primera, se extrae de la señal de voz sus características, obteniendo un vector de características compacto que intenta destacar de la señal sus rasgos más importantes. Existen varias técnicas para llevar a cabo la extracción de características que serán comentadas en el punto 2.2.1, que suelen consistir en un análisis localizado tiempofrecuencia. En la segunda parte, estos vectores de características son las entradas al modelo acústico que es entrenado para asociar a cada vector una unidad con significado lingüístico. Esto se realiza entrenando el modelo acústico con los ejemplos de entrenamiento, que son los vectores de características, previamente etiquetados, obteniendo así un conjunto de modelos de mezclas de Gaussianas que modelan las distintas unidades lingüísticas. Y por último, las salidas del modelo acústico son probabilidades relativas que introducimos al decodificador para que obtenga la secuencia de palabras más probable. En la Figura 2 podemos observar la estructura de este sistema. Fase de Inicio (preprocesado) Fase de Reconocimiento Figura 2. Sistema estándar de RAH Como ya hemos comentado en el Capítulo 1 este sistema estándar llamado sistema GMMHMM obtiene buenas prestaciones en numerosas tareas pero tiene algunas limitaciones que quieren ser eliminadas, y por ello se está utilizando desde hace unos años los sistemas Tandem. En el presente proyecto se ha estudiado un sistema Tandem como el que podemos ver en la Figura 3. Fase de Inicio (preprocesado) Fase de Reconocimiento Figura 3. Estructura Sistema Tandem Extracción de características GMM HMM Extracción de características NNs GMM HMM 17 Se puede observar en la Figura 3 que la diferencia que hay entre los dos sistemas es que en el sistema Tandem existe una etapa más. Esta nueva etapa consiste en un conjunto de clasificadores de rasgos fonéticos que en nuestro proyecto son redes neuronales, aunque pueden utilizarse otro tipo de clasificadores. Sobre estos clasificadores se hace una detallada descripción en el punto 2.2.2. La idea es obtener unos nuevos vectores de características que se utilicen como entradas al sistema GMM-HMM para mejorar el reconocimiento. Estarán formados por los vectores calculados en la etapa 1 y se les concatenarán las salidas obtenidas de los clasificadores de rasgos fonéticos. Para describir con más detalle cada una de las etapas que forman el Sistema Tandem, hemos agrupado las etapas en dos fases: la fase inicial que la forman la etapa de extracción de características y los clasificadores de rasgos fonéticos, punto 2.2, y la fase de reconocimiento formada por las otras dos etapas restantes, punto 2.3. 2.2 Fase Inicial La fase inicial de nuestro sistema Tandem consta de dos etapas: la extracción de características de la señal de voz y los clasificadores de rasgos fonéticos. A continuación describiremos cada una de estas etapas. 2.2.1 Extracción de características Realizamos la extracción de características de la señal de voz para reducir su dimensionalidad y así poder eliminar información no relevante en el análisis fonético y realzar aquellos aspectos de la señal que contribuyen significativamente a su detección. Para llevar a cabo la extracción de características primero se realiza la adquisición de la señal de voz. En este proyecto, esta parte no tenemos que realizarla puesto que utilizamos las bases de datos TIMIT y WSJ0. Existen un gran número de características, y todas ellas son características frecuenciales, como por el ejemplo, los coeficientes MFCC. Esto es así porque muchas de las características de la voz como son los formantes se caracterizan mejor en el dominio de la frecuencia con un vector de características de baja dimensión. Como hemos mencionado hay numerosos tipos de técnicas de parametrización de la señal de voz. En este proyecto haremos mención a las parametrizaciones utilizadas en nuestros experimentos, estas son: los coeficientes MFCC, lo más utilizados en RAH; los coeficientes PLP; y por último los coeficientes RASTA. Las tres técnicas utilizan el análisis localizado de la señal de voz, que consiste en enventanar la señal con una ventana normalmente de 25ms con un desplazamiento de 10ms, tratando estos fragmentos de la señal de manera independiente. Para realizar la extracción de características en el presente proyecto se ha utilizado la herramienta OpenSmile, cuyo funcionamiento es explicado en el Anexo II. 18 Mel-Frecuency Cepstrum Coefficients (MFCC) El cálculo de los coeficientes MFCC es explicado con detalle en el Anexo I. El esquema del proceso de obtención de los coeficientes MFCC se puede ver en la siguiente figura: Figura 4. Esquema del proceso de extracción de características MFCC De la Figura 4 podemos extraer que los coeficientes mel-cepstrum se obtienen de aplicar la DCT (Discrete Cosine Transform) a las salidas de los bancos de filtros Mel, realizando previamente un preprocesado de la señal de voz. En el caso de reconocimiento de voz se suelen calcular los 13 primeros coeficientes MFCC. Nos interesa captar los cambios temporales que se dan en el espectro, ya que juegan un papel muy importante en la percepción humana y la coarticulación. Por ello se utilizan además los coeficientes delta ya que capturan esa información y los coeficientes de aceleración. Los coeficientes delta y los de aceleración no son más que la primera y segunda derivada de los coeficientes MFCC respectivamente. Por lo tanto se suele trabajar con un vector de características de 39 dimensiones. Predicción Lineal Perceptual (PLP) En la Figura 5 podemos ver el diagrama de bloques que se usa para realizar la extracción de los coeficientes PLP, la explicación detallada del proceso se realiza en el Anexo I. Figura 5. Diagrama de bloques de extracción de los coeficientes PLP. Pre-énfasis emphasis enventanado FFT FFT DCT log Banco de filtros Mel voz MFCC Análisis banda crítica emphasis voz Igual sonoridad pre-énfasis Conversión intensidad-sonoridad IFFT emphasis Solución coeficientes autoregresivos Modelo todo polos 19 El principio básico del análisis PLP es obtener mediante un modelo de todo polos una aproximación del espectro auditivo de la voz. El modelo de todo polos lo obtenemos mediante el método de autocorrelación y se utiliza la frecuencia Bark [5], a diferencia de los coeficientes MFCC que utilizan la frecuencia Mel [1]. El orden del modelo todo polos variará según el grado de detalle que queramos que tenga la aproximación del espectro auditivo de la voz. Relative Spectral Transform (RASTA) La técnica PLP es vulnerable cuando los valores del espectro localizado de la señal de voz se ven modificados por la respuesta en frecuencia del canal de comunicaciones, por ello aparece la técnica RASTA para hacer que el análisis PLP sea más robusto ante estas distorsiones espectrales [6]. El análisis RASTA consiste en reemplazar el espectro localizado por un espectro estimado en el que cada canal frecuencial es filtrado paso banda con un filtro que vale cero en la frecuencia cero, este cero sirve para eliminar las variaciones lentas o los valores constantes de cada canal frecuencial y también vale cero en frecuencias superiores a las utilizadas por la dinámica de la voz, normalmente decenas de Hz, para así eliminar variaciones demasiado rápidas. El nuevo espectro será menos sensible a variaciones lentas en el espectro localizado. 2.2.2 Clasificadores En este punto hablaremos de los clasificadores de rasgos fonéticos cuyas salidas concatenaremos a los vectores de características comentados en el apartado anterior. El nombre de clasificadores de rasgos fonéticos se debe a que lo que vamos a clasificar es si las entradas tienen o no un determinado rasgo fonético, siendo las entradas los vectores de características que representan a la señal de voz. Vamos a realizar clasificadores binarios, es decir, vamos a tener un clasificador para cada rasgo fonético. Los rasgos fonéticos que queremos clasificar así como un resumen de lo que son, se encuentran explicados en detalle en el Capítulo 3. En este proyecto se han investigado los siguientes clasificadores: modelos de mezclas de Gaussianas, redes neuronales artificiales y máquinas de soporte vectorial. A continuación realizaremos un breve resumen sobre cada uno de los clasificadores. En el Capítulo 3 describiremos como los hemos desarrollado y los experimentos realizados con ellos. Modelos de Mezclas de Gaussianas (GMM) Cuando utilizamos los GMM como clasificadores la idea básica consiste en modelar cada clase que queremos clasificar con una mezcla de Gaussianas. Para conseguirlo, primero entrenamos el modelo de mezclas con datos de entrenamiento, que son ejemplos de la clase que queremos clasificar, donde entrenar el modelo consiste en estimar sus parámetros. Un vector aleatorio x que esta descrito por una mezcla de M Gaussianas tiene como función de densidad de probabilidad: 20 ( ) ∑ ( | ) ( ) donde ( | ) es la función de distribución de una Gaussiana multidimensional con vector de medias y matriz de covarianzas . La suma de todos los da uno y representa el peso que cada componente Gaussiana tiene en la mezcla. Para calcular los parámetros , y utilizamos el criterio EM (Expectation Maximization) que es una solución iterativa que maximiza la verosimilitud utilizando una función auxiliar [1]. En general, la matriz de covarianzas de cada mezcla tiene N2 elementos (donde N es la dimensión del vector de características) que tienen que ser estimados. Si las características del vector son independientes los elementos de fuera de la diagonal de son cero, por lo que solo se tienen que estimar N elementos, así que se buscará utilizar características que sean independientes. Una vez las mezclas hayan sido entrenadas podremos utilizarlas como clasificadores. Redes Neuronales Artificiales (ANN) Hay varios tipos de redes neuronales [9,10], pero en nuestro proyecto vamos a utilizar las redes neuronales MLP (Multilayer Perceptron) con alimentación hacia adelante, en la Figura 6 vemos un ejemplo de MLP. Estas redes usan para entrenarse el algoritmo back-propagation que es un algoritmo de gradiente descendente [1] que reduce el error cuadrático medio de la salida de una neurona. El entrenamiento de la red es un problema de optimización no lineal cuyo objetivo es encontrar un conjunto de pesos que minimicen la función de coste. La función de coste describe una superficie en el espacio de pesos, llamada superficie de error. Los algoritmos de entrenamiento pueden verse como métodos para encontrar el mínimo de la superficie. Normalmente una red consta de una capa de entrada, otra capa de salida y al menos una capa oculta. Se ha demostrado que con una sola capa oculta es suficiente para conseguir buenos resultados de clasificación, y en muchos problemas, se consiguen mejores convergencias [16]. Además este tipo de redes es capaz de aproximar cualquier función no lineal. Figura 6. Red MLP, con una capa oculta. Sea una red MLP con una capa oculta que tiene la siguiente estructura: la capa de entrada tiene p neuronas, la capa oculta tiene q neuronas y la capa de salida tiene r neuronas. El vector de salida Y está relacionado con el vector de entrada X de la siguiente manera: 21 ( ∑ ) ( ) ( ∑ ) ( ) donde A y B son los vectores bias, W y V son los vectores de pesos y, f1 y f2 las funciones de activación de las neuronas de la capa oculta y de salida respectivamente. En este proyecto las funciones de activación que se han utilizado son: la función de Matlab tansig (hyperbolic tangent sigmoid transfer function) para la capa oculta y la función de Matlab logsig (logarithmic sigmoid transfer function) para la capa de salida. Los pesos de la red neuronal tienen que ser inicializados. Este paso es uno de los más importantes para poder conseguir unos buenos resultados de clasificación. Máquinas de Soporte Vectorial (SVM) SVM se diseñó para ser un clasificador binario capaz de adivinar si un vector de entrada x pertenecía a la clase 1 (entonces la salida sería y=+1) o a la clase 2 (y=-1). Dado un conjunto de datos separables, el objetivo del SVM es encontrar la función de decisión óptima, como se puede pensar hay un número infinito de funciones óptimas, en el sentido de obtener una solución sin ningún error. Lo que se busca es encontrar una función óptima que sea capaz de generalizar ejemplos no conocidos a priori. Podemos pensar en un algoritmo adicional para elegir entre aquellas funciones que nos den cero errores. Por ello la función que elegiremos será aquella que tenga el máximo margen, siendo este margen la distancia entre la muestra más cercana y el límite de decisión definido por la función. La elección de la función con máximo margen no implica obtener la solución con menos errores, pero en la mayoría de los casos esta elección es la mejor en muchos problemas [17]. En la Figura 7 se muestra un problema de clasificación para SVM: Figura 7. Margen de decisión. 22 El problema descrito en la Figura 7 se separaría con una función lineal. Muchos problemas de interés no se pueden separar tan fácilmente, por ello se define una función no lineal discriminante de la siguiente manera: ( ) ( ) ( ) donde ( ) ( ) es una función no lineal que mapea el vector x en un espacio, llamado espacio de características, de alta dimensionalidad incluso de hasta infinito. En este espacio de características se asume que las clases son linealmente separables. El vector w representa el hiperplano que divide este espacio. Debe tenerse en cuenta que el espacio de características que aquí mencionamos no es el mismo que el espacio de características de la señal de voz, sino que nos referimos al espacio donde se encuentran las entradas de una función Kernel, que será comentada más adelante. En la Figura 7 vemos rx que representa la distancia entre la muestra transformada ( ) y el hiperplano de separación, y ‖ ‖ es la norma Euclidea de w. Los vectores más próximos al límite de decisión se llaman vectores soporte (support vectors) y son los que definen el margen, así como los únicos que utilizaremos para encontrar la solución. Por lo tanto para cada muestra tenemos, ( ) ‖ ‖. El objetivo es encontrar el clasificador que tenga la mínima ‖ ‖ cumpliendo la restricción de que todas las muestras estén bien clasificadas: ( ( ) ) ( ) podemos tratarlo como un problema de optimización cuadrática [3]. Para que el clasificador tenga una mejor capacidad de generalizar y de tratar con casos no separables, se le permite un número de ejemplos no clasificados, esto se consigue introduciendo una penalización. Normalmente, la función ( ) no es conocida pero esto no es un problema puesto que nosotros solo necesitamos evaluar el producto vectorial ( ) ( ) el cual puede ser calculado utilizando la función Kernel ( ). Hay varios tipos de funciones Kernel, las más usadas son la lineal, la polimonial, RBF (función de base radial) y la sigmoide [24]. 2.3 Fase de Reconocimiento Como hemos dicho en secciones anteriores los sistemas de reconocimiento tienen dos fases: fase de inicio, donde realizamos la extracción de características y que ya ha sido explicada; y la fase de reconocimiento que va a ser explicada en esta sección y cuyas etapas corresponden con los bloques recuadrados en rojo de las Figuras 8, 9, 10 y 11. En la Figura 8 podemos observar el sistema estándar utilizado en RAH: 23 Figura 8. Sistema estándar en RAH En este sistema estándar la fase de reconocimiento consta de dos etapas que constituyen el back-end: en la primera etapa (GMM) se realiza la estimación de los modelos. El número de modelos que tengamos dependerá de la exactitud que queramos que tenga nuestro reconocedor, podemos modelar palabras enteras, o como es habitual fonemas o trifonemas, estos últimos son los que mejor tasa de reconocimiento nos proporcionan. Cada modelo es un HMM (Modelo Oculto de Markov) y cada estado del HMM es modelado con una mezcla de Gaussianas de ahí el nombre del bloque. La segunda y última etapa (HMM) consiste en la decodificación de los HMM, es decir, en encontrar la secuencia de palabras más probable dada la entrada que tenemos en el sistema. Figura 9. Introducción de redes neuronales en el sistema estándar RAH. La primera modificación que se introduce en el sistema de la Figura 8 se puede ver en el sistema RAH de la Figura 9. Realmente esta modificación afecta a la fase de inicio, donde la fase de reconocimiento, que es la misma que en el sistema estándar, sus entradas no sólo son las características comunes sino también las salidas de los clasificadores de rasgos fonéticos que son implementados con redes neuronales. Lo que se espera realizando esta modificación es mejorar los resultados del reconocedor ya que se está introduciendo información adicional que puede ser de ayuda a la hora de reconocer. Realmente esto no ocurre debido a que las GMM HMM Extracción de características Extracción de características NNs GMM HMM 30 Figura 17. Espectrograma de la palabra “si”. La primera parte que esta recuadrada en rojo corresponde con el fonema /s/ y la segunda parte con el fonema /i/. Africadas Un sonido africado es una consonante que empieza como una oclusiva, pero que al soltar el aire se convierte en una fricativa. Las africadas se comportan como un estado intermedio entre oclusivas y fricativas, pero fonéticamente son secuencias de oclusivas más fricativas. En la Figura 18, en la parte seleccionada en rojo, podemos ver que la primera parte corresponde con el silencio que tienen todas las oclusivas al principio y que la segunda parte del espectro es como el de una fricativa, toda la energía está contenida en las altas frecuencias. Figura 18. Espectrograma del fonema africado /ch/ (parte seleccionada en roja) en la palabra “such”. Líquidas Los sonidos líquidos son los más parecidos a las vocales, se articulan con el tracto abierto, como las vocales, y aunque existe algún obstáculo, dicho obstáculo no impide la salida de aire por los espacios que deja libre. En las Figuras 19 y 20 se puede ver el parecido que hay entre un sonido líquido y otro vocálico. 31 Figura 19. Espectrograma de los fonemas: /l/ y /ah/ respectivamente (partes seleccionadas en rojo) en la palabra “sale”. Figura 20. Representación temporal de los fonemas: /l/ y /ah/ respectivamente (partes seleccionadas en rojo) en la palabra “sale”. 3.2 Desarrollo de los clasificadores Una vez que se han comentado las características de algunos rasgos fonéticos, el siguiente paso es realizar los clasificadores de estos rasgos. Pero para ello primero se tiene que aprender a utilizar los distintos tipos de clasificadores, que son: la red neuronal y la máquina de soporte vectorial (SVM). Después, se llevará a cabo una serie de experimentos en el punto 3.3 para poder elegir qué clasificador se utilizará. En esta sección, por lo tanto, se hablará primero de las redes neuronales en el punto 3.2.1, y después de los SVM en el punto 3.2.2, en las dos ocasiones será desde un punto de vista práctico, puesto que la teoría sobre la que se basan los dos clasificadores ya ha sido introducida en el Capítulo 2. 3.2.1 Redes Neuronales Para poder comprender más rápidamente el funcionamiento de las redes neuronales se comenzó realizando un experimento sencillo, que consiste en implementar la XOR. 32 La red neuronal se va a implementar utilizando Matlab, este posee una toolbox para redes neuronales que utilizaremos. En el Anexo III se encuentra un ejemplo de cómo se puede utilizar esta toolbox. Ejemplo sencillo XOR En la Tabla 1 podemos ver la tabla de verdad de la XOR: Entrada A Entrada B Salida 0 0 0 0 1 1 1 0 1 1 1 0 Tabla 1. Tabla de verdad puerta XOR De la Tabla 1 podemos deducir que se van a clasificar dos clases: clase 0 y clase 1, por lo que vamos a tener un clasificador binario, que es el tipo de clasificadores que queremos implementar para cada rasgo fonético, como se verá en el punto 3.3. Generamos un corpus artificial de 2000 ejemplos, de forma que podamos estudiar su clasificación en estas dos clases. Para añadir incertidumbre al problema de clasificación añadimos ruido aleatorio a las observaciones de la Tabla 1, Figura 21: Figura 21. Datos generados aleatoriamente para la implementación de la XOR. Los puntos de color rojo deberían ser clasificados dentro de la clase 1 y los de color azul dentro de la clase 0. 33 La idea es que hay que entrenar la red neuronal con unos datos de entrenamiento que tienen que estar etiquetados, es decir, la red neuronal tienen que saber a qué clase pertenece cada dato de entrenamiento. Este etiquetado se realiza manualmente. La manera de introducir los datos a la red neuronal puede hacerse de dos maneras en Matlab: con la función train(), se cargan todos los datos en memoria y se entrena la red; y con la función adapt(), se van introduciendo los datos poco a poco, en bloques. Los datos que se introducen en la red con la función adapt() tienen que estar balanceados, es decir, intercalar datos de una clase con los de la otra. Se van a utilizar estas dos funciones de la siguiente manera: se crea la red neuronal y se entrena con una pequeña parte de los datos con la función train(), es una manera de inicializar la red, y por último con adapt() se va entrenando la red con bloques de datos hasta que se hayan introducido todos nuestros datos de entrenamiento, en cada iteración adapt() nos devuelve la red actualizada, las salidas de la red y el error cometido. La razón de realizar así el entrenamiento de la red neuronal es porque para los experimentos de nuestro proyecto la base de datos de voz que se usa es enorme, por lo que se tendrá un problema de memoria si se hace solo con la función train(). A la hora de realizar el test, se tienen dos posibilidades: realizar validación cruzada, es decir, se puede dividir el conjunto de datos de entrenamiento en dos o más grupos, si lo dividimos en dos, primero entrenaremos la red con un grupo y la testearemos con el otro pero también lo haremos al revés, es decir, los datos que hemos utilizado en el entrenamiento antes serán los de test y los de test de antes serán ahora los de entrenamiento. Los dos resultados que se obtengan se promedian y así obtenemos la tasa de acierto del clasificador. La segunda opción es utilizar un conjunto de datos de test, diferente al de entrenamiento. En este ejemplo vamos a generarnos un conjunto de test de la misma manera que se ha hecho para los datos de entrenamiento, Figura 22: Figura 22. Conjunto de datos de test (800 ejemplos) En el Capítulo 2 ya se ha dicho que con una sola capa oculta la red neuronal consigue muy buenos resultados, por lo que se van a realizar todos los experimentos con 3 capas: capa de 34 entrada, capa oculta y capa de salida. La capa de salida siempre va a tener dos neuronas ya que se quieren clasificar dos clases, el número de neuronas de la capa de entrada y oculta será el mismo, y este se irá modificando para ver cómo afecta a la clasificación. En la Tabla 2 podemos ver la tasa de acierto conseguida con distintos valores para el número de neuronas de la capa de entrada y oculta: Neuronas Capa de Entrada Neuronas Capa Oculta Tasa de Acierto en el entrenamiento (%) Tasa de Acierto (%) 2 2 99.97 73.50 3 3 70.42 74.38 4 4 74.75 72.63 5 5 100.00 99.32 6 6 100.00 98.69 7 7 75.00 75.00 8 8 100.00 99.50 9 9 68.05 67.50 10 10 68.62 66.43 Tabla 2. Resultados de clasificación para XOR. La mejor tasa la obtenemos con 8 neuronas. Se podía pensar que la red neuronal obtiene mejor resultado a mayor número de neuronas en las capas de entrada y oculta, pero como se puede observar en la Tabla 2, con 8 conseguimos la mejor tasa pero al poner una neurona más la tasa decae bastante. También debemos fijarnos en la tercera columna, esta tasa la obtenemos de las salidas que nos devuelve adapt(), en la mayoría de los casos es mayor que la tasa de acierto que obtenemos con test que es la que realmente nos interesa y además si nos fijamos en la primera fila, donde el número de neuronas es 2 la tasa de entrenamiento nos da un 100% de acierto y la de test un 73.5%. Por lo tanto, como conclusión se puede decir que no nos podemos fiar al 100% de la tasa que obtenemos solo con los datos de entrenamiento (3 columna de la Tabla 2), y que poner un número elevado de neuronas en la capa de entrada y oculta no nos asegura mejorar la clasificación. Este problema es muy conocido en el ámbito de reconocimiento de patrones, se conoce como sobreajuste u overfitting, consiste en que si se utiliza un número pequeño de datos la red se acaba aprendiendo esos datos no una generalización de estos. Debemos añadir también que a mayor número de neuronas mayor es el coste computacional. 35 3.2.2 Máquinas de soporte vectorial (SVM) En el caso de los SVM la herramienta que se ha utilizado para trabajar con ellos ha sido el programa WEKA versión 3-6-3 de la universidad de WAIKATO, Halminton, Nueva Zelanda; con la librería LibSVM para máquinas de soporte vectorial. Con este programa se puede trabajar tanto por línea de comandos como de una forma gráfica. Se utilizó en primer lugar su forma gráfica para realizar pruebas con ejemplos sencillos, ya que es más intuitiva, pero para los experimentos de nuestro proyecto se utilizó la línea de comandos, por ser más rápida. Los datos que utiliza WEKA están en formato Arff, por lo que no se pueden introducir los datos que se utilizan en la red neuronal tal y como están, tienen que ser convertidos al formato .arff. En nuestro caso tendremos que escribir las características de la voz en este formato, para ello se utilizó el programa OpenSmile que calcula una gran variedad de parametrizaciones y las escribe en varios formatos, uno de ellos es Arff, esto se realiza en los experimentos del punto 3.3. Como se explicó en el Capítulo 2 el clasificador SVM puede utilizar varios tipos de funciones Kernel, para estos experimentos sencillos y para el resto de experimentos desarrollados en este proyecto se va a utilizar siempre la función de base radial (RBF) [18]. Por lo tanto los parámetros que van a influir en la clasificación y que se deberán modificar son: C parámetro de penalización y ϒ parámetro de la función Kernel RBF. Ejemplo Sencillo Para realizar este ejemplo sencillo que nos sirve como entrenamiento para experimentos grandes se utilizarán los datos Iris.arff, datos que son proporcionados por el propio programa WEKA, y son muy utilizados [25]. Se quieren clasificar los datos en 4 clases: sepallength, sepalwidth, petallength y petalwidth. Los datos de entrenamiento se pueden ver en la Figura 23. Para realizar el test se pueden elegir dos opciones, igual que en el caso de la red neuronal: validación cruzada o utilizar un conjunto de datos de test. Para este ejemplo se utilizará la opción de validación cruzada. Una vez que se tienen los datos, el paso siguiente es introducir el valor de los parámetros en el clasificador SVM; y así ya se puede realizar la clasificación. 36 Figura 23. Programa WEKA. Distribución de los datos Iris.arff. En la Figura 24 se puede observar la información que nos proporciona el clasificador SVM en WEKA, de la cual el de mayor importancia para nosotros es el porcentaje de datos bien clasificados. Figura 24. Información que nos devuelve el clasificador SVM. 37 Una vez que ya se sabe cómo funcionan los clasificadores, se pasará a explicar los experimentos que se han realizado para el presente proyecto en el punto 3.3, que consisten en realizar una serie de clasificadores de rasgos fonéticos, que nos servirán como ejemplos para desarrollar los clasificadores para la base de datos WSJ0 que es la que vamos a introducir en el reconocedor. 3.3 Experimentos Para llevar a cabo los experimentos se va a utilizar la base de datos TIMIT. Este punto lo dividiremos de la siguiente forma: primero una breve descripción sobre TIMIT y por último, descripción y evaluación de los diferentes experimentos realizados. 3.3.1 TIMIT La base de datos TIMIT [21] ha sido diseñada para utilizar sus datos en la adquisición de conocimiento fonético y acústico de la voz y para desarrollar y evaluar sistemas de reconocimiento automático del habla. Se crea bajo el esfuerzo conjunto de varios grupos, respaldados por el Defense Advanced Research Projects Agency - Information Science and Technology Office (DARPA-ISTO). Los datos de test fueron diseñados entre el Instituto Tecnológico de Massachusetts (MIT), el Instituto de Investigación de Stanford (SRI), y Texas Instruments (TI). TIMIT contiene un total de 6300 frases, pronunciadas por 630 hablantes, donde cada uno de ellos pronuncia 10 frases. De los 630 hablantes: 438 son hombres y 192 son mujeres, todos ellos pertenecen a una de las 8 principales regiones con dialecto que hay en Estados Unidos, por ellos los ejemplos tanto de entrenamiento como de test se encuentran divididos en 8 carpetas, una por cada uno de los dialectos: dr1,dr2,..dr8. 3.3.2 Experimentos realizados El objetivo de los experimentos es encontrar cuál de los clasificadores descritos en el punto 2.2.2 es el que se utilizará en nuestros experimentos finales con el reconocedor. Vamos a probar dos tipos de clasificadores: la red neuronal y la máquina de soporte vectorial (SVM), y compararemos los resultados obtenidos. Una vez hayamos comparado los resultados, elegiremos aquel clasificador que mejor cumpla los requisitos requeridos. Los requisitos que tiene que cumplir el clasificador son dos: máxima tasa de acierto y coste computacional bajo. Vamos a clasificar dos rasgos fonéticos: sonido nasal y oclusivo. Para cada rasgo implementaremos un clasificador binario. Las entradas a los dos clasificadores son los vectores de características. Vamos a dividir el conjunto de entrada en dos, es decir, si queremos clasificar que el vector de características sea un sonido oclusivo, tendremos el conjunto de ejemplos que son oclusivos, etiquetados manualmente, y el conjunto de ejemplos que no son oclusivos, también etiquetados manualmente. Esta división del conjunto de entrada es una 38 fase de preparación de los datos para el clasificador. Una vez realizada esta separación de los datos de entrada lo que tenemos son vectores de características con una dimensión de 65, este número proviene de los 13 coeficientes estáticos de los coeficientes MFCC o PLP, ya que dejaremos los coeficientes RASTA para futuros experimentos, y los 52 restantes son los 13 coeficientes estáticos de las dos tramas anteriores y las dos posteriores, que concatenamos para capturar el contexto y la coarticulación, en sustitución de las derivadas. Hay varios tipos de coeficientes MFCC y PLP, para nuestros experimentos vamos a utilizar los siguientes: - MFCC_0,incluimos el coeficiente cero dentro de los 13 coeficientes estáticos - PLP_0, incluimos el coeficiente cero dentro de los 13 coeficientes estáticos. A continuación se pasará a explicar los experimentos realizados con cada uno de los clasificadores. Red Neuronal Para realizar los clasificadores vamos a utilizar un tipo de red neuronal concreto, la MLP (Multilayer perceptron). La estructura de la red neuronal consta de: una capa de entrada, una capa de salida y una capa oculta. La capa de salida está formada por dos neuronas, ya que es un clasificador binario, y el número de neuronas de la capa de entrada y salida va a ser un parámetro que vamos a modificar para poder conseguir mejores resultados en la clasificación, como se comentó en el punto anterior. Por simplicidad vamos a imponer que el número de neuronas de la capa de entrada y de la capa oculta sea el mismo, el valor de este parámetro influye mucho en el coste computacional, por lo que aumentar el número de neuronas de la capa implica aumentar el coste computacional. Por ello el rango elegido de valores con el que vamos a experimentar es de 10 neuronas hasta 20 para la capa de entrada y la capa oculta. En las Tablas 3 y 4 recogemos los mejores resultados obtenido de los 11 posibles experimentos, para el clasificador de nasales y de oclusivas respectivamente: Número de neuronas Capa de entrada Número de neuronas Capa oculta Características Tasa de acierto (%) 18 18 MFCC_0 73.48 18 18 PLP_0 76.20 16 16 PLP_0 74.53 12 12 PLP_0 71.79 Tabla 3. Resultados de la clasificación de nasales. 39 Número de neuronas Capa de entrada Número de neuronas Capa oculta Características Tasa de acierto (%) 12 12 PLP_0 66.95 14 14 PLP_0 77.70 18 18 PLP_0 68.73 20 20 PLP_0 68.38 Tabla 4. Resultados de la clasificación de oclusivas. La máxima tasa de acierto para ambos clasificadores la conseguimos utilizando los coeficientes PLP_0, para nasales la tasa máxima es de 76.20 % y para el clasificador de oclusivas es de 77.70 %. Podemos destacar en la clasificación de oclusivas que el valor del número de neuronas influye considerablemente en la tasa de clasificación, también en la clasificación de nasales pero no tan fuertemente. Máquina de soporte vectorial (SVM) El otro tipo de clasificador que vamos a utilizar es el SVM. Como se explicó en el punto 2.2.2 para realizar la clasificación con los SVM necesitamos una función de Kernel, la función de Kernel que hemos elegido para trabajar es la RBF (Función de base radial) [18]: ( ) ‖ ‖ ( ) La pareja (C, γ) son los parámetros a cambiar, donde γ es el parámetro de la función RBF y C es el parámetro de penalización. Los valores que vamos a dar a cada uno de ellos son [18]: - Para γ = , ,…, - Para C = , ,…, Vamos a entrenar el clasificador SVM con cada una de las posibles combinaciones (C, γ), que suman un total de 110 posibles combinaciones. Para el entrenamiento no vamos a utilizar todo el conjunto de entrenamiento de TIMIT, como ya se comentó los clasificadores SVM no pueden manejar gran cantidad de datos, por ello vamos a utilizar solo el 5% del conjunto de entrenamiento, elegido aleatoriamente de la siguiente forma: DR1 DR2 DR3 DR4 DR5 DR6 DR7 DR8 8 % 16 % 16 % 16 % 16 % 7 % 16 % 5 % Tabla 5. Porción de datos elegida de cada una de las carpetas de la base de datos TIMIT para el conjunto de entrenamiento y test. Haremos lo mismo para el conjunto de test que se utilizará para seleccionar la pareja (C, γ) que mejor tasa de acierto nos proporciona. Una vez seleccionada esa pareja (C, γ) pasaremos a utilizar todo el conjunto de test con el clasificador. De esta forma nos aseguramos de que la elección de los parámetros no se sobre ajusta a los datos de test. 46 Primera modificación: introducción de los clasificadores de rasgos fonéticos Figura 26. Reconocedor base + clasificadores de rasgos fonéticos (CRF) En la Figura 26 se puede ver la primera modificación introducida, que consiste en que ahora al reconocedor no sólo le entran las salidas del extractor de características, sino que también tiene como entradas a las salidas de las redes neuronales que hemos implementado en el punto anterior. En un primer momento solo vamos a utilizar 5 de los 7 clasificadores que hemos hecho, que son: el clasificador de nasales, liquidas, africadas, oclusivas y vocales. Por lo tanto las entradas al reconocedor ahora son unos vectores de características de 44 dimensiones (39 + 5), los vectores procedentes del extractor de características no sufren ninguna modificación solamente se les concatenan las salidas de los clasificadores para formar los nuevos vectores. Si nos fijamos en la Figura 26, la parte del reconocedor no se ve modificada, lo único que tendremos que hacer es cambiar unos ficheros de configuración para que el reconocedor pueda trabajar con los datos de 44 dimensiones. Experimento Tasa de error (%) Baseline 8.28 Reconocedor base + CRF 11.15 Tabla 11. Resultados de los dos primeros experimentos La idea por la que se han añadido las salidas de los clasificadores a los vectores de características ya existentes es para dar más información al reconocedor y así mejorar su tasa de reconocimiento, pero como se puede observar en la Tabla 11 esto no es así sino que incluso empeoramos la tasa de error de forma considerable. Este mal resultado era de esperar, tiene su explicación en la naturaleza no gaussiana de las salidas de los clasificadores, estas salidas tienen valores entre cero y uno. El problema está en que el reconocedor tal y como está diseñado solo admite datos gaussianos, y al introducirle una parte que no lo son, no los sabe interpretar bien. En trabajos anteriores se ha propuesto la siguiente solución [12], Figura 27. Extracción de características NNs GMM HMM 47 Segunda modificación: Bloque PCA Figura 27. Reconocedor base + CRF + PCA. El nuevo sistema que planteamos difiere del de la Figura 26 en que le hemos añadido un nuevo bloque, el cual realiza la de-correlación PCA. El bloque PCA se introduce para adaptar las salidas de los clasificadores a los modelos gaussianos del reconocedor. El objetivo de PCA es obtener las direcciones principales de variación de los datos, estimando la matriz de covarianza, de la cual calculamos sus autovalores y autovectores. La matriz A contiene estos autovectores ordenados de forma decreciente según el valor de sus autovalores, obteniendo así los vectores base para la proyección de los datos. En nuestro caso tendremos unos vectores base de 44 dimensiones que contienen la misma información que nuestros datos antes de realizarles la de-correlación PCA. Podemos retener información, es decir, utilizar estos vectores base pero con una dimensión menor de 44 y seguir manteniendo la información relevante de nuestros datos. Experimentos Dimensión Tasa de error (%) Baseline 39 8.28 Reconocedor base + CRF 44 11.15 Reconocedor base + CRF + PCA 44 10.59 Reconocedor base + CRF + PCA 39 9.75 Reconocedor base + CRF + PCA 21 13.69 Tabla 12. Resultados obtenidos al añadir el bloque PCA con la matriz A con distintas dimensiones. En los resultados de la Tabla 12 podemos ver que cuando la dimensión de la matriz A solo es de 21, la tasa de error empeora considerablemente. Esto es debido a que se ha eliminado información importante al truncar la matriz de 44 a 21 dimensiones. Respecto a los otros dos casos, cuando A tiene la misma dimensión que nuestros datos conseguimos una mejor tasa que si no aplicamos PCA; y cuando A tiene una dimensión de 39 se obtiene una tasa de 9.75%, la mejor, pero sigue estando por encima del 8.28%. Extracción de características NNs GMM HMM PCA 48 Por lo tanto al añadir el bloque PCA hemos mejorado pero todavía estamos lejos de nuestro objetivo. Por lo que se va a plantear otra modificación pero esta vez dentro del propio reconocedor. A partir de ahora utilizaremos el reconocedor HTK_STUZ. Tercera modificación: Introducción de nuevos tipos de modelos en la fase de reconocimiento Como ya se explicó en el punto 2.3 esta tercera modificación supone una novedad en el estado del arte de los sistemas RAH de gran vocabulario. Se van a plantear tres sistemas posibles, cuya diferencia entre ellos es el nuevo modelo al que se van a adaptar las salidas de las redes neuronales. Ya hemos visto que utilizando el bloque PCA conseguimos que las salidas de las redes se adapten mejor a los modelos gaussianos que utiliza el reconocedor, pero ahora lo que queremos es utilizar otros tipos modelos a los que si se adapten las salidas de las redes sin tener que realizar ningún preprocesado. Se plantean tres modelos: distribución Beta, redes Bayesianas y distribución de Bernoulli. La distribución Beta trabaja con datos de entrada que se encuentran en el rango (0,1), y las otras dos trabajan con datos discretos {0,1}, por lo que los tres pueden trabajar con las salidas de los clasificadores, en el caso de las redes Bayesianas y de la Bernoulli habrá que cuantificar las observaciones. En las Figuras 28, 29 y 30 se pueden ver los tres sistemas que se plantean. Figura 28. Sistema RAH que añade a su fase de reconocimiento la distribución Beta. Figura 29. Sistema RAH que añade a su fase de reconocimiento las redes Bayesianas (BBN) Extracción de características GAUSS BETA HMM NNs MEZCLA Extracción de características GAUSS BBN HMM NNs MEZCLA 49 Figura 30. Sistema RAH que añade a su fase de reconocimiento la distribución Bernoulli. Por lo tanto en estos sistemas los vectores de características son de 44 dimensiones (39 +5), las 39 primeras dimensiones serán las entradas a los modelos de Gaussianas y las otras 5 dimensiones serán las entradas a los otros modelos. En la Tabla 13 tenemos los primeros resultados con estos nuevos sistemas. Experimentos Tasa de error (%) Baseline 8.28 Reconocedor GMM + Beta 8.33 Reconocedor GMM + Bernoulli 8.33 Reconocedor GMM + BBN 8.28 Tabla 13. Primeros resultados combinando modelos gaussianos con otros tipos de modelos en la fase de reconocimiento. Los primeros resultados que obtenemos son bastante alentadores, pues como se puede ver en la Tabla 13 si utilizamos redes Bayesianas y mezclas de Gaussianas en el reconocedor obtenemos la misma tasa de error que nuestro sistema base, y en los otros dos casos conseguimos un 8.33%. Obviamente nuestro objetivo de mejorar el 8.28% aún no se ha conseguido pero no se está lejos de hacerlo. Para conseguirlo tenemos que encontrar qué puede estar pasando para que no se obtengan tasas de error más bajas. Lo primero que nos planteamos es dar pesos a los dos tipos de modelos, es decir, cuando reconocemos tenemos dos tipos de modelos: Gaussianos y Beta, redes Bayesianas o Bernoulli, pero no tienen por qué tener la misma importancia o el mismo peso a la hora de reconocer, por lo que vamos a darles diferentes pesos [22]. En el Anexo VI se explica la manera de aplicar estos pesos. Estos experimentos los vamos a realizar solo con las distribuciones Beta y Bernoulli porque las redes Bayesianas ya nos dan una tasa de 8.28%, además la Bernoulli la podemos ver como una red Bayesiana de orden Extracción de características GAUSS BERNOULLI HMM NNs MEZCLA 50 cero, y por último el tiempo que utilizan las redes Bayesianas para reconocer es el doble que el utilizado por los otros dos modelos. En la Tabla 14 están los resultados obtenidos. Experimentos Tasa de error (%) Baseline 8.28 Reconocedor GMM + Beta 8.33 Reconocedor GMM + Beta peso1 8.89 Reconocedor GMM + Beta peso2 8.52 Reconocedor GMM + Bernoulli 8.33 Reconocedor GMM + Bernoulli peso1 8.39 Reconocedor GMM + Bernoulli peso3 8.41 Tabla 14. Tasas de error obtenidas al aplicar distinto peso a las distribuciones. En todos los casos el peso asignado a las mezclas de Gaussianas (GMM) es de 1, y en el resto de los casos sus valores son: peso1=2, peso2=1.5 y peso3=2.5. Se han realizado más experimentos a parte de los que se han expuesto en la Tabla 14, pero solo se mencionan aquellos que nos han dado mejor resultado. Se sigue sin conseguir mejorar las tasas, por lo que se tendrá que pensar otra solución. Otra opción es fijarnos en nuestros clasificadores de rasgos fonéticos que son las entradas a los nuevos modelos, ya que pueden no estar funcionando correctamente. Por lo que se van a realizar los siguientes experimentos con la distribución Bernoulli que es el sistema que más rápido reconoce. Vamos a reconocer, pero eliminando en cada experimento la salida de un clasificador, para observar que ocurre si esa información no está. Para este experimento se han utilizado los pesos, es decir la GMM tienen peso igual a uno y la Bernoulli tiene un peso de dos, esto es así porque al realizar los experimentos de eliminar los clasificadores hemos obtenido mejores tasas cuando asignábamos estos pesos a las distribuciones. 51 Experimentos Tasa de error (%) Baseline 8.28 Reconocedor GMM + Bernoulli 8.39 Reconocedor GMM + Bernoulli Sin nasales 8.37 Reconocedor GMM + Bernoulli Sin liquidas 10.37 Reconocedor GMM + Bernoulli Sin africadas 8.85 Reconocedor GMM + Bernoulli Sin oclusivas 8.56 Reconocedor GMM + Bernoulli Sin vocales 8.26 Tabla 15. Tasas de error obtenidas eliminando en cada experimento la salida de un clasificador de rasgo fonético. En todos los casos la GMM tiene un peso=1 y la Bernoulli un peso=2. Como podemos ver en la Tabla 15 se ha conseguido mejorar la tasa de error en un 8.26% al eliminar la salida del clasificador de vocales. Se puede observar que si eliminamos los demás clasificadores la tasa aumenta, excepto en el caso de las nasales, lo que se puede deducir de aquí es que el clasificador de vocales no ayuda en el reconocimiento e incluso se puede decir que puede que introduzca ruido ya que hace que empeore considerablemente la tasa. Se va a comprobar si para la distribución Beta y las redes Bayesianas se da el mismo comportamiento con el clasificador de vocales. Experimentos Tasa de error (%) Baseline 8.28 Reconocedor GMM + Beta Sin vocales 8.26 Reconocedor GMM + BBN Sin vocales 8.20 Reconocedor GMM + Bernoulli Sin vocales 8.26 Tabla 16. Tasas de error conseguidas para los tres sistemas propuestos eliminando la salida del clasificador de vocales. Por los resultados obtenidos en los tres sistemas, el clasificador de vocales estaba empeorando la tasa, esto sucede porque el clasificador introduce falsas alarmas, es decir, clasifica vocales donde no las hay. Por lo que vamos a quitar su salida del vector de características, ahora se tendrán datos de 43 dimensiones. Además hemos conseguido mejorar la tasa, consiguiendo un 8.20% al utilizar las redes Bayesianas, por lo que nuestro objetivo ya estaría cumplido. 52 Mirando en Matlab el comportamiento de las salidas de nuestros clasificadores, observamos que la mayoría de ellas no tienen valores superiores a 0.4, y entonces nos plantemos que igual se puede utilizar este dato para mejorar aún más la tasa de error. Tanto las redes Bayesianas como la Bernoulli necesitan un umbral, ya que solo aceptan datos cuyo valor sea cero o uno. En un principio se había puesto que este umbral valiera 0.5, es decir, que los datos que estuvieran por debajo de ese valor pasaban a valer 0 y los que estaban por encima 1. Si la mayoría de nuestros datos no superaba ese umbral lo que se estaba haciendo es eliminar información que podría ser útil, por eso nos plantemos calcular la tasa de error que obtendríamos con el sistema que utiliza la distribución Bernoulli para diferentes valores de umbral. En todos los casos utilizamos el vector de características de 43 dimensiones (sin clasificador de vocales) y a la distribución Gaussiana le asignamos un peso = 1 y a la Bernoulli un peso = 2. Figura 31. Tasa de error en función del valor umbral en la distribución Bernoulli. Se consigue una tasa de error de 8.18% si el valor del umbral es 0.15, por lo que hemos conseguido mejorar la tasa de 8.20% que se obtenía con las redes Bayesianas. Como se puede ver en la Figura 31 la elección del valor del umbral sí que afecta a la tasa de error. Como últimos experimentos a llevar a cabo en el presente proyecto se van a introducir las salidas de los otros dos clasificadores. En el punto 4.2 se desarrollaron 7 clasificadores de los cuales solo se han utilizado 5 porque los otros dos, el clasificador de fricativas y el de silencio, no habían terminado de entrenarse. Por lo tanto los nuevos vectores de entrada tienen una dimensión de 45 (39 +6), seguimos sin utilizar el clasificador de vocales puesto que ya se ha visto que funciona todo mejor sin utilizarlo. En la Tabla 17 podemos ver las tasas de error obtenidas: 8,22 8,18 8,24 8,24 8,28 8,37 8,33 8,28 8,26 8,05 8,10 8,15 8,20 8,25 8,30 8,35 8,40 0,10 0,15 0,20 0,25 0,30 0,35 0,40 0,45 0,50 Tasa de error (%) th 53 Experimentos Dimensión Tasa de error (%) Baseline 39 8.28 Reconocedor GMM + Beta 45 8.84 Reconocedor GMM + BBN 45 8.07 Reconocedor GMM + Bernoulli 45 8.16 Tabla 17. Resultados obtenidos añadiendo el clasificador de fricativas y el de silencio. Al introducir estos dos nuevos clasificadores se ha conseguido una tasa del 8.07 % con las redes Bayesianas, la mejor tasa que se ha conseguido en todos los experimentos. Por lo que parece ser que las salidas de estos clasificadores si ayudan al reconocedor, aunque en el caso de la distribución Beta ocurre lo contrario, la hemos empeorado. La razón por la que las redes Bayesianas [26] obtienen una mejor tasa que la distribución de Bernoulli, que como ya hemos dicho antes se puede ver como una red Bayesiana de orden cero, es porque las redes Bayesianas capturan las dependencias que hay entre las distintas dimensiones y la Bernoulli trata cada dimensión como independiente. 54 5. Conclusiones y líneas futuras En el presente proyecto se han implementado una serie de clasificadores de rasgos fonéticos para intentar mejorar la tasa de error del reconocedor HTK para la base de datos Wall Street Journal (WSJ0). Lo que se ha hecho es añadir las salidas de estos clasificadores a los vectores de características comunes para introducir así más información al reconocedor. Se partió de una tasa de error del 8.28% que conseguía el reconocedor HTK con una configuración estándar, por lo que el objetivo era superarla. La novedad que se incluye en este proyecto es que las salidas de estos clasificadores de rasgos fonéticos van a ser las entradas de unos nuevos modelos que se implementan en el reconocedor y que no son gaussianos, ya que los modelos Gaussianos implementados en el HTK para crear los modelos de trifonemas no funcionan bien con las salidas de los clasificadores, puesto que sus valores están entre cero y uno. Los modelos que se presentan para implementar en el reconocedor son tres: distribución Beta, distribución de Bernoulli y redes Bayesianas. Con los tres modelos se ha conseguido reducir la tasa del 8.28%. Utilizando las redes Bayesianas se ha conseguido la mejor tasa, de un 8.07%, las entradas al reconocedor estaban formadas por los vectores de 39 dimensiones comúnmente utilizados, concatenados con las salidas de 6 clasificadores de rasgos fonéticos: nasales, liquidas, africadas, oclusivas, fricativas y silencio. A partir de los experimentos realizados con esta nueva manera de reconocer los datos de voz, se abre la puerta a numerosos experimentos que podrían reducir aún más la tasa de error del reconocedor, como por ejemplo: - En el presente proyecto sólo se han realizado seis clasificadores de rasgos fonéticos y un clasificador de silencio, una línea de investigación sería clasificar más rasgos fonéticos, e incluso llegar a hacer clasificadores para un solo fonema específico. En este último caso, se tendría que mirar que fonemas se confunden más en el reconocimiento, y esos fonemas serían los que tendrían su propio clasificador. - Utilizar como clasificadores de rasgos fonéticos las máquinas de soporte vectorial (SVM), en este proyecto se ha observado que la tasa de acierto de clasificación es mejor que la obtenida por las redes neuronales, pero para llevarlo a cabo se tendría que investigar la manera de extraer de toda la base de datos aquellos que sean los más representativos, ya que los SVM no pueden trabajar con gran cantidad de datos. - Una línea de investigación que ya se está llevando a cabo es la de utilizar las características bottle-neck, consiste básicamente en utilizar redes neuronales como 55 clasificadores de rasgos fonéticos pero en lugar de coger sus salidas como entradas al reconocedor coger las salidas de la capa intermedia. - Debido al tiempo que lleva entrenar a los clasificadores, tuvimos que elegir el tipo de parametrización a usar, sin poder probar con más de un tipo. Por ello otra línea de investigación sería la de utilizar otro tipo de parametrizaciones para realizar los clasificadores, como por ejemplo los coeficientes PLP o los coeficientes RASTA, que fueron nombrados en el Capítulo 2. Se podrían obtener buenos resultados visto los experimentos realizados en el Capítulo 3, donde los coeficientes PLP conseguían mejor tasa de acierto en algunos clasificadores. 62 donde N es la longitud de la ventana. La duración de la ventana suele ser de unos 20ms. Aplicamos la DFT (Transformada Discreta de Fourier) al segmento enventanado de la señal para pasarlo al dominio frecuencial. Para realizarlo se suele utilizar la FFT (Fast Fourier Transform). Después la parte real e imaginaria del espectro localizado de la señal se elevan al cuadrado y se suman para calcular el espectro localizado de potencia de la señal: ( ) , ( )- , ( )- ( ) El espectro P(w) se desplaza de su eje frecuencial w a la frecuencia Bark Ω *5+: ( ) { ,( ) - } ( ) Donde w es la frecuencia angular en rad/s. El resultado de desplazar el espectro de potencia se convoluciona con el espectro de potencia de la curva de enmascaramiento de la banda crítica Ψ(Ω). Este paso es similar al procesado espectral en el análisis mel-cepstrum, excepto por la particular forma de la curva de la banda crítica. En la técnica PLP la forma de la curva de la banda crítica es [5]: ( ) { ( ) ( ) ( ) Por lo tanto nos queda: ( ) ∑ ( ) ( ) ( ) Con esta convolución conseguimos reducir la resolución espectral de Ѳ(Ω) con respecto al espectro original P(w). Ѳ(Ω) esta muestreada en intervalos de 1 Bark. El valor exacto del intervalo de muestreo se elige para que un número entero de muestras espectrales cubran toda la banda. Típicamente 18 muestras espectrales de Ѳ(Ω(w)) son usadas para cubrir el análisis de un ancho de banda de 0-16.9 Barks ( 0-5 KHz) en intervalos de 0.994 Barks. Ahora a nuestra señal muestreada Ѳ(Ω(w)) le aplicamos la curva de igual-sonoridad: , ( )- ( ) , ( )- ( ) El comportamiento de E(w) se aproxima a la sensibilidad del oído humano a diferentes frecuencias. Según el rango de frecuencias el filtro E(w) tiene una función de transferencia u otra. La última operación antes de obtener el modelo de todo polos, consiste en una compresión de la amplitud del espectro: 63 ( ) ( ) ( ) Esta operación es una aproximación de la ley de potencia del oído, que simula la relación no lineal entre la intensidad del oído y su percepción sonora. Esta paso como el anterior los realizamos para poder obtener un modelo de todo polos de orden reducido. El último paso es aproximar ф(Ω) al espectro de un modelo de todo polos usando el método de autocorrelación [1]. Los coeficientes que obtenemos del método de autocorrelación pueden ser transformados para convertirse en lo coeficientes cepstrum de un modelo de todo polos, es decir, en los coeficientes PLP. El orden del modelo todo polos variará según el grado de detalle que queramos que tenga la aproximación del espectro auditivo de la voz. Relative Spectral Transform (RASTA) El análisis RASTA consiste en reemplazar el espectro localizado por un espectro estimado en el que cada canal frecuencial es filtrado paso banda con un filtro que vale cero en la frecuencia cero, este cero sirve para eliminar las variaciones lentas o los valores constantes de cada canal frecuencial y también vale cero en frecuencias superiores a las utilizadas por la dinámica de la voz, de unas decenas de Hz, para así eliminar variaciones demasiado rápidas. El nuevo espectro será menos sensible a variaciones lentas en el espectro localizado. Los pasos a seguir en el cálculo de coeficientes RASTA-PLP son los que se muestran en la siguiente figura: Figura I.4. Diagrama de bloques para calcular coeficientes RASTA-PLP El análisis llevado a cabo en cada segmento de voz es: 1- Calculamos el espectro de la banda crítica (como en PLP) y calculamos su logaritmo. 2- Calculamos la derivada temporal de la señal obtenida en 1. Para calcular la derivada utilizamos una técnica de regresión lineal. 64 3- Realizamos un procesado no lineal, aunque este paso puede ser ignorado. 4- Pasamos la señal por un sistema IIR de primer orden. 5- Como en el sistema PLP, le aplicamos la curva de igual-sonoridad y la compresión en amplitud de 0.33 para simular la ley de potencia del oído. 6- Calculamos el logaritmo inverso de este log espectro y obtenemos así un espectro auditivo. 7- Por último, calculamos el modelo todo polos como en PLP. 65 Anexo II. OpenSmile OpenSmile es un software libre que permite calcular distintos tipos de parametrizaciones para señales de voz, entre ellas, los coeficientes MFCC y PLP, los dos tipos que vamos a utilizar en nuestros experimentos. Permite distintos tipos de datos de entrada como: .wav o .raw. Con el programa vienen unos ficheros de configuración que te permiten calcular los siguientes tipos de parametrizaciones: - MFCC12_0_D_A_Z - MFCC12_0_D_A - MFCC12_E_D_A_Z - MFCC12_E_D_A - PLP_0_D_A_Z - PLP_0_D_A - PLP_E_D_A_Z - PLP_E_D_A La nomenclatura que utilizan es la siguiente, en primer lugar se pone el nombre de los coeficientes que se van a calcular, MFCC12 o PLP; las demás letras que se añaden se pueden poner en el orden que se quiera. Su significado es: - 0, el coeficiente cero está incluido en los 13 coeficientes estáticos. - E, la energía está incluida como uno de los 13 coeficientes estáticos. - Z, los coeficientes estáticos tienen media cero. - D, se añaden los 13 coeficientes delta - A, se añaden los 13 coeficientes de aceleración. Con estos ficheros de configuración se obtienen las salidas en formato htk, es decir, en un formato que lee el reconocedor HTK, por lo que nos van a ser útiles para nuestros experimentos con el reconocedor. Pero también permite obtener las salidas en otros tipos de formato, como es el caso del tipo Arff, tipo de datos que utiliza WEKA, por lo que también nos interesa por esto. A continuación se muestra la parte del código de un fichero de configuración donde se calcula los 13 coeficientes MFCC estáticos, incluidos el coeficiente cero (0), los coeficientes delta (D) y los de aceleración (A): 66 “MFCC12_0_D_A.conf” [melspec:cMelspec] reader.dmLevel=fftmag writer.dmLevel=melspec copyInputName = 1 processArrayFields = 1 ; htk compatible sample value scaling htkcompatible = 1 nBands = 26 ; use power spectrum instead of magnitude spectrum usePower = 1 lofreq = 0 hifreq = 8000 specScale = mel inverse = 0 [mfcc:cMfcc] reader.dmLevel=melspec writer.dmLevel=ft0 copyInputName = 1 processArrayFields = 1 firstMfcc = 0 lastMfcc = 12 cepLifter = 22.0 htkcompatible = 1 [delta:cDeltaRegression] reader.dmLevel=ft0 writer.dmLevel=ft0de nameAppend = de copyInputName = 1 noPostEOIprocessing = 0 deltawin=2 blocksize=1 [accel:cDeltaRegression] reader.dmLevel=ft0de writer.dmLevel=ft0dede nameAppend = de copyInputName = 1 noPostEOIprocessing = 0 deltawin=2 blocksize=1 ////////////////////////////////////////////////////////////////////// /////////////////// data output configuration ////////////////////// ////////////////////////////////////////////////////////////////////// ; the HTK sink writes data in HTK parameter format [htkout:cHtkSink] ; data from the following dataMemory levels in concattenated reader.dmLevel=ft0;ft0de;ft0dede ; this again defines a commandline option for the output file (see waveIn) filename=\cm[output(O){mfcc.htk}:name of MFCC output filename (HTK format)] append = 0 ; MFCC_0_D_A 6+256+512+8192 = 8966 parmKind = 8966 //////---------------------- END -------------------------/////// Si se lee este fragmento del fichero de configuración, se puede ver que es una programación por bloques, que se alimentan unos a otros, por ejemplo, el bloque cMelspec escribe su salida 67 en el nivel llamado melspec, y el bloque cMfcc coge como entrada el nivel melspec y escribe en otro nivel llamado ft0. Como se ha comentado antes también se puede obtener la salida en formato Arff, para ello lo que se tiene que hacer es, en lugar de tener el bloque cHtkSink poner el siguiente bloque: [arffSink:cArffSink] reader.dmLevel = ft0;ft0de;ft0dede filename = /home/gtc/cvillalta/opensmile/data_out/mfCc_0sa1.arff append = 0 relation = mfcc number = 0 timestamp = 0 frameIndex = 0 frameTime = 0 class[0].name = class class[0].type = {trama} target[0].all = \cm[label1{trama}:instance nominal class label] A todas las variables que están declaradas en este fichero de configuración se les puede dar otro valor diferente que se prefiera para calcular las parametrizaciones. Para encontrar una información más detallada de cada uno de los bloques que se pueden implementar así como de sus variables mirar en [19]. 68 Anexo III. Uso de redes neuronales en MATLAB Matlab posee una toolbox para trabajar con redes neuronales artificiales. Para saber cuáles son y cómo trabajan las funciones que crean, entrenan y testean las redes neuronales vamos a mostrar ejemplos de cómo utilizarlas. 1. Para crear una red neuronal backpropagation con alimentación hacia delante utilizamos la función newff(). Le introducimos como parámetros de entrada el número de capas y el número de neuronas en cada capa; las funciones de activación de cada capa; la función de entrenamiento; y por último le introducimos los valores máximo y mínimo de nuestros datos: net=newff(minmax(datos),layers,functions,funtrain); donde layers=[2 2 2]; functions = {'tansig' 'tansig' 'logsig'}; %elegimos 'logsig' como función de salida porque queremos que los valores estén entre 0 y 1. funtrain='trainlm'; 2. El segundo paso es entrenar la red neuronal con la función train(), pero para este paso solo utilizamos una pequeña parte de los datos, porque este paso se puede ver como una inicialización de la red. [net tr]=train(net,[datos_0t;datos_1t]',clasest'); como se puede observar introducimos los datos y sus etiquetas (clasest). 3. El siguiente paso es entrenar la red con todos los demás datos, para ello utilizamos adapt(), vamos a introducirle los datos en bloques de 20 en 20. INC = 20; for i=1:INC:length(datos) iend = min(length(datos),i+INC-1); 69 [net,out_i,error_i,pf_i]=adapt(net,datos(:,i:iend),clase(:, i:iend)); end 4. Por último, para testear la red, utilizamos la función sim(), se ejecuta tantas veces como clases tengamos que clasificar. Y después con los resultados que nos devuelve se calcula la tasa de acierto para los datos de test. results_0 = sim(net,datatest_0'); 70 Anexo IV.PCA El PCA (Principal Component Analysis) o el análisis de componentes principales construye una transformación lineal que escoge un nuevo sistema de coordenadas para el conjunto original de datos. En el cual la varianza de mayor tamaño del conjunto de datos es capturada en el primer eje (llamado la Primera Componente Principal), la segunda varianza más grande es el segundo eje, y así sucesivamente. Para construir esta transformación lineal debe construirse primero la matriz de covarianza o matriz de coeficientes de correlación. Debido a la simetría de esta matriz existe una base completa de vectores propios de la misma. La transformación que lleva de las antiguas coordenadas a las coordenadas de la nueva base es precisamente la transformación lineal necesaria para reducir la dimensionalidad de los datos. Una de las ventajas de PCA para reducir la dimensionalidad de un grupo de datos, es que retiene aquellas características del conjunto de datos que contribuyen más a su varianza, manteniendo un orden de bajo nivel de las componentes principales e ignorando las de alto nivel. El objetivo es que esas componentes de bajo orden a veces contienen el "más importante" aspecto de esa información. Método basado en las covarianzas Este método tiene como objetivo transformar un conjunto dado de datos X de dimensión n x m a otro conjunto de datos Y de menor dimensión n x l con la menor pérdida de información útil posible utilizando para ello la matriz de covarianza. Se parte de un conjunto n de muestras cada una de las cuales tiene m variables que las describen y el objetivo es que, cada una de esas muestras, se describa con solo I variables, donde l < m. Además, el número de componentes principales l tiene que ser inferior a la menor de las dimensiones de X, * + ( ) Los datos para el análisis tienen que estar centrados a media 0 (restándoles la media de cada columna) y/o autoescalados (centrados a media 0 y dividiendo cada columna por su desviación estándar). ∑ ( ) Los vectores son conocidos como scores y contienen la información de cómo las muestras están relacionadas unas con otras, además tienen la propiedad de ser ortogonales. Los vectores se llaman loadings e informan de la relación existente entre las variables y tienen la cualidad de ser ortonormales. Al coger menos componentes principales que variables y debido al error de ajuste del modelo con los datos, se produce un error que se acumula en la 71 matriz .El PCA se basa en la descomposición en vectores propios de la matriz de covarianza. Se calcula de la siguiente manera: ( ) ( ) ( ) ( ) ∑ ( ) donde es el valor propio asociado al vector propio . Por último, ( ) Esta ecuación la podemos entender como que son las proyecciones de X en , donde los valores propios miden la cantidad de varianza capturada, es decir, la información que representan cada una de las componentes principales. La cantidad de información que captura cada componente principal va disminuyendo según su número, es decir, la componente principal número uno representa más información que la dos y así sucesivamente. 78 Líquidas /l/ TELECARD t eh l ah k aa r d /el/ /r/ ELABORATE ih l ae b r ah t /ua/ /ia/ /w/ IMPETUOUS ih m p eh ch w ah s /y/ IMPUGNED ih m p y uw n d /hh/ INCOHERENCE ih n k ow hh ih r ah n s Tabla VII.5. Líquidas Oclusivas /p/ INDEPENDENCE ih n d ih p eh n d ah n s /b/ INDIVISIBLE ih n d ih v ih s ih b ah l /t/ INDOLENT ih n d ah l ah n t /d/ INDOOR ih n d ao r /k/ INDUCTANCE ih n d ah k t ah n s /g/ INGREDIENT ih n g r iy d iy ah n t Tabla VII.6. Oclusivas Nota: en los fonemas que no hay un ejemplo, esto es debido a que no hay palabras en el diccionario que se utiliza para reconoce , que tengan estos fonemas.