63
Análisis de Estrés en la Voz Utilizando Coeficientes Cepstrales de Mel y Máquina de Vectores de Soporte Luis Gabriel Toro Cerón, [email protected] Trabajo de Grado presentado para optar al título de Ingeniero de Sonido Asesor: Santiago Ruiz Sánchez, Ingeniero de Sonido. Universidad de San Buenaventura Colombia Facultad de Ingenierías Ingeniería de Sonido Medellín, Colombia 2018

Análisis de Estrés en la Voz Utilizando Coeficientes

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Análisis de Estrés en la Voz Utilizando Coeficientes

Análisis de Estrés en la Voz Utilizando Coeficientes Cepstrales de Mel y Máquina de Vectores de

Soporte

Luis Gabriel Toro Cerón, [email protected]

Trabajo de Grado presentado para optar al título de Ingeniero de Sonido

Asesor: Santiago Ruiz Sánchez, Ingeniero de Sonido.

Universidad de San Buenaventura Colombia

Facultad de Ingenierías

Ingeniería de Sonido

Medellín, Colombia

2018

Page 2: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 2

Citar/How to cite [1]

Referencia/Reference

Estilo/Style:

IEEE (2014)

[1] G. Toro Cerón, “Análisis de estrés en la voz utilizando coeficientes cepstrales de

Mel y máquina de soporte de vectores”, Trabajo de grado, Ingeniería de Sonido,

Universidad de San Buenaventura Medellín, Facultad de Ingenierías, 2018.

Bibliotecas Universidad de San Buenaventura

Biblioteca Fray Alberto Montealegre OFM - Bogotá.

Biblioteca Fray Arturo Calle Restrepo OFM - Medellín, Bello, Armenia, Ibagué.

Departamento de Biblioteca - Cali.

Biblioteca Central Fray Antonio de Marchena – Cartagena.

Universidad de San Buenaventura Colombia

Universidad de San Buenaventura Colombia - http://www.usb.edu.co/

Bogotá - http://www.usbbog.edu.co

Medellín - http://www.usbmed.edu.co

Cali - http://www.usbcali.edu.co

Cartagena - http://www.usbctg.edu.co

Editorial Bonaventuriana - http://www.editorialbonaventuriana.usb.edu.co/

Revistas - http://revistas.usb.edu.co/

Biblioteca Digital (Repositorio)

http://bibliotecadigital.usb.edu.co

Page 3: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 3

TABLA DE CONTENIDO

RESUMEN ....................................................................................................................................... 8

ABSTRACT ..................................................................................................................................... 8

INTRODUCCIÓN ........................................................................................................................... 9

I. PLANTEAMIENTO DEL PROBLEMA ................................................................................... 10

A. Viabilidad .............................................................................................................................. 10

II. OBJETIVOS .............................................................................................................................. 11

A. Objetivo general .................................................................................................................... 11

B. Objetivos específicos ............................................................................................................. 11

III. MARCO REFERENCIAL ....................................................................................................... 12

A. Estado del Arte ...................................................................................................................... 12

IV. MARCO TEÓRICO ................................................................................................................. 14

A. Extracción de Características de la Voz ................................................................................ 14

1) Base de Datos para Análisis de Voz: Corpus Timit ........................................................... 14

B. Escala de Mel ......................................................................................................................... 15

C. Coeficientes Cepstrales en Frencuencias de Mel (MFCC) .................................................... 16

1) Filtro Preénfasis (PE) ......................................................................................................... 17

2) Enventanado (W) ............................................................................................................... 18

3) Transformada Rápida de Fourier (FFT) ............................................................................. 19

4) Transformada Discreta del Coseno (DCT) ........................................................................ 19

D. Máquina de Vectores de Soporte (SVM) .............................................................................. 20

1) Maquina de Vectores de Soporte en Reconocimiento Automático de la Voz (ASR) ....... 21

2) Definición Matemática de la SVM .................................................................................... 21

3) Parámetro de Compensación “C” ...................................................................................... 23

4) Clasificación no Lineal y Kernel ....................................................................................... 24

5) Problemas de Dimensionalidad .......................................................................................... 25

6) Métodos de Evaluación de la SVM ................................................................................... 25

V. METODOLOGÍA ..................................................................................................................... 28

Page 4: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 4

A. Obtención de las Muestras de Voz ........................................................................................ 29

1) Surrey Audio-Visual Expressed Emotion (Savee) Database ............................................. 29

2) Berlin Database of Emotional Speech (Emo-Db) .............................................................. 29

B. Organización de Dataset ........................................................................................................ 30

1) Distribución entre las Bases de Datos de Entrenamiento y Prueba ................................... 30

2) Organización de Archivos en Matlab ................................................................................ 31

C. Desarrollo de Algoritmo para la Obtención de Vectores MFCC .......................................... 32

1) Filtrado Preénfasis ............................................................................................................. 33

2) División de Cuadros ........................................................................................................... 33

3) Zero Padding ...................................................................................................................... 34

4) Enventanado y Aplicación de FFT .................................................................................... 34

5) Creación y Aplicación del Banco de Filtros de Mel .......................................................... 35

6) Obtención de Coeficientes Cepstrales en Frecuencias de Mel (MFCC) ............................ 36

7) Organización de Vectores MFCC para Trabajo con SVM ................................................ 37

D. Uso de Máquina de Vectores de Soporte (SVM) .................................................................. 38

1) Implementación LIBSVM ................................................................................................. 38

2) Parámetro de Compensación “C” y Uso de Kernels En LIBSVM .................................... 38

3) Obtención de Matriz de Entrenamiento ............................................................................. 39

4) Obtención de Matriz de Prueba .......................................................................................... 40

5) Preparación de los Datos .................................................................................................... 41

VI. RESULTADOS ........................................................................................................................ 42

A. Entrenamiento del Modelo y Pruebas de Optimización ........................................................ 42

1) Buscando la Mejor Distribución de Datos ......................................................................... 42

2) Distribución 50 – 50 ........................................................................................................... 42

3) Distribución 70 – 30 ........................................................................................................... 43

4) Pruebas con Diferentes Kernels y Variación del Parámetro “C” ....................................... 44

5) Variación de Kernels y “C” para Distribución 50 -50 ....................................................... 44

6) Variación de Kernels y “C” para Distribución 70 -30 ....................................................... 44

7) Determinación de Kernel, Parámetro “C” y Distribución ................................................. 45

8) Inclusión de Desviación Estándar ...................................................................................... 45

B. Distribución de Promedios entre Vectores MFCC ................................................................ 46

Page 5: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 5

VIII. ANÁLISIS DE RESULTADOS ........................................................................................... 49

IX. CONCLUSIONES ................................................................................................................... 52

REFERENCIAS ............................................................................................................................. 53

ANEXOS ........................................................................................................................................ 56

Page 6: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 6

LISTA DE TABLAS

Tabla I. Matriz de confusión. ......................................................................................................... 27

Tabla II. Organización de grabaciones dentro del conjunto de datos para la relación 50-50. ....... 31

Tabla III. Organización de grabaciones dentro del conjunto de datos para la relación 70-30. ...... 31

Tabla IV. Descripción del tamaño del vector MFCC que ingresará a la SVM. ............................. 38

Tabla V. Organización de matrices ................................................................................................ 41

Tabla VI. Resultados obtenidos para la distribución 50-50. .......................................................... 43

Tabla VII. Resultados obtenidos para la distribución 70-30. ......................................................... 43

Tabla VIII. Resultados obtenidos en variación de Kernels y C para distribución 50–50. ............. 44

Tabla IX. Resultados obtenidos en variación de Kernels y C para distribución 70–30. ................ 45

Tabla X. Resultados Obtenidos con y sin la incorporación de la desviación estándar al vector

MFCC. ............................................................................................................................................ 46

Tabla XI. Comparación entre distribuciones .................................................................................. 49

Tabla XII. Resultados para kernel radial, c = 1 y distribución 70-30. ........................................... 50

Page 7: Análisis de Estrés en la Voz Utilizando Coeficientes

LISTA DE FIGURAS

Fig. 1. Relación entre frecuencias en Hertz y frecuencias en escala de Mel. ................................ 15

Fig. 2. Representación de banco de filtros de Mel, con 20 filtros entre 0Hz y 8kHz. ................... 17

Fig. 3. Diagramas de magnitud y fase del Filtro PE. ..................................................................... 18

Fig. 4. Aplicación de la Ventana de Hamming. ............................................................................. 19

Fig. 5. Vectores de Soporte y Margen Máximo. ............................................................................ 21

Fig. 6. Escogencia del hiperplano que maximiza el margen. ......................................................... 23

Fig. 7. Utilización del parámetro C para discriminar datos. .......................................................... 24

Fig. 8. Separación de datos utilizando un nuevo espacio característico o Kernel. ......................... 25

Fig. 9. Metodología. ....................................................................................................................... 28

Fig. 10. Esquema para la obtención de los MFCC. ........................................................................ 32

Fig. 11. Audio “DCa02.wav” normalizado y filtrado a través de un filtro preénfasis. .................. 33

Fig. 12. Graficación de banco de filtros de Mel creados en Matlab. ............................................. 36

Fig. 13. Representación de vectores MFCC obtenidos para la muestra “DCa02.wav”. ................ 37

Fig. 14. Distribución de promedios del vector MFCC en los verdaderos ansiosos. ...................... 47

Fig. 15. Distribución de promedios del vector MFCC en los falsos ansiosos................................ 47

Fig. 16. Distribución de promedios del vector MFCC en los verdaderos tranquilos. .................... 48

Fig. 17. Distribución de promedios del vector MFCC en los falsos tranquilos. ............................ 48

Page 8: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 8

RESUMEN

El análisis de la voz se puede realizar de múltiples maneras y procesos, dichos procesos han

evolucionado a través del tiempo llegando a ser más complejos y diversificando su utilidad.

Actualmente procesos como la detección, el reconocimiento o la clasificación se fundamentan en

análisis sobre la señal sonora. Este trabajo responde a la necesidad actual de automatizar procesos

que anteriormente se consideraban subjetivos, teniendo en cuenta los diversos factores que pueden

incidir sobre éstos y con miras a mejorar y aportar a los procesos actuales existentes, la importancia

del mismo radica en la versatilidad de estos algoritmos que pueden ser empleados en diferentes

áreas y para diversos fines, como por ejemplo en la medicina, las humanidades, ciencias sociales y

tecnología.

Palabras clave: Análisis de estrés en la voz, Coeficientes Cepstrales en las Frecuencias de Mel,

Máquina de Vectores de Soporte, Aprendizaje Automático.

ABSTRACT

Voice analysis can be done in multiple ways, this processes have evolved through ages, becoming

more complex and diversifying the utility of them, Nowadays procedures like detection,

recognisement or clasification are based on analyses of the sound signal. This project addresses the

recent need of making processes that were initially considered subjectives, automatically, taking

into a count of the different factors that might influence them, and always being forward to improve

and contribute to the existing processes. The importance of it lies on the versatility of the

algorythms, that can be used as well in different areas and for different purposes such as the field

of medicine, humanities, social sciences and technology.

Keywords: Voice stress analysis, Mel Frecuency Cepstral Coefficients, Support Vector Machine,

Machine Learning.

Page 9: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 9

INTRODUCCIÓN

Para el análisis de la voz en el campo de la acústica es indispensable diferenciar las etapas de

identificación y clasificación, la etapa de identificación consiste en presentar al sistema una nueva

señal que puede ser asociada a alguna muestra presentada al mismo anteriormente, la parte

correspondiente a la clasificación comprende el análisis de las características de la señal, por medio

de este análisis se obtendrá una ubicación de la misma dentro de un grupo clasificatorio, donde

comparta ciertos parámetros con otras señales [2].

El análisis de estrés de la voz puede hacerse por diferentes métodos, entre ellos está el método por

análisis con bancos de filtros, análisis LPC (Linear Predictive Coding) y por coeficientes cepstrales

(MFCC) [3]. Para los algoritmos clasificadores se pueden utilizar tanto máquinas funcionales por

redes neuronales como máquinas de vectores de soporte (SVM) e híbridos de ambos. El objetivo

de la creación de todos estos métodos es obtener una mejor fiabilidad del sistema de

reconocimiento de voz, es difícil definir qué sistema o combinación de sistemas es mejor, pero con

éstos se pueden realizar algoritmos que tomen características relevantes de la voz y dependiendo

de la complejidad de los mismos, pueden ser en mayor o menor grado más precisos. Habitualmente

es común efectuar dicho análisis mediante transformada discreta de Fourier en el dominio en

