análisis de estrés en la voz utilizando coeficientes
TRANSCRIPT
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… 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
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
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
ANÁLISIS DE ESTRÉS EN LA VOZ UTILIZANDO COEFICIENTES… 5
VIII. ANÁLISIS DE RESULTADOS ........................................................................................... 49
IX. CONCLUSIONES ................................................................................................................... 52
REFERENCIAS ............................................................................................................................. 53
ANEXOS ........................................................................................................................................ 56
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
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
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.
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].
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.
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.
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].
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].
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
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.
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:
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.
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 [ (
2π
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.
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.
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].
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.
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:
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.
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.
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.
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].
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
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.
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].
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:
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.
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
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.
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
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:
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.
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”.
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]:
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
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.
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
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:
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
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:
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:
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:
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.
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.
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
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
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.
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.
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.
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.
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.
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
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
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 ];
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');
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
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
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
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');