frecuencia de la señal, la utilización de diferentes filtros permite suavizar la señal, y así, como en

el campo de la acústica, es común utilizar los filtros por banda o por tercios de octava, en el campo

del procesamiento de señal (en especial en el habla) es común utilizar los filtros perceptuales de

Mel.

A partir de los filtros perceptuales de Mel se pueden obtener niveles de energía para cada banda de

estas frecuencias, el cálculo del logaritmo de esta energía, junto con el cálculo de la transformada

directa del coseno darán como resultado los Coeficientes Cepstrales en Frecuencias de Mel, estos

MFCC, dada su simplicidad y eficacia, se han convertido en un estándar en el reconocimiento de

características de la voz [4].

Page 10: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 10

I. PLANTEAMIENTO DEL PROBLEMA

El proyecto se realiza con base a resolver los siguientes interrogantes:

¿Cómo se podrían integrar los Coeficientes Cepstrales en Frecuencias de Mel (MFCC) en un

algoritmo de análisis de estrés en la voz mediante una Máquina de Vectores de Soporte (SVM)?

¿Qué variables obtenidas a través de los vectores MFCC influyen en el proceso de clasificación de

muestras que entrenan a la Maquina de Vectores de Soporte?

A. Viabilidad

El proyecto consignado en este trabajo puede realizarse por medio de programación en Matlab,

software para el cual la Universidad de San Buenaventura Medellín posee varias licencias, también

un acceso a bases de datos como la AES (Audio Engineering Society) será útil para consultar los

últimos avances en cuanto a MFCCs y SVMs. Debido a que se trabajará con muestras de audio, es

necesario contar con un equipo de cómputo que posea un editor de audio, una interfaz de audio y

acceso a estudios de grabación o lugares apropiados para la reproducción de las muestras. Como

también se necesitará ayuda del personal de laboratorio y docentes en temas de programación,

quienes están en capacidad de brindar asesoramiento sobre el proyecto desde un enfoque distinto

al netamente acústico. Debido a que la universidad cuenta con trabajos realizados sobre análisis de

la voz por otros métodos como lo es la Transformada de Wavelets (Gomez, 2016) y análisis de

eventos sonoros utilizando Maquinas de Vectores de Soporte (Giraldo, 2016), se utilizarán como

una referencia cercana para el desarrollo del proyecto.

Page 11: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 11

II. OBJETIVOS

A. Objetivo general

Diseñar un algoritmo que utilice los Coeficientes Cepstrales en Frecuencias de Mel (MFCC) y una

Máquina de Vectores de Soporte (SVM) con el fin de clasificar muestras de voz entre los estados

de ansioso y tranquilo.

B. Objetivos específicos

- Desarrollar un algoritmo en MATLAB para extraer los vectores MFCC de diferentes muestras

de voz.

- Implementar y entrenar una Maquina de Vectores de Soporte (SVM) con los vectores obtenidos

previamente para etiquetar las muestras de entrenamiento entre los estados ansioso y tranquilo.

- Clasificar las muestras de audio entre los estados ansioso y tranquilo usando los vectores MFCC

en la Maquina de Vectores de Soporte ya entrenada.

Page 12: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 12

III. MARCO REFERENCIAL

A. Estado del Arte

El análisis de reconocimiento de voz lleva más de 50 años de investigación y durante todos estos

años han surgido diferentes técnicas para la realización del mismo, de las cuales algunas son más

acertadas que otras. La investigación inició en los laboratorios Bell en 1952, con el reconocimiento

de dígitos aislados para un locutor único, mientras que los laboratorios RCA desarrollaban un

sistema para reconocer diez sílabas distintas para un solo locutor en el año de 1956. En 1959, el

University College en Inglaterra desarrolló un sistema para reconocer fonéticamente frases

continuas y a finales de la década, el MIT Lincoln Lab. Desarrolló un sistema capaz de reconocer

10 vocales intrínsecas e independientemente del hablante. A partir de la década de los 60, con el

aumento cada vez mayor del procesamiento de las computadoras, se hicieron avances efectivos en

esta área de investigación [6].

Durante la década entre 1960 y 1970 se produjo una época donde se dieron los fundamentos para

el análisis de la voz, RCA Laboratories realizó métodos elementales de normalización en el tiempo,

a la vez que durante esta época fue fundada la primera compañía de reconocimiento en la voz

conocida como Threshhold Technology. Mientras que, en la Unión Soviética, Taras Vintsiuk,

pionero en la teoría de reconocimiento de patrones y autor de trabajos en el campo de

reconocimiento de voz, propuso un método conocido como alineación dinámica en el tiempo

(DTW). La Carnegie Mellon University propuso un método de reconocimiento del habla continua.

La década entre 1970 y 1980 se conoce como la etapa probabilística, hubo avances en el

reconocimiento de palabras aisladas, una de las grandes empresas computacionales de la época

conocida como IBM inició el desarrollo de sistemas para vocabularios grandes, También esta época

vio el nacimiento del proyecto DARPA: Proyecto del departamento de defensa estadounidense al

que se le deben grandes avances en reconocimiento de voz. La Carnegie Mellon University

desarrolló el Sistema Harpy, el primer sistema de reconocimiento de voz con alto grado de éxito.

A su vez, Vladimir Vapnik propuso las máquinas de vectores de soporte (SVM) como método

estadístico de aprendizaje [6].

Page 13: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 13

Durante la década entre 1980 y 1990 hubo una etapa de reconocimiento continuo. Se dio una

expansión de los sistemas estadísticos, los cuales aún son la base del análisis en la voz hoy en día.

También se desarrolló el Hidden Markov Model (HMM): Proceso estocástico no observable. Se

inició con el análisis del Cepstrum, que fue propuesto por Furui como una combinación de los

coeficientes cepstrales instantáneos y sus coeficientes polinomiales de segundo orden, actualmente

conocidos como coeficientes cepstrales, comenzaron a utilizarse las redes neuronales como método

de clasificación y se dio la implementación de máquinas de vectores de soporte propuestas (SVM)

por Vladimir Vapnik [23].

Durante las dos décadas posteriores, las tecnologías desarrolladas mayormente durante los años 80

se fueron implementando de manera progresiva en los aparatos tecnológicos de uso diario, tales

como computadoras y celulares, actualmente estas tecnologías se utilizan para la integración con

sistemas operativos, búsqueda por voz, y se desarrolló un estándar conocido como Voice XML [2].

Page 14: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 14

IV. MARCO TEÓRICO

A. Extracción de Características de la Voz

Es el proceso por el cual se computa una representación espectral de las

características inestacionarias de la señal de voz, estas medidas espectrales se

convertirán en un conjunto de parámetros que describen propiedades acústicas de

las unidades fonéticas. Estos parámetros pueden ser: nasalidad, fricación, ubicación

de los formantes, clasificación entre sonidos tonales y no tonales, coeficientes

cesptrales (MFCCs) y energía de la señal, entre otros. A continuación, se definen

varias de las características útiles para el análisis de voz [5, p. 17]:

Nasalidad: Presencia o ausencia de resonancia nasal.

Fricación: Presencia o ausencia de excitación aleatoria en la voz.

Formantes: Frecuencias de las tres primeras resonancias.

Pitch: Se trata de la frecuencia fundamental, es comúnmente utilizada en áreas de investigación del

habla [5].

1) Base de Datos para Análisis de Voz: Corpus Timit

El Corpus TIMIT fue desarrollado por investigadores de Texas Instruments y el Instituto

Tecnológico de Massachusetts (MIT), su desarrollo se dio porque el entendimiento automatizado

de fonemas puede verse afectado por interacciones complejas provenientes de una multitud de

factores. Dichos factores pueden ser tanto fonéticos como acústicos, en el primer caso pueden

interferir las características propias del hablante, el estado psicológico y fisiológico del mismo o el

rango y la calidad de la voz, mientras que en el segundo puede deberse a los cambios provocados

por el ambiente y los transductores usados [20]. Por último, como factor externo se encuentra el de

interacción interpersonal del hablante donde caben las diferencias de dialecto y el entorno

sociolingüístico del mismo. Estas frases buscan minimizar la influencia de estos factores a través

de una serie de palabras diseñadas específicamente para aportar información relevante

Page 15: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 15

acústicamente y fonéticamente para la posterior evaluación de sistemas de reconocimiento

automático de la voz [21].

B. Escala de Mel

El sistema auditivo humano es incapaz de interpretar la altura de un sonido o pitch de una manera

lineal, la percepción del pitch aumenta con la frecuencia, lo cual es algo indeseado en algunas

aplicaciones. La escala de Mel fue desarrollada para describir el sistema auditivo en una escala

lineal [10], una fórmula aproximada para la relación entre las frecuencias medidas en escala de Mel

y Hertz (Hz) es la planteada en la Ecuación 1, donde 𝐹𝑚𝑒𝑙 será la frecuencia en escala de Mel

obtenida a partir de la frecuencia en Hertz (𝑓𝐻𝑧) [15].

Fmel= 1127.0148*log(1+ fHz

700) (1)

La escala de Mel es una escala de tonos juzgados por escuchas que se encuentran a igual distancia

entre ellos. El punto de referencia entre esta escala y la escala en Hertz está definido en un tono de

Fig. 1. Relación entre frecuencias en Hertz y frecuencias en escala de Mel.

Tomado de: https://goo.gl/kQHnjU.

Page 16: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 16

1000Hz, 40dB sobre el umbral de escucha, comparado con un tono de 1000 mels. Por debajo de

500Hz, las escalas de Hertz y Mel coinciden [15].

C. Coeficientes Cepstrales en Frencuencias de Mel (MFCC)

Son coeficientes basados en la Escala de Mel, se conoce como cepstrum al resultado del cálculo

de la transformada de Fourier (FT) del espectro de una señal en escala logarítmica, el método para

el reconocimiento de un hablante por medio de MFCCs fue propuesto a finales de los años 70, pero

comenzó a aplicarse después de varios años, siendo ahora un método ampliamente utilizado en la

mayoría de los sistemas de reconocimiento de voz [6].

Para la obtención de los Coeficientes Cepstrales en Frecuencias de Mel se realiza el siguiente

proceso:

1. Se divide la señal de audio en cuadros que se solapan, comúnmente tomadas entre 20ms a

40ms y con un 50% de solapamiento aproximadamente, esto se realiza con el fin de

conseguir características estacionarias de la señal [15].

2. Se aplican ventanas (ver sección 6.3.2) a cada uno de los cuadros para minimizar

discontinuidades en los bordes de los mismos, como también para evadir el efecto Gibbs

[16].

3. Se aplica una Transformada Rápida de Fourier (FFT) a cada uno de los cuadros y se toma

cada uno de los valores de magnitud del espectro obtenido [15].

4. Se procesa el espectro con un banco de filtros de Mel y se suma la energía de cada uno de

los filtros, usualmente se utilizan entre 13 y 26 filtros triangulares dependiendo del tipo de

uso para los mismos:

Page 17: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 17

5. Se toma el logaritmo de las energías de cada banda, lo cual resulta en una representación

reducida del espectro.

6. Por último, para la obtención de los Coeficientes Cepstrales en Frecuencias de Mel, se

aplica una Transformada Discreta del Coseno (DCT) al logaritmo de las energías obtenidas

del espectro en cada banda.

Al final se obtendrá un vector (𝑐𝑖) con los coeficientes por cada ventana (𝑁𝑐) (Ecuación 2), donde

el primer coeficiente representa la componente en DC de la señal y, por consiguiente, no es

considerado [16].

ci= ∑ { log(Ej) cos[i(j-1

2)

π

Nf

]}

Nf

j=1

, (1≤ i ≤Nc) (2)

1) Filtro Preénfasis (PE)

Se utiliza para hacer menos sensible al sistema ante efectos de cuantización por longitud finita de

la palabra, la señal de entrada pasa por un filtro de bajo orden con el fin de aplanar su espectro. La

respuesta en frecuencia del filtro está dada por la Ecuación 3:

H(f)=a(-j2πffs

) (3)

Fig. 2. Representación de banco de filtros de Mel, con 20 filtros entre 0Hz y 8kHz.

Tomado de: N. Moureau, T. Sikora and K. Hyoung-Gook, “MPEG-7 AUDIO and Beyond: Audio Content

Indexing and Retrieval”, 2005.

Page 18: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 18

Donde fs es la frecuencia de muestreo y 𝑎 es un coeficiente entre 0.95 y 1 [18]. La magnitud del

filtro está representada por la Ecuación 4:

∥H(f)∥=1+a2-2acos(2πf

fs) (4)

En la Fig. 3 se puede observar un filtro PE usado comúnmente:

2) Enventanado (W)

Se utilizan diferentes tipos de ventanas que permiten disminuir los efectos de las discontinuidades

de una señal continua. Una ventana usualmente utilizada en sistemas de reconocimiento de voz es

la ventana de Hamming descrita por la Ecuación 5 y que se puede observar en la Fig. 4, donde n es

el número de muestras, aunque existen otros tipos como la ventana de Hanning y la ventana de

Blackman [5].

w(n)= 1

2{1- cos [ (

N(n+

1

2)) ]}, 0≤ n ≤N-1 (5)

Fig. 3. Diagramas de magnitud y fase del Filtro PE.

Tomado de: https://goo.gl/9mC5ET.

Page 19: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 19

3) Transformada Rápida de Fourier (FFT)

Es una implementación de la Transformada Discreta de Fourier (DFT), se trata de un proceso donde

la computación de la DFT es dividida en problemas más pequeños y simples, la DFT final es

reconstruida a partir de las DFTs más simples. Esto se puede comprobar en la versión más simple

de la FFT, la de Cooley y Tukey, donde la dimensión de la FFT es dividida a la mitad

sucesivamente hasta conseguir la unidad, esto requiere una dimensión inicial N para ser una

potencia de dos [8]. La transformada rápida de Fourier tiene una importancia vital en la solución

de problemas sobre procesamiento digital de señales. La FFT está definida por la Ecuación 6:

Xk= ∑ Xne-i2πk

nN

N-1

n =0

, k= 0,…, N-1 (6)

4) Transformada Discreta del Coseno (DCT)

Se conoce como transformada discreta del coseno a una serie de operaciones matemáticas, dentro

de ellas la Transformada Rápida de Fourier (FFT) entre otras. El propósito de estas operaciones es

tomar una señal y transformarla de un tipo de representación a otra [17]. La Transformada Discreta

del Coseno está dada por la Ecuación 7 [16]:

Fig. 4. Aplicación de la Ventana de Hamming.

Tomado de: https://goo.gl/9mC5ET.

Page 20: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 20

X(k)= 2

√(N)∑ x(n)cos

n=N

n =1

(π(2n-1)(k-1)

2N) , k=2,…,N (7)

D. Máquina de Vectores de Soporte (SVM)

Las máquinas de vectores de soporte son algoritmos ampliamente utilizados para la clasificación

entre dos o más valores de muestras a través de aprendizaje supervisado con muestras previamente

clasificadas. Básicamente, una SVM (Support Vector Machine) es un clasificador binario no lineal

que busca determinar si una entrada “x” cualquiera pertenece a una clase 1 (para la cual tendría

una salida y = 1) o a una clase 2 (para la cual su salida será y = -1). Dado un conjunto de datos

separable, se tiene como objetivo buscar una función de decisión óptima, ésta se puede ver

fácilmente como si hubiera un número infinito de soluciones óptimas para el problema y que todas

estas pueden ser separadas con ejercicios de entrenamiento sin errores [11]. No obstante, debido a

que se debe buscar una función capaz de generalizar nuevas muestras no reconocidas, se puede

pensar en un criterio adicional para encontrar la mejor solución entre todas, si se conociera la

densidad de probabilidad de las clases esto sería posible, pero desafortunadamente en la mayoría

de los casos prácticos esta información no está disponible, para superar esto se adopta el siguiente

criterio: entre las funciones de entrenamiento sin errores se escoge aquella que tiene el margen

máximo, siendo este margen la distancia entre la muestra de entrenamiento más cercana y el límite

de decisión definido por la función, se denomina hiperplano a aquel espacio que marcará la división

del plano en dos partes, para el caso de la Fig. 5, el hiperplano estará dado por una línea recta.

Aunque optimizar el sentido del margen máximo no necesariamente implica optimizar el sentido

de minimización de errores en pruebas, este es un criterio simple que provee soluciones que, en la

práctica, arroja los mejores resultados para muchos problemas [22].

Page 21: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 21

1) Maquina de Vectores de Soporte en Reconocimiento Automático de la Voz (ASR)

Las máquinas de vectores de soporte (SVM) son unas de las herramientas más utilizadas para

resolver problemas de clasificación desde la perspectiva del reconocimiento automático de la voz

(ASR por sus siglas en inglés), debido a que ofrecen una solución discriminativa al problema de

reconocimiento de patrones. Además, el margen máximo de las SVMs exhibe una excelente

capacidad de generalización lo cual puede mejorar notablemente la robustez de los sistemas de

ASR [22].

2) Definición Matemática de la SVM

Se tienen l muestras de entrenamiento de modo que {𝒙𝑖, 𝑦𝑖}, 𝑖 = 1 … 𝑙, donde cada muestra tiene

d entradas (𝒙𝑖 ∈ 𝑹𝑑) y una etiqueta con uno de dos valores (𝑦𝑖 ∈ {−1,1}). Ahora, todos los

hiperplanos en 𝑹𝑑 están parametrizados por un vector (𝒘) y una constante (𝑏), expresado en la

Ecuación 8, donde 𝒘 es el vector ortogonal al hiperplano [25]:

w⋅x+b=0 (8)

Fig. 5. Vectores de Soporte y Margen Máximo.

Tomado de: https://goo.gl/iozZZ3.

Page 22: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 22

Dado el hiperplano (𝒘, 𝑏) que separa los datos se obtiene la función mostrada en la Ecuación 9,

donde la función 𝑠𝑖𝑔𝑛 será -1 para un resultado negativo, 0 para un resultado cero y 1 para un

resultado positivo [25]:

f(x)= sign(w⋅x+b) (9)

La cual clasifica correctamente los datos de entrenamiento y de la que se espera que de igual manera

lo haga con datos que no se han visto aún. Sin embargo, un plano dado por (𝒘, 𝑏) puede ser

igualmente expresado por todas las variaciones de pares dadas por {𝜆𝒘, 𝜆𝑏} para 𝜆 ∈ 𝑹+. Entonces

se define un hiperplano canónico el cuál será aquel que separa los datos del hiperplano por una

distancia de al menos 1 [11]. Esto significa, que debe satisfacer las Ecuaciones 10 y 11:

xi⋅w+b ≥ +1 cuando yi=+1

xi⋅w+b ≤ -1 cuando yi=-1

(10)

(11)

Y de manera más general:

yi(xi⋅w+b)≥ 1 ∀i

(12)

Para un hiperplano dado por (𝒘, 𝑏), todos los pares {𝜆𝒘, 𝜆𝑏} definen exactamente el mismo

hiperplano, pero cada uno tiene una distancia funcional diferente a un punto dado de los datos, esto

quiere decir que cada hiperplano cumple con la característica {𝜆𝒘, 𝜆𝑏} pero el hiperplano canónico

será aquel que cumpla la condición mencionada anteriormente. Para obtener la distancia

geométrica desde el hiperplano hacia un punto de los datos, se debe normalizar la magnitud de 𝒘.

Esta distancia se da en la Ecuación 13:

Page 23: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 23

d((w,b),xi)=y

i(xi⋅w+b)

∥w∥≥

1

∥w∥ (13)

Intuitivamente se desea el hiperplano que maximice la distancia geométrica al punto más cercano

de los datos, tal como se observa en la Fig. 6:

3) Parámetro de Compensación “C”

Al minimizar el valor ∥ 𝑤 ∥ se obtiene una maximización del margen de separación, y debido a

que la minimización del vector 𝒘 es una operación no lineal, se utilizan multiplicadores de

Langrange (𝛼𝑖) para su solución, esto deriva en que el hiperplano óptimo se puede escribir con la

Ecuación 14:

w= ∑ αiyixi

l

i=1

(14)

Sujeta al cumplimiento de la Ecuación 15:

Fig. 6. Escogencia del hiperplano que maximiza el margen.

Tomado de: https://goo.gl/SQo5hX.

Page 24: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 24

∑ αiyi

l

i=1

= 0 0≤αi≤C (15)

La constante C define el valor de compensación, cuando este valor es infinito, el hiperplano optimo

será aquel que separe completamente las dos clases de datos, en cambio una constante C finita

cambia el problema de la maximización para permitir que algunos datos no sean clasificados a la

hora de determinar margen, el valor de C puede convertirse en un parámetro de la SVM donde:

valores más altos corresponderán a dar más importancia a la clasificación correcta de los valores

de entrenamiento, mientras que valores bajos de la constante C significarán un hiperplano más

flexible que intenta minimizar el margen de error para cada muestra. Valores finitos de C son útiles

en situaciones donde los datos no son fácilmente separables [11] como se puede observar en la Fig.

7, donde aquellos datos rellenos con gris serán discriminados:

4) Clasificación no Lineal y Kernel

Existen conjuntos de datos que pueden no ser separables de manera lineal, en algunos casos la

curva optima de separación puede estar determinada por curvas polinomiales o círculos. Para estos

casos se define un plano 𝑧 = 𝜙(𝒙) que transforma el vector 𝒙 de entrada, de una dimensión 𝑑 a

Fig. 7. Utilización del parámetro C para discriminar datos.

Tomado de: https://goo.gl/8Gtfeh.

Page 25: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 25

un vector 𝒛 con dimensión 𝑑′ (usualmente más alta), entonces se espera escoger un valor 𝜙() que

permita que los nuevos datos de entrenamiento {𝜙(𝒙𝒊), 𝑦𝑖} sean separables por un nuevo

hiperplano óptimo como se muestra en la Fig. 8 [11].

5) Problemas de Dimensionalidad

Debido al aumento de la dispersión entre los datos al utilizar un nuevo kernel o espacio

característico se debería encontrar un hiperplano separador de manera más sencilla, pero no

siempre esto se cumple, al incluir un espacio de representación más grande y no incluir más

muestras se puede producir un fenómeno llamado overfitting, el cual es un problema estadístico

que se da cuando el número de configuraciones posibles que resuelven un problema es mayor al

número de muestras de entrenamiento, el overfitting o sobreajuste puede resolverse utilizando más

muestras de entrenamiento o reduciendo el vector característico [32].

6) Métodos de Evaluación de la SVM

Existen diferentes métodos para evaluar la eficiencia de una máquina de vectores de soporte, la

medida más básica se conoce como exactitud o accuracy y nos indica el porcentaje de muestras

correctamente clasificadas, antes de revisar las ecuaciones que conforman esta medida se deben

tener claros los siguientes términos:

Fig. 8. Separación de datos utilizando un nuevo espacio característico o Kernel.

Tomado de: https://goo.gl/8Gtfeh.

Page 26: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 26

Verdaderos Positivos (TP): Se dan cuando la máquina de clasificación predice que una muestra

pertenece a la clase y es correcto.

Falsos Positivos (FP): Se dan cuando la máquina de clasificación predice que una muestra

pertenece a la clase y no es correcto.

Verdaderos Negativos (TN): La máquina de clasificación predice que una muestra no pertenece a

la clase y es correcto.

Falsos Negativos (FN): La máquina de clasificación predice que una muestra no pertenece a la

clase y no es correcto.

La exactitud está dada por la Ecuación 16:

Accuracy =tp+tn

tp+fp+tn+fn (16)

Otra medida comúnmente utilizada en sistemas de clasificación es la precisión, la cual está dada

por la Ecuación 17 [32]:

Precision =tp

tp+fp (17)

Aunque son muy utilizadas, estas medidas pueden presentar errores en casos muy específicos,

como cuando se tienen cantidades de muestras desbalanceadas, en estos casos se pueden obtener

porcentajes de exactitud altos y sin embargo la máquina de aprendizaje puede estar trabajando de

manera errónea, para estos casos una matriz de confusión puede ayudar a visualizar el

comportamiento de la SVM [34].

Page 27: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 27

TABLA I. MATRIZ DE CONFUSIÓN.

Clase Verdadera

Clase Predicha

Etiquetas 1 0

1 TP FP

0 FN TN

Page 28: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 28

V. METODOLOGÍA

Para el desarrollo del trabajo se tuvieron en cuenta los diferentes pasos a seguir con el fin de llevar

un orden en el que se cumplan los diferentes objetivos, el orden también estará definido por la

continuidad de cada proceso en relación al anterior, por ejemplo, en el caso de la creación de los

vectores de soporte se necesitará que anteriormente se haya caracterizado algún elemento que

pueda definirse dentro de dos o más grupos clasificatorios, en nuestro caso los grupos

clasificatorios estarán dados por los vectores obtenidos a partir del análisis por MFCC a muestras

de audio de hablantes en dos estados, los cuales son Ansioso y Tranquilo, esto de por sí conlleva a

la grabación o tenencia de muestras y la consecución de las mismas vendría a ser el primer paso

para la realización del trabajo. En la Fig. 9 se detallan el proceso metodológico:

Fig. 9. Metodología.

Page 29: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 29

A. Obtención de las Muestras de Voz

Para el desarrollo del trabajo se requirieron muestras de voz como objeto de análisis, partiendo de

la condición inicial de que las muestras debían presentar los estados de ansioso y tranquilo se

plantearon nuevas condiciones para realizar un análisis de manera más objetiva, se buscaron

librerías que tuvieran las mismas frases entre estos dos estados y que tuvieran a su vez diferentes

hablantes, de esa manera se contó con una base de datos de entrenamiento y una de prueba con

hablantes distintos entre ellas, mientras que la utilización de frases estandarizadas entre cada

hablante y cada estado permitirá realizar un análisis a profundidad sobre las características de los

vectores MFCC que puedan influenciar la buena o mala clasificación de las mismas por parte de la

SVM.

1) Surrey Audio-Visual Expressed Emotion (Savee) Database

La base de datos SAVEE fue grabada con cuatro hablantes nativos del idioma inglés, estos se

identifican como DC, JR, JK y KL, todos son estudiantes e investigadores en la universidad de

Surrey y se ubican entre los 27 y 31 años. Las emociones fueron discretizadas en varias categorías

como lo son: enfado, disgusto, miedo, felicidad, tristeza, sorpresa y neutral, se decidió usar esta

base de datos debido a que las grabaciones están soportadas por estudios sobre reconocimiento

automático de emociones y las frases utilizadas para la creación de la misma se basan en el Corpus

TIMIT, las cuales son diferentes para cada emoción y están balanceadas fonéticamente [18].

2) Berlin Database of Emotional Speech (Emo-Db)

La base de datos Berlin Database of Emotional Speech (Emo-DB) consta de 493 frases en alemán

distribuidas en 7 emociones, las cuales son: enojo, disgusto, miedo, felicidad, tristeza, sorpresa y

neutral, consta de 10 hablantes nativos, 5 hombres y 5 mujeres. El uso de esta base de datos

corresponde a que ha obtenido buenos resultados en la clasificación por medio de máquinas de

vectores de soporte y se desea realizar un análisis comparativo con el fin de verificar la eficacia del

algoritmo planteado en el trabajo [24].

Page 30: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 30

B. Organización de Dataset

La base de datos SAVEE posee grabaciones de 15 frases por emoción, de las cuales son 3 frases

comunes, 2 específicas de la emoción y 10 frases genéricas, para el caso de las frases neutrales se

tienen las tres frases comunes más las dos frases específicas de cada una de las emociones para un

total de 30 frases, de esta manera, por cada hablante se tomaron 30 grabaciones correspondientes

a 15 frases del estado de enojo y 15 correspondientes a miedo, las cuales son emociones donde se

puede percibir un nivel de estrés en la voz y este conjunto se definió como el estado ansioso,

mientras que para el estado tranquilo se tomaron las 30 frases del estado neutral, así se obtuvo un

dataset con un total de 240 grabaciones, 120 correspondientes al estado tranquilo y 120

correspondientes al estado ansioso, todas distribuidas de manera uniforme entre los cuatro

hablantes.

Para el caso de la base de datos Emo-DB se utilizaron igualmente las grabaciones correspondientes

a enojo y miedo para la base de datos del estado ansioso y las grabaciones correspondientes al

estado neutral para la base de datos del estado tranquilo, así, se obtuvo un dataset con un total de

150 grabaciones, distribuidos en 71 grabaciones correspondientes al estado ansioso y 79

grabaciones correspondientes al estado neutral, todo esto distribuido en un total de 10 hablantes.

1) Distribución entre las Bases de Datos de Entrenamiento y Prueba

Se realizaron pruebas preliminares con respecto a la proporción de muestras entre las bases de

datos de entrenamiento y prueba, y se determinó que se trabajaría con dos proporciones, la primera

es 50% para entrenamiento y 50% para prueba, y la segunda es una proporción de 70% para

entrenamiento y 30% para prueba, entre estas dos se buscaría la que funcione de una manera más

óptima con la SVM. La organización de las grabaciones para una relación 50-50 entre los datos de

entrenamiento y prueba se puede observar en la Tabla II:

Page 31: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 31

TABLA II. ORGANIZACIÓN DE GRABACIONES DENTRO DEL CONJUNTO DE DATOS PARA LA

RELACIÓN 50-50.

SAVEE EMO-DB

Entrenamiento Prueba Suma Entrenamiento Prueba Suma

Tranquilo 60 60 120 34 37 71

Ansioso 60 60 120 43 36 79

Suma 120 120 240 77 73 150

Distribución

Hablantes DC, JE JK, KL

DC, JE,

JK, KL 1,2,3,4,5 6,7,8,9,10 1 - 10

Mientras que la organización de las grabaciones para una relación 70-30 entre los datos de

entrenamiento y prueba se puede observar en la Tabla III:

TABLA III. ORGANIZACIÓN DE GRABACIONES DENTRO DEL CONJUNTO DE DATOS PARA LA

RELACIÓN 70-30.

SAVEE EMO-DB

Entrenamiento Prueba Suma Entrenamiento Prueba Suma

Tranquilo 90 30 120 56 25 81

Ansioso 90 30 120 46 23 69

Suma 180 60 240 102 48 150

Distribución

Hablantes DC, JE, JK KL

DC, JE,

JK, KL 1,2,3,4,5,6,7 8,9,10 1 - 10

2) Organización de Archivos en Matlab

Para la optimización del trabajo en Matlab se organizaron las muestras en dos carpetas, una

contiene las muestras de entrenamiento y otra contiene las muestras prueba, cada una de estas

carpetas tiene dos carpetas más, la primera contiene las muestras en estado ansioso y la segunda

contiene las muestras en estado tranquilo, posteriormente se desarrolló una función en Matlab con

el fin de cargar los audios de cada carpeta. Seguidamente, se creó una condición con el fin de poder

escoger la ruta de una de las dos bases de datos (SAVEE y EMO-DB) para posteriormente leer los

archivos de la base de datos escogida y organizarlos de acuerdo a la clase a la que pertenecen.

Page 32: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 32

C. Desarrollo de Algoritmo para la Obtención de Vectores MFCC

En este punto se buscó tomar cada una de las muestras anteriores y desarrollar un algoritmo en

MATLAB que contenga los diferentes procesos para la obtención del vector con los Coeficientes

Cepstrales de Frecuencias de Mel (MFCC) a partir del proceso presentado en la Fig. 10, para ello

cada muestra será sometida a los siguientes pasos dentro del algoritmo:

Donde:

PE: es el filtrado de preénfasis

W: es el enventanado

FFT: es la transformada rápida de Fourier

MF: es la conversión a Escala de Mel

LOG: Conversión a la escala logarítmica

DCT: Transformada Discreta Coseno

Los datos iniciales obtenidos de cada audio para su posterior proceso de obtención de vectores

MFCC fueron: Frecuencia de muestreo “fs”, un vector “x” con los datos obtenidos de la señal de

audio y “Xlen” que es la longitud del audio en muestras.

Fig. 10. Esquema para la obtención de los MFCC.

Tomado de: https://goo.gl/ca4qAa

Page 33: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 33

1) Filtrado Preénfasis

La señal pasó por un filtrado con el fin de ayudar a la inteligibilidad de la palabra, se utilizó el

coeficiente = 0.97 debido a que es un valor comúnmente usado en distintas implementaciones de

MFCC en MATLAB [19]. En la Fig. 11 se puede observar el audio “DCa02.wav” de la base de

datos SAVEE, antes y después del filtrado preénfasis:

2) División de Cuadros

Se realizó una división de la señal en segmentos de 25ms con un solapamiento de 10ms, estos

segmentos se manejaron en muestras y para la conversión se utilizó la Ecuación 18:

Nmuv=floor(0.025*fs) (18)

Donde “Nmuv” representa al número de muestras de cada segmento, “fs” la frecuencia de muestreo

y la función “floor” nativa de Matlab encargada de aproximar el valor obtenido al entero inferior

más cercano. De igual manera se realizó el proceso para el número de muestras de solapamiento

que tendrá cada segmento “Nmus”, como se muestra en la Ecuación 19:

Fig. 11. Audio “DCa02.wav” normalizado y filtrado a través de un filtro preénfasis.

Page 34: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 34

Nmus=floor(0.010*fs) (19)

3) Zero Padding

Una vez obtenida la longitud del audio, se procedió a agregar ceros al vector de la misma para

llevarla a una potencia de 2, este proceso se conoce como zero padding y tiene dos finalidades: la

primera es que la transformada rápida de Fourier (FFT) es un proceso lento para números primos,

pero mucho más veloz para potencias de dos, por lo que agregar ceros extra hasta llevar la señal a

un tamaño en muestras con una potencia de dos puede generar una mejora en el rendimiento del

procesamiento de la misma, la segunda es que al añadir ceros a la señal se mejora la resolución con

la que la FFT trabaja sobre ésta, esto puede significar una mayor precisión en la lectura de las

amplitudes al reducir el espacio entre puntos [27].

4) Enventanado y Aplicación de FFT

Se creó una ventana Hamming del tamaño de muestras de cada segmento (Nmuv) y con esto se

realizó una matriz cuyo tamaño de filas “Rown” está dado por la Ecuación 20:

Rown=ceil(1+nfft

2) (20)

Donde “nfft” es el vector obtenido a partir de la duración de la señal más la adición de ceros del

cero padding y “ceil” es una función nativa de Matlab encargada de aproximar el valor hacia el

entero más cercano. El tamaño de columnas de la matriz “Coln” está dado por la Ecuación 21:

Coln=1+fix(Xlen+Nmuv

Nmus) (21)

Donde la función “fix” es una función nativa de Matlab encargada de aproximar el valor obtenido

al entero que más se acerque al cero. Esta matriz de filas “Rown” y columnas “Coln” se denominó

“Spectrum”, en primera instancia se llenaron los espacios de la matriz con ceros, para después a

Page 35: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 35

través de ciclos llenar dichos espacios con los valores obtenidos de la aplicación de la ventana

Hamming y posteriormente de la FFT a cada una de las partes en las que se segmentó el audio. A

continuación, se procedió a obtener el espectro de potencia de la matriz “Spectrum”, esto se realizó

obteniendo el valor absoluto de cada uno de los valores que componen a la misma, este proceso se

realizó basado en la implementación de Auditory Toolbox creada por Malcolm Slaney, quien es

un pionero en la implementación de máquinas de vectores de soporte (SVMs) [19]. La nueva matriz

obtenida a partir del proceso anterior fue denominada “ySpectrum”.

5) Creación y Aplicación del Banco de Filtros de Mel

Para la creación de los bancos de filtros de Mel se definieron dos frecuencias, una mínima y una

máxima, este sería el rango de trabajo de los mismos y por ende de los MFCC, para la

determinación de dichas frecuencias se tuvo principalmente en cuenta el uso que se daría a los

MFCC, que para el caso consignado en este trabajo es análisis de la voz, por lo que se limitó el

entre un rango de 100Hz y 8kHz basándose en el rango de la voz humana adulta [28], exactamente

se escogieron las frecuencias Fmin = 133.3 Hz y Fmax = 6855.6 kHz, cuya escogencia se basó en

la implementación Auditory Toolbox de Malcolm Slaney [19].

Una vez obtenidas las frecuencias en Hz se cambiaron a la Escala de Mel utilizando la Ecuación 1,

a estos nuevos valores se los denominó “Fminmel” y “Fmaxmel” efectivamente, luego de esto, se

creó un espacio con n puntos equidistantes entre las frecuencias “Fminmel” y “Fmaxmel” (n + 2

puntos debido a que se debían tener en cuenta a estas frecuencias también), tales puntos

determinaron cada uno de los rangos donde funcionaría cada uno de los filtros perceptuales de Mel

como se muestra en la Fig. 12:

Page 36: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 36

El número de filtros se dejó abierto en el código debido a que más adelante se determinará si esto

influye o no en el funcionamiento de los MFCCs con la máquina de soporte de vectores y su

capacidad de clasificación con nuevas muestras. Los puntos equidistantes entre “Fminmel” y

“Fmaxmel”, incluidos estos también, se convirtieron de vuelta a la escala en Hertz y sus datos

fueron consignados en la matriz “H”, de esta manera se aplicaron los filtros al espectro de potencia

de cada ventana de cada uno de los archivos de audio utilizando la Ecuación 22:

Mel=(√H∙ySpectrum)2 (22)

Donde “Mel” representa la matriz obtenida a partir del producto punto de la raíz elevada al

cuadrado entre la matriz “H” y la matriz “ySpectrum”.

6) Obtención de Coeficientes Cepstrales en Frecuencias de Mel (MFCC)

Una vez obtenidos los resultados de los bancos de filtros de Mel, se consiguió el logaritmo en base

10 de la matriz “Mel” y a ésta se le aplicó la transformada discreta del coseno (Ecuación 7),

obteniendo así los vectores con los coeficientes cepstrales en frecuencias de Mel. En la Fig. 13 se

puede observar una representación de los vectores MFCC obtenidos para la muestra “DCa02.wav”:

Fig. 12. Graficación de banco de filtros de Mel creados en Matlab.

Page 37: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 37

7) Organización de Vectores MFCC para Trabajo con SVM

Utilizando las funciones de Matlab de promedio y desviación estándar, se obtuvieron los promedios

de los vectores MFCC de cada archivo de audio, como también su desviación estándar, esto con el

fin de trabajar de manera más eficiente y organizada al momento de utilizar estos coeficientes en

las pruebas realizadas con la máquina de soporte de vectores. Se descartó el primer coeficiente de

todas las muestras de audio, incluido también el primer valor de su desviación estándar, debido a

que no es relevante para el análisis automatizado de la voz (ASR) de acuerdo con E.S Gopi [16].

Al final los vectores podían usarse con o sin desviación estándar, de esta manera se obtuvieron un

total de 13 coeficientes cepstrales en frecuencias de Mel, debido a que el primer coeficiente se

descartó se abrió la posibilidad de trabajar con 12 o 23 valores (dado que para los coeficientes son

13 – 1 = 12 valores, mientras que para las desviaciones son 12 – 1 = 11 valores) que ingresarían a

la máquina de soporte de vectores, esto con el fin de probar la opción con la cual la SVM fuera

más eficiente en el proceso de clasificación de nuevas muestras, tales opciones se detallan en la

Tabla IV:

Fig. 13. Representación de vectores MFCC obtenidos para la muestra “DCa02.wav”.

Page 38: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 38

TABLA IV. DESCRIPCIÓN DEL TAMAÑO DEL VECTOR MFCC QUE INGRESARÁ A LA SVM.

Opción Tamaño del vector de ingreso a la

SVM Descripción

1 12 Promedio de coeficientes de Mel

por audio

2 23

Promedio de coeficientes de Mel

por audio + Promedio desviación

estándar

D. Uso de Máquina de Vectores de Soporte (SVM)

Los vectores MFCC son los vectores de soporte de la máquina de aprendizaje, a partir de estos se

va a generar el margen máximo teniendo en cuenta las muestras que más se aproximen a la decisión

límite entre una clase u otra, esto se realizará para los diferentes estados a analizar que son estado

de ansiedad o de tranquilidad respectivamente.

1) Implementación LIBSVM

La implementación utilizada para la realización del trabajo es conocida como LIBSVM, la cual se

encuentra en desarrollo desde el año 2000 y ha sido ampliamente utilizada en la clasificación de

muestras para estudios sobre reconocimiento de la voz [29], como también estudios sobre

reconocimiento de emociones a través de la voz [30]. El uso de esta implementación se debe a que

posee parámetros que permiten realizar ajustes a la SVM para mejorar su capacidad de clasificación

y que su código es abierto y se encuentra disponible para una gran variedad de lenguajes de

programación, entre ellos Matlab. [31]

2) Parámetro de Compensación “C” y Uso de Kernels En LIBSVM

Dentro de los parámetros que posee la librería LIBSVM podemos encontrar la constante de

compensación C, la cual puede ser modificada y su valor por defecto es 10, como también la opción

de utilizar diferentes kernels, los cuales se organizan bajo la siguiente numeración dentro del

código [31]:

Page 39: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 39

0: Lineal

1: Polinomial

2: Radial

3: Sigmoide

3) Obtención de Matriz de Entrenamiento

El entrenamiento de la máquina de vectores de soporte se realizó utilizando cada una de las

distribuciones mencionadas anteriormente en la sección 7.2.1, la primera es la utilización del 50%

del dataset para entrenamiento y el otro 50% para prueba y la segunda es la utilización del 70% del

dataset para entrenamiento y el 30% para prueba, esto con el fin de encontrar la distribución con la

que la SVM trabaje de manera más óptima y en la que se puedan evitar problemas como el

sobreajuste, también se realizó una implementación de entrenamiento en la que la SVM trabajó

con los MFCC obtenidos a partir de las muestras de entrenamiento contenidas en la base de datos

SAVEE, como también una para los MFCC obtenidos a partir de las muestras de entrenamiento

provenientes de la base de datos EMO-DB. El proceso utilizado para la creación de las matrices de

entrenamiento de la SVM fue el siguiente:

1. Permitir al usuario escoger entre la librería con la que se realizará el entrenamiento (SAVEE o

EMO-DB), este parámetro también modificará la escogencia de la librería con la que se realizarán

las pruebas, esto con el fin de trabajar ambas de manera independiente.

2. Obtener el número de coeficientes y dar la opción al usuario sobre si se desea trabajar con

desviación estándar o no, este parámetro también quedará guardado al momento de obtener la

matriz de prueba debido a que se requiere que los vectores MFCC de entrenamiento y prueba sean

del mismo tamaño.

3. Obtener el número de muestras de entrenamiento de cada estado (ansioso y tranquilo) y crear un

cell array de este tamaño, el cell array es un espacio contenedor de información en cada celda, para

el caso consignado en este trabajo, se utilizará con el fin de que cada celda contenga los vectores

Page 40: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 40

MFCC de cada muestra de audio. Esto significa que se obtendrá un cell array que contendrá los 12

coeficientes MFCC promedio pertenecientes a cada muestra de audio en cada una de sus celdas.

En el caso de utilizar la desviación estándar se creará un nuevo cell array que contendrá las 11

desviaciones de cada muestra de audio en cada una de sus celdas.

4. En caso de haberlo requerido en el paso 2, concatenar los promedios de los vectores MFCC con

la desviación estándar de los mismos.

5. Crear una matriz de tamaño: número de muestras de entrenamiento por 12 coeficientes, o número

de muestras por 23 coeficientes en caso de haber seleccionado la opción en el paso dos. Esta matriz

se llenará con los valores obtenidos en el cell array del paso tres y se agregará una nueva columna,

la cual llevará un número 0 o 1 y determinará la etiqueta de la clase a la que pertenecen dichas

muestras, esta etiqueta será leída por la máquina de vectores de soporte y será vital para el

entrenamiento de la misma.

Se debe resaltar que el proceso se realizó para cada uno de los estados debido a las etiquetas que

son 0 para el estado tranquilo y 1 para el estado ansioso, al final se obtuvieron dos matrices (una

para cada estado) que contienen los coeficientes de cada una de las muestras y sus respectivas

etiquetas, estas matrices se unirán en una nueva, la cual será la matriz de entrenamiento que

ingresará a la máquina de soporte de vectores.

4) Obtención de Matriz de Prueba

La matriz de prueba que ingresará a la máquina de vectores de soporte se obtiene de manera similar

a la matriz de entrenamiento para cada una de las implementaciones realizadas para las

distribuciones 50-50 y 70-30 respectivamente, los pasos realizados para la obtención de la matriz

de prueba fueron:

1. Obtener la base de datos de trabajo (SAVEE o EMO-DB) y el número de coeficientes (12 o 23)

a partir de los datos ingresados por el usuario en los pasos 1 y 2 de la sección 7.4.3.

Page 41: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 41

2. Con el número de muestras de prueba obtener un cell array que contenga los 12 coeficientes

MFCC para cada una de las muestras y otro con las desviaciones estándar de cada uno de los

coeficientes para cada una de las muestras, en caso de haberlo requerido en el paso 2 de la sección

7.4.3 concatenar ambos.

3. Crear una matriz de tamaño: número de muestras de prueba por 12 coeficientes, o por 23

coeficientes en caso de utilizar la desviación estándar, esta matriz se llenará con los datos obtenidos

en el cell array del paso 2, a dicha matriz se le agregará una nueva columna la cual contendrá la

etiqueta de los datos dependiendo de su clase (0 para estado tranquilo y 1 para estado ansioso).

El proceso se realiza para cada una de las clases y al final se unen las matrices pertenecientes a los

estados tranquilo y ansioso en una nueva matriz que se conocerá como matriz de prueba.

5) Preparación de los Datos

A cada una de las matrices de entrenamiento y prueba se las separo en dos nuevas matrices, una

denominada descriptores, la cual contiene la información de los vectores MFCC para cada una de

las muestras y otra llamada etiquetas, la cual como su nombre lo indica contiene la etiqueta de cada

una de las muestras, esto se debe a que la implementación LIBSVM así lo requiere, de esta forma,

se obtuvieron cuatro matrices organizadas de la siguiente manera:

TABLA V. ORGANIZACIÓN DE MATRICES

Nombre de la Matriz Contenido

X Vectores MFCC para cada una de las muestras de

entrenamiento

y Etiquetas de las muestras de entrenamiento

X_t Vectores MFCC para cada una de las muestras de prueba

y_t Etiquetas de las muestras de prueba

Page 42: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 42

VI. RESULTADOS

A. Entrenamiento del Modelo y Pruebas de Optimización

En este punto se buscaron obtener los mejores parámetros para el funcionamiento de la máquina

de vectores de soporte, como también se realizaron pruebas con ambas bases de datos (SAVEE y

EMO-DB) y pruebas con ambas distribuciones de muestras para cada una de las bases de datos

(50-50 y 70-30).

1) Buscando la Mejor Distribución de Datos

Debido a la tenencia de pocas muestras de audio por cada una de las librerías se decidió determinar

cuál sería la mejor manera de obtener los mejores resultados en la evaluación de la máquina de

vectores de soporte, utilizando las dos distribuciones mencionadas en la sección 7.2.1, las cuales

corresponden a una distribución 50% de entrenamiento y 50% de muestras para prueba, como

también 70% de muestras para entrenamiento y 30% de muestras para prueba.

2) Distribución 50 – 50

Para la distribución correspondiente a 50% de muestras para realizar el entrenamiento de la SVM

y 50% de muestras para realizar las pruebas, se obtuvieron los resultados mostrados en la Tabla

VI:

Page 43: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 43

TABLA VI. RESULTADOS OBTENIDOS PARA LA DISTRIBUCIÓN 50-50.

Base de Datos SAVEE EMO - DB

Descriptor Promedio MFCC

Exactitud 65.83% 49.31%

Verdaderos Ansiosos 48 36

Verdaderos

Tranquilos

31 0

Falsos Ansiosos 12 0

Falsos Tranquilos 29 37

Total muestras de

prueba

120 73

3) Distribución 70 – 30

Para la distribución correspondiente a 70% de muestras para realizar el entrenamiento de la SVM

y 30% de muestras para realizar las pruebas, se obtuvieron los resultados mostrados en la Tabla

VII:

TABLA VII. RESULTADOS OBTENIDOS PARA LA DISTRIBUCIÓN 70-30.

Base de Datos SAVEE EMO - DB

Descriptor Promedio MFCC

Exactitud 66.66% 47.91%

Verdaderos Ansiosos 30 18

Verdaderos

Tranquilos

10 5

Falsos Ansiosos 0 5

Falsos Tranquilos 20 20

Total muestras de

prueba

60 48

Page 44: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 44

4) Pruebas con Diferentes Kernels y Variación del Parámetro “C”

Se realizaron diferentes pruebas utilizando los kernels que posee la librería LIBSVM y que fueron

mencionados en la sección 7.4.2, como también pruebas de variación en el parámetro C, con el fin

de determinar cuáles de los parámetros serán los más adecuados para el funcionamiento de la SVM.

5) Variación de Kernels y “C” para Distribución 50 -50

En la Tabla VIII se presentan los datos obtenidos de las pruebas realizadas con la variación de

Kernels y parámetro C para las muestras pertenecientes a la distribución 50-50:

TABLA VIII. RESULTADOS OBTENIDOS EN VARIACIÓN DE KERNELS Y C PARA DISTRIBUCIÓN 50–

50.

Exactitud

SAVEE EMO-DB

Kernel C = 1 C = 100 C = 1 C = 100

Lineal 65.83% 51.66% 49.31% 49.31%

Polinomial 66.66% 50.06% 47.53% 53.42%

Radial 70.16% 65.32% 63.24% 59.42%

Sigmoide 35.14% 28.21% 34.5% 31.02%

6) Variación de Kernels y “C” para Distribución 70 -30

En la Tabla IX se presentan los datos obtenidos de las pruebas realizadas con la variación de

Kernels y parámetro C para las muestras pertenecientes a la distribución 70-30:

Page 45: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 45

TABLA IX. RESULTADOS OBTENIDOS EN VARIACIÓN DE KERNELS Y C PARA DISTRIBUCIÓN 70–30.

Exactitud

SAVEE EMO-DB

Kernel C = 1 C = 100 C = 1 C = 100

Lineal 66.66% 57.46% 47.91% 52.17%

Polinomial 66.66% 65.83% 49.84% 59.42%

Radial 76.66% 75.1% 70.94% 63.24%

Sigmoide 35.83% 37.88% 36.75% 41.29%

7) Determinación de Kernel, Parámetro “C” y Distribución

Basándose en los resultados obtenidos en las Tablas VIII y IX, se decidió usar la distribución 70-

30, como también el valor de C = 1 ya que al ser un número bajo permite utilizar muchos de los

valores con los que trabaja la SVM y no discriminar algunos, además este valor ayuda a evitar

problemas de sobreajuste y junto con el kernel radial y la distribución 70-30 la SVM obtuvo el

mejor desempeño. De aquí en adelante todas las pruebas se realizarán con esta configuración de

parámetros en la SVM y se trabajará con la base de datos SAVEE, debido a que la base de datos

EMO-DB se utilizó con el fin de probar el comportamiento de la SVM con unos vectores MFCC

distintos a los utilizados en pruebas de funcionamiento durante el desarrollo del algoritmo.

8) Inclusión de Desviación Estándar

Con el fin de optimizar la clasificación de la máquina de vectores de soporte se decidió incorporar

la desviación estándar al vector MFCC y de esta manera se obtuvieron los siguientes resultados en

comparación a los obtenidos sin la desviación estándar:

Page 46: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 46

TABLA X. RESULTADOS OBTENIDOS CON Y SIN LA INCORPORACIÓN DE LA DESVIACIÓN

ESTÁNDAR AL VECTOR MFCC.

Base de Datos SAVEE

Descriptor Promedio MFCC +

Desviación Estándar Promedio MFCC

Exactitud 81.66% 76.66%

Verdaderos Ansiosos 28 26

Verdaderos

Tranquilos

21 20

Falsos Ansiosos 2 4

Falsos Tranquilos 9 10

Total muestras de

prueba

60 60

B. Distribución de Promedios entre Vectores MFCC

A partir de las etiquetas con las que contaban las muestras se pudieron identificar aquellas que

fueron mal clasificadas, estas fueron graficadas a través de box plots y se realizó este proceso

específicamente para cuatro casos, los cuales son: verdaderos ansiosos, falsos ansiosos, verdaderos

tranquilos y falsos tranquilos, graficas que se muestran en las Fig. 14, 15, 16 y 17:

Page 47: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 47

Fig. 144. Distribución de promedios del vector MFCC en los verdaderos ansiosos.

Fig. 15. Distribución de promedios del vector MFCC en los falsos ansiosos.

Page 48: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 48

Fig. 16. Distribución de promedios del vector MFCC en los verdaderos tranquilos.

Fig. 17. Distribución de promedios del vector MFCC en los falsos tranquilos.

Page 49: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 49

VIII. ANÁLISIS DE RESULTADOS

De acuerdo con los resultados obtenidos se pueden realizar diferentes tipos de análisis, en primera

instancia se mencionarán aquellos que son producto de las pruebas realizadas para encontrar la

mejor distribución de muestras entre el entrenamiento y la prueba, a partir de los datos incluidos

en la Tabla VI se intuye que la distribución 50-50 (50% de muestras para entrenamiento y 50% de

muestras para prueba) no es la más adecuada, esto se puede corroborar utilizando el porcentaje de

acierto, como también utilizando la Ecuación 17 para obtener la precisión y comparando dichos

resultados con el porcentaje de acierto y la precisión obtenidos a partir de los datos en la Tabla VII

que posee aquellos correspondientes a la distribución 70-30 (70% de muestras para entrenamiento

y 30% de muestras para prueba), dicha comparación se observa en la Tabla XI:

TABLA XI. COMPARACIÓN ENTRE DISTRIBUCIONES

Distribución 50-50 70-30

Base de Datos SAVEE EMO-DB SAVEE EMO-DB

Exactitud 65.83% 49.31% 66.66% 47.91%

Precisión

(Ansioso)

80% 100% 100% 78%

Precisión

(Tranquilo)

51% 0% 33% 20%

La distribución 50-50 presenta un problema de clasificación al trabajar con la base de datos EMO-

DB, esto posiblemente sucede por el reducido tamaño de muestras que posee la misma, generando

un problema donde la máquina de vectores de soporte posee más soluciones al problema que

muestras de entrenamiento, a esto se le denomina sobreajuste, como se explica en la sección 6.4.5,

a pesar de tener una exactitud de casi del 50%, la máquina de vectores de soporte no es capaz de

clasificar ninguna o muy pocas de las muestras en estado tranquilo. De igual manera sucede con la

distribución 70-30, que, aunque posee una mayor cantidad de muestras para el entrenamiento y un

porcentaje considerable de exactitud (para SAVEE) y precisión para el estado ansioso, aún presenta

un porcentaje muy restringido en la precisión de las muestras del estado tranquilo, posiblemente

fruto de no tener una base de datos con un número mayor de muestras para cada estado, esto se

supone partiendo de que la base de datos EMO-DB posee un número mucho menor de muestras

Page 50: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 50

(150 muestras) con respecto a la base de datos SAVEE (240 muestras), aunque no se puede ser

ajeno al hecho de que la base de datos SAVEE se encuentra más balanceada en relación al número

de muestras para entrenamiento y prueba que posee, mientras que EMO-DB al tener un numero de

muestras irregulares entre los diferentes hablantes generó una base de datos desbalanceada en

relación a lo mismo (véase Tabla II y Tabla III) lo cual podría significar un factor más en el

rendimiento menor del algoritmo cuando trabaja con EMO-DB.

La variación del parámetro “C” y la utilización de los diferentes Kernels dentro de la librería

LIBSVM permitió que se pudieran ajustar aún más los resultados obtenidos, primordialmente los

correspondientes a la precisión para el estado tranquilo, debido a que estos valores no sobrepasaban

el 51% (como se muestra en la Tabla XI) y esto hacía que el porcentaje de exactitud de la máquina

de soporte de vectores fuera bajo, como también que el trabajo de la misma fuera desbalanceado

entre el reconocimiento de muestras en estado ansioso y en estado tranquilo, después de realizar

pruebas con cada una de las combinaciones entre Kernels, valores de C (tomando un valor pequeño

como 1 y uno grande como 100 para observar la variación en los resultados) y distribuciones, se

obtuvo una buena relación entre exactitud y precisión para cada uno de los estados utilizando una

distribución 70-30, un kernel radial y un valor de C igual a 1, tal como se observa en la Tabla XII:

TABLA XII. RESULTADOS PARA KERNEL RADIAL, C = 1 Y DISTRIBUCIÓN 70-30.

Distribución 70-30

Base de Datos SAVEE EMO-DB

Exactitud 76.66% 75.1%

Precisión

(Ansioso)

86% 94%

Precisión

(Tranquilo)

66% 47%

De todos modos, para el caso de la base de datos EMO-DB durante las pruebas, la brecha siempre

fue alta debido a la baja precisión con las muestras pertenecientes al estado tranquilo, incluso para

las configuraciones donde se daba una buena precisión para este estado en las pruebas con la base

de datos SAVEE, lo que lleva nuevamente a pensar en la falta de más muestras en la base de datos

EMO-DB para realizar el entrenamiento, como también el problema de que las muestras se

Page 51: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 51

encuentran desbalanceadas para todas las configuraciones posibles, por esta razón se decidió seguir

trabajando en adelante únicamente con la base de datos SAVEE, con el fin de poder optimizar el

algoritmo para obtener mejores resultados y evitar problemas de sobre o sub ajuste al trabajar con

una base de datos no óptima para las pruebas.

Una vez obtenido un porcentaje coherente entre exactitud y precisión para cada uno de los estados

se buscó una nueva forma de optimizar dichos valores y el trabajo de clasificación de la máquina

de vectores de soporte en sí, en la Tabla X se puede observar cómo la inclusión de los promedios

de las desviaciones estándar de cada muestra, añadidas a los vectores MFCC ayudaron en este

punto, aumentaron la exactitud de la clasificación en un 5%, llevándola de 76.66% a 81.66% sin

sacrificar precisión en ninguna de las dos clases, sino que llevando tres muestras (dos en estado

ansioso y una en tranquilo) de una mala clasificación a una clasificación correcta, de este hecho se

puede intuir que los nuevos coeficientes añadidos al vector MFCC se encargaron de ajustar el

hiperplano de separación y consiguieron que nuevas muestras pudieran ser clasificadas

correctamente, lo cual coincide con una de las soluciones para los problemas dimensionales en las

máquinas de soporte de vectores que consiste en añadir nuevos descriptores a los vectores de

soporte [32].

Con respecto a las variables que inciden en una buena y una mala clasificación, a partir de los box

plots de las Fig. 14 y 15 se observa que los coeficientes 2, 13 y 14 poseen una diferencia notable

entre la distribución de promedios del vector MFCC en los verdaderos ansiosos y la distribución

de promedios del vector MFCC en falsos ansiosos, esto quiere decir que probablemente dentro del

rango de frecuencias en los que operan estos coeficientes se pueden dar las características que

diferencian la voz en estado tranquilo y otra en estado ansioso, debido a que el coeficiente 13

pertenece al promedio de la desviación estándar del coeficiente 2, tiene mucha lógica que ambos

se diferencien para cada uno de los casos. Mientras que de las Fig. 16 y 17 se observa que los

coeficientes 3 y 14 poseen una diferencia marcada entre la distribución de promedios del vector

MFCC en los verdaderos tranquilos y la distribución de promedios del vector MFCC en los falsos

tranquilos, nuevamente se encuentra un caso donde el coeficiente 14 pertenece al promedio de la

desviación estándar del coeficiente 3, por lo que ambos están relacionados y tiene lógica su

variación.

Page 52: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 52

IX. CONCLUSIONES

A partir del análisis de resultados se puede concluir que la implementación entre MFCC y una

máquina de vectores de soporte (SVM) es eficiente bajo ciertas condiciones, se requiere un numero

de muestras lo suficientemente grande para que durante el entrenamiento se puedan separar

correctamente las clases, los estados ansioso y tranquilo en este caso. Si el número de muestras no

cumple con lo mencionado anteriormente se podría solucionar en parte el problema balanceando

el número de muestras de entrenamiento y el de prueba, una relación 70-30 puede ser útil en ese

caso, pero cuando las muestras entre hablantes son irregulares se puede dificultar la clasificación.

Otro método que puede funcionar es añadir nuevos descriptores al vector de entrenamiento y

prueba, una muestra clara de ello se da en [30], donde se entrena una SVM con todas las muestras

de la base de datos SAVEE y se pone a prueba con muchas de las muestras de la base de datos

EMO-DB, pero fuera de los MFCC sus vectores cuentan con cuatro descriptores más, esto permitió

que se realizara una clasificación más acertada con respecto a la de este trabajo. Por último y no

menos importante, los vectores MFCC varían dependiendo de las diferentes implementaciones,

como por ejemplo dos muy reconocidas las cuales son Auditory Toolbox y HTK, aunque todas

poseen procesos en común y algunos otros similares, también poseen diferencias como

normalizaciones o las ecuaciones y los procesos computacionales característicos de cada época y

que claramente influenciaron la programación de las mismas [33]. Dichas variaciones generan

diferentes valores al obtener los vectores MFCC, pero sin embargo conservan la misma esencia

que entre dos clases o más estos coeficientes varían y de esta manera permiten realizar una

clasificación entre las mismas con las muestras que se tienen e incluso con nuevas muestras, para

el caso consignado en este trabajo se observaron variaciones notables dentro de los primeros

coeficientes, más no se puede generalizar esto para todos los casos de análisis de estrés en la voz

entre estados ansioso y tranquilo, ya que factores externos como la cantidad de hablantes, el género

y la edad pueden variar notablemente los resultados obtenidos, como también factores propios de

la utilización de la máquina de aprendizaje, por ejemplo el uso de nuevos espacios característicos

y parámetros que permiten ajustar el rendimiento de la misma frente a las muestras con las que se

trabajan podrían influenciar notablemente su rendimiento frente a nuevas muestras con

características muy distintas a las utilizadas.

Page 53: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 53

REFERENCIAS

[1] S. Chu, S. Narayanan, and C.-C Jay Kuo, "Environmental sound recognition with time-

frequency audio features," in IEEE Trans. Audio, Speech and Lang. Processing, vol. 17,

2009.

[2] Y. Hong-wu, L. Ya-li, and H. De-zhi, "Speaker recognition based on weighted mel-

cepstrum," in Fourth International Conference on Computer Sciences and Convergence

Information Techno- logy, 2009, pp. 200–203.

[3] L. Rabiner and B-H Juang, Fundamentals of Speech Recognition, Prentice Hall, Murray Hill,

NJ, 1993.

[4] X. Valero and F. Alías, "Análisis de la Senal Acustica Mediante Coeficientes Cepstrales Bio-

Inspirados y su Aplicación al Reconocimiento de Paisajes Sonoros", Grup de Recerca en

Tecnologies Media, La Salle-Universitat Ramon Llull, 2012.

[5] J. C. Gómez, “Reconocimiento Automático de Voz Reconocimiento Automático de Voz

Basado en Técnicas de Comparación de Patrones”, Facultad de Ciencias Exactas, Ingeniería

y Agrimensura, Universidad Nacional de Rosario. [Online]. Available:

https://goo.gl/9mC5ET.

[6] S. Furui, “50 Years of Progress in Speech and Speaker Recognition Research”, ECTI

Transactions on Computer and Information Technology, vol. 1, 2005, pp. 64-74.

[7] G. Martínez and G. Aguilar, "Sistema para Identificación de Hablantes Robusto a Cambios

en la Voz", Ingenius: Revista de Ciencia y Tecnología, Núm. 8, Universidad Politécnica

Salesiana, 2012. [Online]. Available: https://goo.gl/ca4qAa.

[8] [1] J. O’Neal, Introduction to Signal Transmission, IEEE Transactions on Communications,

vol. 20, no. 5. 1972.

[9] C. Cortes, and V. Vapnik, “Support Vector Networks,” Machine Learning, Vol. 20, No. 3,

1995, pp. 273-297.

[10] G. Fant, "Analysis and synthesis of speech processes" Manual of phonetics, 1968, pp. 173-

177.

[11] D. Boswell, "Introduction to Support Vector Machines", 2002. [Online]. Available:

https://goo.gl/SQo5hX.

Page 54: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 54

[12] C. Burges, "A Tutorial on Support Vector Machines for Pattern Recognition" Kluwer

Academic Publishers, Bell Laboratories, Lucent Technologies, 1998.

[13] P. Zwan, B. Kostek and A. Kupryjanow, "Automatic Classification of Musical Audio Signals

Employing Machine Learning Approach," in Audio Engineering Society Convention, 2011.

[14] B. Andersen, J. Dyreby, B. Jensen, F. Kjaersfov, O. Mikkelsen, P. Nielsen and H.

Zimmermann, “The Mel Scale and Coefficients”, Departament of Electronic Systems,

Aalborg University, Aalborg, 2004. [Online]. Available: https://goo.gl/kQHnjU.

[15] N. Moureau, T. Sikora and K. Hyoung-Gook, “MPEG-7 AUDIO and Beyond: Audio Content

Indexing and Retrieval”, 2005.

[16] E.S. Gopi, “Digital Speech Processing Using Matlab”, Springer, New Dehli, 2014.

[17] E. Roberts, “Data Compression”, Computer Science, University of Standford, 2000.

[Online]. Available: https://goo.gl/JYFHNQ,

[18] P. Jackson and S. Haq, Surrey Audio-Visual Expressed Emotion (SAVEE) Database, 2015.

[Online]. Available: https://goo.gl/QoaDsC.

[19] M. Slaney, “Auditory Toolbox: Technical Report 1998-010”, Interval Research Corporation,

1998.

[20] J. Garofolo, L. F. Lamel, W. Fisher, J. Fiscus, D. Pallet, N. Dahlgren and V. Zue, “TIMIT

Acoustic-Phonetic Continuous Speech Corpus LDC93S1”, Philadelphia: Linguistic Data

Consortium, The Trustees of the University of Pennsylvania, 1993.

[21] J. Garofolo, L. F. Lamel, W. Fisher, J. Fiscus, D. Pallet, N. Dahlgren and V. Zue, “The

DARPA TIMIT Acoustic-Phonetic Continuous Speech Corpus”, Philadelphia: Linguistic

Data Consortium, The Trustees of the University of Pennsylvania, 1990. [Online]. Available:

https://goo.gl/woMThb:

[22] R. Solera Ureña, J. Padrell, D. Martín, A, Gallardo, C. Peláez and C. Díaz, "SVMs for

Automatic Speech Recognition: a Survey", Signal Theory and Communications

Departament, EPS Universidad San Carlos III de Madrid, Madrid, 2007.

[23] L. Rosasco, “SVM: An Introduction to Support Vector Machine, Classification, Biomedical

Decision Support”, Department of Brain and Cognitive Science, Massachusetts Institute of

Technology, 2009. [Online]. Available: https://goo.gl/8Gtfeh.

Page 55: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 55

[24] W. Wang. “Machine Audition: Principles, Algorithms and Systems”, University of Surrey,

UK, 2010.

[25] E. Weisstein, “Sign”, MathWorld--A Wolfram Web Resourc. [Online]. Available:

https://goo.gl/EjT5r9.

[26] Kharagpur Data Analytics Group (KDAG), “SVM Simplified”, 2015. [Online]. Available:

https://goo.gl/iozZZ3.

[27] D. R. Kiracofe, “Zero-Padding of FFTs”, Vibration Data Analysis, 2017. [Online].

Available: https://goo.gl/iuLiVZ.

[28] H. Traünmuller and A. Eriksson, “The frecuency range of the voice fundamental in the

specch of male and female adults”, Institutionen for lingvistik, Stockholms universitet,

Stockholm, Sweden, 1994.

[29] A. Touazi and M. Debyeche, "A Case Study on Back-End Voice Activity Detection for

Distributed Specch Recognition System Using Support Vector Machines," 2014 Tenth

International Conference on Signal-Image Technology and Internet-Based Systems,

Marrakech, 2014, pp. 21-26.

[30] K. Amol T. and R. M. R. Guddeti, "Multiclass SVM-based language-independent emotion

recognition using selective speech features," 2014 International Conference on Advances in

Computing, Communications and Informatics (ICACCI), New Delhi, 2014, pp. 1069-1073.

[31] C. Chang and C. Lin, “LIBSVM – A Library for Support Vector Machines”, Department of

Computer Science, National Taiwan University Taipei, Taiwan, 2016. [Online]. Available:

https://goo.gl/HpGjlN.

[32] M. Giménez Fayos, “Una Aproximación Basada en Aprendizaje Automático para Diversos

Problemas de Procesamiento de Lenguaje Natural en Redes Sociales”, Tesis de Maestría,

Universidad Politècnica de València, 2016.

[33] D. Ellis, “Reproducing the Feature Outputs of Common Programs Using Matlab and

melfcc.m”, Lab. for Recognition and Organization of Speech and Audio (LabROSA),

Columbia University, New York, 2013. [Online]. Available: https://goo.gl/69yy7c.

[34] J. Giraldo, “Identificación Automática de Eventos Sonoros de Música y Tráfico en

Grabaciones en Ambientes Controlados Mediante Descriptores de Audio y el Algoritmo de

Clasificación de Máquinas de Soporte de Vectores (SVM)”, Trabajo de Grado, Ingeniería de

Sonido, Facultad de Ingenierías, Universidad de San Buenaventura Medellín, 2016.

Page 56: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 56

ANEXOS

A. Código Principal MFCC y SVM

%Inicializar

clear all

close all

clc

%Establecer rutas y carpetas

%Obtener ruta actual del archivo

cwd = pwd;

database = input('SAVEE = 1, Berlin Database = 2 :')

if database == 1

%Carpetas Audios de entrenamiento SAVEE

path_ansioso = strcat(cwd,'/SAVEE/Muestras Entrenamiento/Estado Ansioso/');

path_calmado = strcat(cwd,'/SAVEE/Muestras Entrenamiento/Estado Tranquilo/');

%Carpetas Audios de prueba SAVEE

path_ansioso_test = strcat(cwd,'/SAVEE/Muestras Prueba/Estado Ansioso/');

path_calmado_test = strcat(cwd,'/SAVEE/Muestras Prueba/Estado Tranquilo/');

end

if database == 2

%Carpetas Audios de entrenamiento Berlin Database

path_ansioso = strcat(cwd,'/berlin_wav/Entrenamiento/Ansioso/');

path_calmado = strcat(cwd,'/berlin_wav/Entrenamiento/Tranquilo/');

%Carpetas Audios de prueba Berlin Database

path_ansioso_test = strcat(cwd,'/berlin_wav/Prueba/Ansioso/');

path_calmado_test = strcat(cwd,'/berlin_wav/Prueba/Tranquilo/');

end

%Leer Archivos

[audios_ansioso, fs_ans] = cargar(path_ansioso);

[audios_calmado, fs_cal] = cargar(path_calmado);

[audios_ansioso_t, fs_ans_t] = cargar(path_ansioso_test);

[audios_calmado_t, fs_cal_t] = cargar(path_calmado_test);

%% Audios entrenamiento

% Audios Estado Ansioso

ncoef = input('Numero de coeficientes: ');

desviacion = input('Desviacion estandar: S/N ','s');

delta = input('Delta = 1, Delta-delta = 2, ninguno = 0: ');

%inicializar variables

N_ans = length(audios_ansioso); %numero de audios de estado ansioso

mel_ans = cell(N_ans,1); %cell array con matriz de coeficientes de mel

melmean_ans = cell(N_ans,1); %cell array con los promedios

melstd_ans = cell(N_ans,1); %cell array con la desviacion estandar

matrix_ans = zeros(N_ans,ncoef); %creando matriz promedios + etiqueta

if desviacion == 'S'

matrix_ans = zeros(N_ans,2*ncoef-1); %creando matriz promedios + desviacion + etiqueta

Page 57: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 57

end

if delta == 1

matrix_ans = zeros(N_ans,2*ncoef-2);

end

if delta ==2

matrix_ans = zeros(N_ans,3*ncoef-5);

end

for i=1:N_ans

% Obtener MFCC en cada audio

mel_ans{i} = gmfcc(audios_ansioso{i},fs_ans(i),ncoef,delta);

% Resumen descriptores

melmean_ans{i} = mean(mel_ans{i},2);

%concatenar promedio, desviacion estandar y etiqueta

if desviacion == 'S'

melstd_ans{i} = std(mel_ans{i},0,2);

matrix_ans(i,:) = [melmean_ans{i}' melstd_ans{i}' 1 ]; %etiqueta 1 Estado Ansioso

else

% solo promedio

matrix_ans(i,:) = [melmean_ans{i}' 1 ]; %etiqueta 1 Estado Ansioso

end

end

% Audios estado Calmado

%inicializar variables

N_cal = length(audios_calmado);

mel_cal = cell(N_cal,1);

melmean_cal = cell(N_cal,1);

melstd_cal = cell(N_cal,1);

matrix_cal = zeros(N_cal,ncoef);

if desviacion == 'S'

matrix_cal = zeros(N_cal,2*ncoef-1); %creando matriz promedios + desviacion + etiqueta

end

if delta == 1

matrix_cal = zeros(N_cal,2*ncoef-2);

end

if delta ==2

matrix_cal = zeros(N_cal,3*ncoef-5);

end

for i=1:N_cal

% Obtener MFCC en cada audio

mel_cal{i} = gmfcc(audios_calmado{i},fs_cal(i),ncoef,delta);

% Resumen descriptores

melmean_cal{i} = mean(mel_cal{i},2);

%concatenar promedio, desviacion estandar y etiqueta

if desviacion == 'S'

melstd_cal{i} = std(mel_cal{i},0,2);

matrix_cal(i,:) = [melmean_cal{i}' melstd_cal{i}' 0 ]; %Etiqueta 0 Estado Tranquilo

else

matrix_cal(i,:) = [melmean_cal{i}' 0 ]; %Etiqueta 0 Estado Tranquilo

end

end

%% Audios prueba

% Audios Estado Ansioso

Page 58: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 58

%inicializar variables

N_ans_t = length(audios_ansioso_t);

mel_ans_t = cell(N_ans_t,1);

melmean_ans_t = cell(N_ans_t,1);

melstd_ans_t = cell(N_ans_t,1);

matrix_ans_t = zeros(N_ans_t,ncoef);

if desviacion == 'S'

matrix_ans_t = zeros(N_ans_t,2*ncoef-1); %creando matriz promedios + desviacion + etiqueta

end

if delta == 1

matrix_ans_t = zeros(N_ans_t,2*ncoef-2);

end

if delta ==2

matrix_ans_t = zeros(N_ans_t,3*ncoef-5);

end

for i=1:N_ans_t

% Obtener MFCC en cada audio

mel_ans_t{i} = gmfcc(audios_ansioso_t{i},fs_ans_t(i),ncoef,delta);

% Resumen descriptores

melmean_ans_t{i} = mean(mel_ans_t{i},2);

%concatenar promedio, desviacion estandar y etiqueta

if desviacion == 'S'

melstd_ans_t{i} = std(mel_ans_t{i},0,2);

matrix_ans_t(i,:) = [melmean_ans_t{i}' melstd_ans_t{i}' 1 ]; %etiqueta 1 Estado Ansioso

else

matrix_ans_t(i,:) = [melmean_ans_t{i}' 1 ];

end

end

%% Audios estado Calmado

%inicializar variables

N_cal_t = length(audios_calmado_t);

mel_cal_t = cell(N_cal_t,1);

melmean_cal_t = cell(N_cal_t,1);

melstd_cal_t = cell(N_cal_t,1);

matrix_cal_t = zeros(N_cal_t,ncoef);

if desviacion == 'S'

matrix_cal_t = zeros(N_cal_t,2*ncoef-1); %creando matriz promedios + desviacion + etiqueta

end

if delta == 1

matrix_cal_t = zeros(N_cal,2*ncoef-2);

end

if delta ==2

matrix_cal_t = zeros(N_cal_t,3*ncoef-5);

end

for i=1:N_cal_t

% Obtener MFCC en cada audio

mel_cal_t{i} = gmfcc(audios_calmado_t{i},fs_cal_t(i),ncoef,delta);

% Resumen descriptores

melmean_cal_t{i} = mean(mel_cal_t{i},2);

%concatenar promedio, desviacion estandar y etiqueta

if desviacion == 'S'

melstd_cal_t{i} = std(mel_cal_t{i},0,2);

matrix_cal_t(i,:) = [melmean_cal_t{i}' melstd_cal_t{i}' 0 ]; %etiqueta 1 Estado Ansioso

else

matrix_cal_t(i,:) = [melmean_cal_t{i}' 0 ];

Page 59: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 59

end

end

%% Preparacion de los datos

%crear matriz entrenamiento con las dos categorias

data = [matrix_ans;matrix_cal];

%separar descriptores y etiquetas

X = data(:,1:(end-1));

% Escalar los datos

X = (X - repmat(min(X,[],1),size(X,1),1))*spdiags(1./(max(X,[],1)-

min(X,[],1))',0,size(X,2),size(X,2));

y = data(:,end);

%crear matriz de prueba con las dos categorias

data_t = [matrix_ans_t;matrix_cal_t];

%datos completos

M = [data; data_t];

%separar descriptores y etiquetas

X_t = data_t(:,1:(end-1));

%Escalar los datos

X_t = (X_t - repmat(min(X_t,[],1),size(X_t,1),1))*spdiags(1./(max(X_t,[],1)-

min(X_t,[],1))',0,size(X_t,2),size(X_t,2));

y_t = data_t(:,end);

%% Graficas

figure(1)

boxplot(matrix_ans(:,1:end-1))

title('Distribucion promedios MFCC estado Ansioso')

figure(2)

boxplot(matrix_cal(:,1:end-1))

title('Distribucion promedios MFCC estado Tranquilo')

%% Entrenamiento el modelo

%Opciones de libsvm

% -s svm_type : set type of SVM (default 0)

% 0 -- C-SVC

% 1 -- nu-SVC

% 2 -- one-class SVM

% 3 -- epsilon-SVR

% 4 -- nu-SVR

% -t kernel_type : set type of kernel function (default 2)

% 0 -- linear: u'*v

% 1 -- polynomial: (gamma*u'*v + coef0)^degree

% 2 -- radial basis function: exp(-gamma*|u-v|^2)

% 3 -- sigmoid: tanh(gamma*u'*v + coef0)

% -d degree : set degree in kernel function (default 3)

% -g gamma : set gamma in kernel function (default 1/num_features)

% -c cost : set the parameter C of C-SVC, epsilon-SVR, and nu-SVR (default 1)

% Entrenar la svm

model = svmtrain(y,X,'-c 1 -t 2');

Page 60: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 60

% Usar el modelo para clasificar los datos

etiqueta = svmpredict(y_t,X_t, model); % run the SVM model on the test data

[mcon,order] = confusionmat(y_t,etiqueta);

% graficar matriz de confusion

figure; imagesc(mcon);

xlabel('Categoria generada');

ylabel('Categoria real');

colormap('summer')

colorbar

%% Inspeccion muestras mal clasificadas

idx_bad = find((etiqueta~=y_t)==1);

idx_bad_ans = idx_bad(find(idx_bad <= length(audios_ansioso_t)));

idx_bad_cal = idx_bad(find(idx_bad > length(audios_ansioso_t)));

idx_good = find((etiqueta==y_t)==1);

idx_good_ans = idx_good(find(idx_good <= length(audios_calmado_t)));

idx_good_cal= idx_good(find(idx_good > length(audios_calmado_t)));

for i=1:length(idx_bad_ans)

%soundsc(audios_ansioso_t{idx_bad_ans(i)},fs_ans_t(idx_bad_ans(i)));

end

data_ans_bad = data_t(idx_bad_ans,1:(end-1));

figure(4)

boxplot(data_ans_bad)

title('Distribucion promedios MFCC Muestras malas ansioso')

ylim([-0.5,1.5])

data_ans_good = data_t(idx_good_ans,1:(end-1));

figure(5)

boxplot(data_ans_good)

title('Distribucion promedios MFCC Muestras buenas ansioso')

ylim([-0.5,1.5])

for i =1:length(idx_bad_cal)

%soundsc(audios_calmado_t{idx_bad_cal(i)},fs_cal_t(idx_bad_cal(i)));

end

data_cal_bad = data_t(idx_bad_cal,1:(end-1));

figure(6)

boxplot(data_cal_bad)

title('Distribucion promedios MFCC Muestras malas calmado ')

ylim([-0.5,1.5])

data_cal_good = data_t(idx_good_cal,1:(end-1));

figure(7)

boxplot(data_cal_good)

title('Distribucion promedios MFCC Muestras buenas calmado ')

ylim([-0.5,1.5])

for i=1:length(idx_bad_ans)

nombre = strcat('Falso negativo Muestra Numero : ',num2str(idx_bad_ans(i)));

figure('Name',nombre)

subplot(211)

imagesc(mel_cal_t{idx_bad_ans(i)}),axis xy; colorbar

title('MFCC Estado Tranquilo')

subplot(212)

imagesc(mel_ans_t{idx_bad_ans(i)}),axis xy; colorbar

title('MFCC Estado Ansioso')

end

Page 61: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 61

for j=1:length(idx_bad_cal)

nombre = strcat('Falso Positivo Muestra Numero : ',num2str(idx_bad_cal(j)));

figure('Name',nombre)

subplot(211)

imagesc(mel_cal_t{idx_bad_cal(j)-30}-length(audios_calmado_t)),axis xy; colorbar

title('MFCC Estado Tranquilo')

subplot(212)

imagesc(mel_ans_t{idx_bad_cal(j)-30}-length(audios_calmado_t)),axis xy; colorbar

title('MFCC Estado Ansioso')

end

B. Función MFCC

function[dctmel] = gmfcc(x,fs,ncoef,del)

%1. Filtro Preenfasis

B = [1 -0.97]; %Coeficientes del filtro

y = filter(B,1,x); %CreaciÔøΩn del filro

maxy = max(abs(y)); %Encontrar mÔøΩximo de y

ynorm = y./maxy; %Normalizar

%2. ENVENTANADO

%2.1 DIVISION CUADROS

%Se crearÔøΩn ventanas de 16ms y un tiempo de solapamiento de 10ms para

%acercarse a la representación de Slaney

nmuv = floor(0.025*fs); %numero de muestras de cada ventana

nmus = floor(0.010*fs); %numero de muestras de solapamiento de cada ventana

xlen = length(y); % longitud del audio

nfft = 2^nextpow2(nmuv); %tamaño de la fft para que sea potencia de 2

% Crear ventana hamming

win = hamming(nmuv);

% Crear matriz de sftt

rown = ceil((1+nfft)/2); % Numero de filas de la matriz

coln = 1+fix((xlen-nmuv)/nmus); % Numero de columnas

spectrum = zeros(rown, coln); % Matriz de ceros para que el loop se ejecute mas rapido

% inicializar los indices

indx = 0;

col = 1;

% hacer la STFT

while indx + nmuv <= xlen

% aplicar ventana

yven = y(indx+1:indx+nmuv).*win;

% FFT

X = fft(yven, nfft);

% actualizar la matriz del espectro

spectrum(:, col) = X(1:rown);

% actualizar los indices

indx = indx + nmus;

col = col + 1;

end

Page 62: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 62

%Obtener el espectro de potencia sin elevar al cuadrado como esta en

%toolbox de slaney

yspectrum = abs(spectrum);

% 4.1 DEFINICIÔøΩN FRECUENCIAS MIN Y MAX

fmin = 133.3; %DefiniciÔøΩn de frecuencias max y min en Hz

fmax = 6855.6;

% FORMULA DE HTK

% fminmel = 2595*log10(1+fmin/700); %Conversion de Frecuencias a Mel

% fmaxmel = 2595*log10(1+fmax/700);

% FORMULA SIMILAR A SLANEY

fminmel = 1127*log(1+fmin/700);

fmaxmel = 1127*log(1+fmax/700);

%ncoef = 13 Numero de coeficientes a obtener del banco de filtros

vecmelbank = linspace(fminmel, fmaxmel, ncoef+2); %puntos equidistantes entre fmin y fmax

%vechzbank = 700*(10.^(vecmelbank./2595)-1); % HTK

vechzbank = 700.*exp(vecmelbank./1127)-700; % SLANEY

% 4.2 APROXIMACIÔøΩN DE PUNTOS A BINS DE LA FFT

filtrobins = floor((nfft+1).*vechzbank./fs);

% 4.3 CREACION DE BANCO DE FILTROS

K = nfft/2+1;

f = linspace( fmin, fmax, K );

H = zeros( ncoef, K ); % zero otherwise

for m = 1:ncoef

% implements Eq. (6.140) on page 314 of [1]

% k = f>=c(m)&f<=c(m+1); % up-slope

% H(m,k) = 2*(f(k)-c(m)) / ((c(m+2)-c(m))*(c(m+1)-c(m)));

% k = f>=c(m+1)&f<=c(m+2); % down-slope

% H(m,k) = 2*(c(m+2)-f(k)) / ((c(m+2)-c(m))*(c(m+2)-c(m+1)));

% implements Eq. (6.141) on page 315 of [1]

k = f>=vechzbank(m)&f<=vechzbank(m+1); % up-slope

H(m,k) = (f(k)-vechzbank(m))/(vechzbank(m+1)-vechzbank(m));

k = f>=vechzbank(m+1)&f<=vechzbank(m+2); % down-slope

H(m,k) = (vechzbank(m+2)-f(k))/(vechzbank(m+2)-vechzbank(m+1));

end

% 4.4 APLICACION DE BANCO DE FILTROS AL ESPECTRO DE POTENCIA

mel = sqrt(H*yspectrum).^2;

% 5 OBTENCION DEL LOGARITMO DE LA ENERGIA DE CADA BANDA

logmel = log10(mel);

% 6 APLICACION DCT AL LOGARITMO DE LA ENERGIA DE CADA BANDA

dctmel = dct(logmel);

dctmel = dctmel(2:ncoef,:);

if del == 1

delta = diff(dctmel);

dctmel = [dctmel; delta];

end

Page 63: Análisis de Estrés en la Voz Utilizando Coeficientes

ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 63

if del == 2

delta = diff(dctmel);

delta2 = diff(delta);

dctmel = [dctmel; delta; delta2];

end

% 7 GRAFICAR DCTMEL

figure(10)

imagesc(dctmel); axis xy; colorbar

title('Gabo Toolbox MFCC');