Autor:
Juan Manuel Vicente Cabero
Tutor:
Francisco Serradilla Garcı́a
Junio 2018
Abstract
Artificial Intelligence has experienced a huge growth in the last few years,
thanks to the increase in computing power and the emergence of tools that
allow complex calculations to be performed more efficiently. In addition, the
rise of smartphones has increased the volume of data generated by users,
opening up a range of new possibilities for the application of Artificial Inte-
lligence in consumer electronics. Among these applications are virtual assis-
tants, which allow the execution of certain instructions by voice command
recognition. This project aims to develop a Recurrent Neural Network, spe-
cifically a LSTM network, capable of recognizing 24 instructions, to test the
effectiveness of LSTM networks in Automatic Speech Recognition (ASR) and
to provide the basis for a future virtual assistant. The system will take as
input audio files in WAVE format, pre-process the acoustic signal and extract
the features of interest, which will serve as input for the neural network.
The output from the network will be a vector of 24 integers, one for each
class, with all of them being ’0’ except the class predicted by the network
with the highest percentage of confidence, which will take the value ’1’. The
system will interpret this vector and display the name of the analyzed file,
the command it contains and the command predicted by the network.
Resumen
Lista de figuras VI
1. Introducción 1
1.1. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2. Impacto social . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Fundamentos teóricos 4
2.1. Inteligencia Artificial . . . . . . . . . . . . . . . . . . . . . . . 4
2.2. Machine Learning . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3. Deep Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.4. Redes de Neuronas . . . . . . . . . . . . . . . . . . . . . . . . 6
2.5. Redes de Neuronas Recurrentes . . . . . . . . . . . . . . . . . 7
2.6. Long Short-Term Memory . . . . . . . . . . . . . . . . . . . . 8
2.6.1. Descartando información: Forget gate layer . . . . . . . 11
2.6.2. Añadiendo nueva información . . . . . . . . . . . . . . 11
2.6.3. Actualizando el cell state . . . . . . . . . . . . . . . . . 12
2.6.4. Generando la salida . . . . . . . . . . . . . . . . . . . . 14
2.7. Aprendizaje supervisado . . . . . . . . . . . . . . . . . . . . . 15
2.7.1. Algoritmo de aprendizaje: Backpropagation . . . . . . . 15
II
2.8. Funciones de activación . . . . . . . . . . . . . . . . . . . . . . 16
2.8.1. Tanh . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.8.2. Softmax . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.9. Métricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.9.1. Precisión . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.9.2. Pérdida . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.10. Optimización del descenso de gradiente . . . . . . . . . . . . . 19
2.10.1. Adagrad . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.10.2. Adam . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.11. Regularización . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.11.1. Dropout . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.11.2. L2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.12. Procesado de audio . . . . . . . . . . . . . . . . . . . . . . . . 22
2.12.1. Preénfasis . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.12.2. Enmarcado . . . . . . . . . . . . . . . . . . . . . . . . 24
2.12.3. Función de ventana de Hamming . . . . . . . . . . . . 25
2.12.4. Transformada de Fourier de Tiempo Reducido (STFT ) 26
2.12.5. Bancos de filtros de Escala Mel . . . . . . . . . . . . . 27
2.12.6. Coeficientes Cepstrales en Frecuencias de Mel (MFCCs) 29
2.12.7. Normalización . . . . . . . . . . . . . . . . . . . . . . . 30
3. Herramientas 31
3.1. Dataset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.1.1. Speech Recognition . . . . . . . . . . . . . . . . . . . . 32
3.1.2. Keyword Spotting . . . . . . . . . . . . . . . . . . . . . 33
3.2. Librerı́as de manipulación de datos . . . . . . . . . . . . . . . 34
3.2.1. NumPy . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.2.2. SciPy Library . . . . . . . . . . . . . . . . . . . . . . . 35
III
3.2.3. Pandas . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.3. Librerı́as de Machine Learning . . . . . . . . . . . . . . . . . . 36
3.3.1. SciKit-Learn . . . . . . . . . . . . . . . . . . . . . . . . 36
3.3.2. PyTorch . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.3.3. Theano . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.3.4. TensorFlow . . . . . . . . . . . . . . . . . . . . . . . . 37
3.3.5. Keras . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.4. Lenguaje de programación . . . . . . . . . . . . . . . . . . . . 38
3.5. Entorno de desarrollo . . . . . . . . . . . . . . . . . . . . . . . 39
3.6. Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4. Diseño 41
4.1. Descripción del problema . . . . . . . . . . . . . . . . . . . . . 41
4.1.1. Preprocesado . . . . . . . . . . . . . . . . . . . . . . . 42
4.1.2. Partición del dataset . . . . . . . . . . . . . . . . . . . 43
4.1.3. Entrenamiento de la red de neuronas . . . . . . . . . . 44
4.2. Estructura del proyecto . . . . . . . . . . . . . . . . . . . . . . 45
4.3. Arquitectura de la Red de Neuronas . . . . . . . . . . . . . . . 46
5. Experimentación 47
5.1. Primer alcance: Speech Recognition . . . . . . . . . . . . . . . 47
5.2. Segundo alcance: Keyword Spotting . . . . . . . . . . . . . . . 49
5.2.1. Modelo 1 . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.2.2. Modelo 7 . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.2.3. Modelo 15 . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.2.4. Modelo 18 . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.2.5. Modelo 19 . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.2.6. Modelo 20 . . . . . . . . . . . . . . . . . . . . . . . . . 60
IV
5.2.7. Pruebas . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.3. Evaluación de resultados . . . . . . . . . . . . . . . . . . . . . 65
6. Conclusiones 66
7. Futuros Proyectos 68
7.1. Streams de audio con ruido . . . . . . . . . . . . . . . . . . . 68
7.2. Integración con una aplicación final . . . . . . . . . . . . . . . 69
7.3. Aumento del conjunto de comandos . . . . . . . . . . . . . . . 69
7.4. Comparativa de arquitecturas . . . . . . . . . . . . . . . . . . 70
Bibliografı́a 71
V
Índice de figuras
VI
2.12. Señal de audio tras aplicar el filtro de preénfasis. Fuente: Hayt-
ham Fayek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.13. Representación de la función de ventana de Hamming. Fuente:
Haytham Fayek . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.14. Representación de un banco de filtros en escala Mel. Fuente:
Haytham Fayek . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.15. Espectrograma de la señal de ejemplo. Fuente: Haytham Fayek 28
2.16. Representación de los MFCCs obtenidos de la señal de ejem-
plo. Fuente: Haytham Fayek . . . . . . . . . . . . . . . . . . . 29
2.17. Representación de los MFCCs normalizados. Fuente: Haytham
Fayek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
VII
Índice de tablas
VIII
Capı́tulo 1
Introducción
1
nes mediante comandos por voz, tales como búsquedas en Internet, agendar
eventos en el calendario o la creación de alarmas.
1.1. Objetivos
El objetivo de este proyecto es el diseño, implementación y entrenamiento
de una red de neuronas basada en LSTM que permita reconocer el comando
dictado, de 24 posibles, por un determinado locutor, tomando como entrada
un fichero de audio en formato WAVE.
2
La finalidad del proyecto es demostrar las capacidades de las celdas LSTM
para Keyword Spotting frente a las Redes de Neuronas Convolucionales (CNN ),
las utilizadas habitualmente para este tipo de aplicaciones.
Más allá de los problemas de visión, hay usuarios que tampoco pueden
hacer un uso normal de los dispositivos debido a problemas de psicomo-
tricidad o a otras formas de discapacidad fı́sica. Para todos estos usuarios,
la posibilidad de que un dispositivo reconozca una serie de comandos que
realicen determinadas acciones básicas les permite hacer uso de los mismos
sin depender de otra persona, haciéndoles ganar autonomı́a y mejorando su
calidad de vida.
3
Capı́tulo 2
Fundamentos teóricos
4
como aquellas cuya realización resulta simple para las personas y que, a su
vez, resultan difı́ciles de describir [1, 2].
5
2.3. Deep Learning
El Aprendizaje Profundo o Deep Learning es uno de los muchos posibles
enfoques del Machine Learning, como también lo son los árboles de decisión y
la agrupación (clustering), entre otros. Se basa en el entendimiento del mun-
do como una jerarquı́a de conceptos, permitiendo a las máquinas aprender
conceptos complejos en base a otros más simples con los que tengan relación.
Si representamos esta jerarquı́a de conceptos en forma de grafo obtenemos
uno de gran profundidad, en lo que respecta al número de capas, dando lugar
al nombre de Deep Learning [1].
6
Además, puede tener un número indefinido de capas ocultas.
7
secuencias de datos x1 , . . . , xn , permitiendo escalar la red a secuencias de
entrada de un tamaño mucho mayor del que puede resultar práctico para
redes sin esta especialización. Además, la mayorı́a de las redes recurrentes
permiten procesar secuencias de longitud variable [1].
8
su unidad atómica es la celda LSTM, a diferencia de las redes de neuronas
tradicionales cuya unidad atómica es la neurona.
9
Figura 2.3: Representación detallada de una celda LSTM.
Fuente: Colah’s blog
10
La capa sigmoide produce una salida con un valor entre 0 y 1, describien-
do en qué medida debe dejarse pasar el componente en cuestión, pudiendo
entender el valor como un porcentaje.
11
Figura 2.6: Representación de la capa forget gate. Fuente: Colah’s blog
input gate layer, y una capa tanh. La capa input gate, cuya función queda
definida en la ecuación (2.2), se encargará de determinar qué valores van a
ser actualizados.
12
Figura 2.7: Representación de las capas de actualización del cell state.
Fuente: Colah’s blog
hemos decidido añadir mediante la capa input gate de los posibles candidatos
obtenidos en la capa tanh.
Ct = ft ∗ Ct + it ∗ C̃t (2.4)
13
2.6.4. Generando la salida
Por último, debe determinarse la salida de la celda en función del cell state
y de la salida del estado anterior ht−1 , realizándose este proceso mediante 2
operaciones.
14
2.7. Aprendizaje supervisado
Una vez definidos todos los componentes de la arquitectura de la red de
neuronas, es necesario determinar la metodologı́a de aprendizaje a aplicar
para el entrenamiento de la misma. Podemos optar por aprendizaje supervi-
sado, no supervisado o por refuerzo.
Por la naturaleza de los datos con los que se realiza la ingesta, y a fin
de disminuir lo máximo posible el tiempo de entrenamiento, la opción más
adecuada de las 3 planteadas anteriormente es la del aprendizaje supervisado.
15
Este algoritmo parte de la salida obtenida por la red, y comienza a re-
ajustar los pesos propagando su error hacia atrás, de forma iterativa, hasta
llegar a la capa de entrada.
16
2.8.1. Tanh
17
cimiento de gradiente) y permite mantener contextos a largo plazo con un
coste de cómputo menor que tanh, reduciéndose notablemente el tiempo de
entrenamiento [8].
2.8.2. Softmax
2.9. Métricas
La construcción de un modelo de Machine Learning requiere de la aplica-
ción de métricas que nos permitan cuantificar los resultados obtenidos. Las
métricas a evaluar se eligen en base a la naturaleza del problema a resolver
y a las funciones de activación utilizadas, aunque se pueden distinguir dos
tipos de métricas que resultarán de interés, y que exponemos en esta sección.
2.9.1. Precisión
18
que el cociente entre aciertos y el total no sea suficiente para determinar la
calidad del desempeño del modelo.
2.9.2. Pérdida
19
mos es optimizar la evolución del descenso de gradiente, en la búsqueda de
la convergencia de la función de pérdida. El algoritmo a utilizar depende
de la naturaleza del problema, y de los hiperparámetros cuya modificación
consideremos de interés para optimizar los resultados.
2.10.1. Adagrad
20
2.10.2. Adam
2.11. Regularización
Las técnicas de regularización permiten mitigar el sobreentrenamiento
mediante la penalización de los modelos complejos, actuando sobre los datos
o sobre las conexiones de la red, en función de la técnica en cuestión. En esta
sección introducimos las dos técnicas de regularización que hemos valorado
durante el desarrollo del proyecto.
2.11.1. Dropout
21
Hemos recurrido a la técnica de Dropout en las capas LSTM de nuestro
modelo, tanto sobre las conexiones entre capas como sobre las conexiones
recurrentes, desechando un 20 % (valor por defecto) de las conexiones en
cada caso.
2.11.2. L2
22
A la hora de preprocesar los datos se puede optar por dos enfoques:
obtener los espectrogramas y diseñar una red que trabaje con imágenes con
entrada, o bien tratarlos como secuencias de vectores de números en coma
flotante (floats). Dado el objetivo perseguido por nuestro proyecto, se opta
por el segundo enfoque.
2.12.1. Preénfasis
23
Figura 2.11: Señal de audio contenida en un fichero WAVE.
Fuente: Haytham Fayek
2.12.2. Enmarcado
24
por lo que podemos aplicar la transformada de Fourier sobre estos marcos de
tiempo para obtener una buena aproximación de los contornos de frecuencia
de la señal mediante la concatenación de marcos adyacentes.
2πn
w[n] = 0,54 − 0,46 cos (2.9)
N −1
25
Figura 2.13: Representación de la función de ventana de Hamming.
Fuente: Haytham Fayek
|F F T (xi )2 |
P = (2.10)
N
26
2.12.5. Bancos de filtros de Escala Mel
f
m = 2595log10 (1 + ) (2.11)
700
f = 700(10m/2595 − 1) (2.12)
27
Podemos modelar los bancos de filtros mediante la ecuación (2.13).
0 k < f (m − 1)
k − f (m − 1)
f (m − 1) ≤ k < f (m)
f (m) − f (m − 1)
Hm (k) = 1 k = f (m) (2.13)
f (m + 1) − k
f (m) < k ≤ f (m + 1)
f (m + 1) − f (m)
0 k > f (m − 1)
28
2.12.6. Coeficientes Cepstrales en Frecuencias de Mel
(MFCCs)
29
2.12.7. Normalización
30
Capı́tulo 3
Herramientas
31
3.1. Dataset
Durante el diseño de un modelo de Machine Learning es fundamental
elegir correctamente el dataset a utilizar, pues influirá directamente en los
resultados obtenidos. En el caso del Procesado de Lenguaje Natural (NLP,
por sus siglas en inglés) los datasets reciben el nombre de corpus, debido a
la estrecha relación de este campo con la lingüı́stica.
32
(ASR, Automatic Speech Recognition).
33
Backward Learn Right
Down Left
Stop
Follow No
Up
Forward Off
Go On Yes
34
3.2.1. NumPy
3.2.3. Pandas
35
3.3. Librerı́as de Machine Learning
El auge del Deep Learning durante los últimos años ha propiciado la apa-
rición de diversas librerı́as que permiten el desarrollo de modelos de Machine
Learning de una forma mucho más simple, incluyendo incluso la implemen-
tación de los modelos más básicos y de los más utilizados.
3.3.1. SciKit-Learn
3.3.2. PyTorch
36
Usualmente, se utiliza como sustituta a NumPy para aprovechar la po-
tencia de cómputo de las GPUs, proporcionando integración con librerı́as de
aceleración de GPU como Intel MKL y NVIDIA CuDNN.
3.3.3. Theano
Destaca por su estrecha integración con NumPy a bajo nivel para sus
operaciones, ası́ como su optimización de uso de GPU y CPU, incrementando
el rendimiento para la computación intensiva de datos. Además, sus ajustes
de eficiencia y estabilidad permiten obtener resultados mucho más precisos,
incluso con valores muy pequeños.
3.3.4. TensorFlow
37
(Google Image Recognition).
3.3.5. Keras
Keras es una librerı́a que permite construir redes de neuronas a alto nivel,
de forma sencilla y minimalista. Está escrita en Python y permite trabajar
sobre Theano, TensorFlow y Microsoft Cognitive Toolkit (CNTK).
38
facilita el despliegue y mantenimiento del código, desde un principio se valoró
como la opción más adecuada para el desarrollo del proyecto.
39
3.6. Hardware
La elección del hardware, al contrario que el entorno de desarrollo, sı́
que influye de forma crı́tica en los resultados obtenidos en el proyecto. De él
dependerán la velocidad de procesamiento de los datos y de las operaciones
a realizar, ası́ como los recursos disponibles para el entrenamiento de la red
y la predicción con la misma. El hardware se ha elegido en función de los
recursos necesarios para cada etapa del proyecto.
40
Capı́tulo 4
Diseño
41
“backward”
Para abordar la solución del problema de una forma más eficiente, se opta
por dividirlo en problemas de menor complejidad, que definirán las diferentes
fases del proyecto. Estas fases se exponen en los siguientes subapartados.
4.1.1. Preprocesado
42
6. Cálculo de los Coeficientes Cepstrales en las Frecuencias de Mel (MFCC )
mediante la aplicación de la Transformada Discreta del Coseno (DCT ).
Al tratarse de un problema de Reconocimiento Automático del Habla
(ASR), nos interesa el contenido de los coeficientes cepstrales 2 a 13,
por lo que tendremos que trabajar con un total de 12.
43
(train/dev/test) pertenece cada fichero, para lo cual se utiliza una función
del código de ejemplo proporcionado en el repositorio de TensorFlow [24].
Una vez preprocesado y particionado el dataset, los datos están listos para
ser introducidos en la red de neuronas diseñada para solucionar el problema
de Keyword Spotting. La arquitectura de la red queda definida en la sección
3 de este capı́tulo.
Los pesos de las conexiones entre neuronas deben modificarse para que la
red se adapte al problema propuesto. Esta fase de modificación de los pesos
se conoce como entrenamiento, y generalmente se realiza apoyándose en el
algoritmo de retropropagación (backpropagation).
44
4.2. Estructura del proyecto
Debido a que los requerimientos de hardware de la fase de preprocesado
del dataset y de la de entrenamiento de la red de neuronas son diferentes,
se decidió separar el código de ambas. En adición a la necesidad de testear
el sistema completo, nuestro planteamiento da lugar a que el proyecto se
estructure en 3 notebooks de Jupyter:
45
4.3. Arquitectura de la Red de Neuronas
Para la creación de la arquitectura de nuestra red de neuronas hacemos
uso de 2 capas de 100 y 50 celdas LSTM [28], respectivamente, a modo de capa
de entrada en el caso de la primera y de capa oculta en la segunda. En ambas
se utilizará tanh como función de activación respetando el planteamiento
original de las celdas LSTM [5], además de aplicarse sobre ellas Dropout y
Dropout recurrente del 20 %. La capa de salida es una densamente conectada
[30] de 24 neuronas, una por cada posible clase (comando) a reconocer, todas
ellas con función de activación Softmax.
. . .
. . .
. . .
46
Capı́tulo 5
Experimentación
47
evaluar todas las posibles herramientas, arquitecturas y métricas de interés,
relacionados con las redes de neuronas de tipo LSTM [5, 6] para el desarrollo
del proyecto.
Tras unos meses trabajando con Common Voice se encontró una inciden-
cia reportada en la comunidad del proyecto, donde se exponı́a que el conjunto
de datos de entrenamiento (train) tenı́a solapamientos de frases y locutores
con los conjuntos de validación (dev) y test, lo que implica que cualquier
modelo basado en este corpus tenderá a sobreentrenar. El solapamiento de
frases se podı́a solucionar con un simple algoritmo de búsqueda para limpiar
los conjuntos, pero tras su aplicación quedaban únicamente 9 frases para
validación y 7 para test, insuficientes para obtener métricas de valor. No
obstante, aunque el número de frases hubiera sido suficiente, las métricas se-
guirı́an careciendo de valor por el solapamiento de locutores, que dificultarı́a
la generalización del modelo, y que no puede solucionarse salvo revisando de
forma manual el dataset.
48
cado que, a fecha de 3 de abril de 2018, el problema en la recolección está
resuelto. La resolución será efectiva para el lanzamiento de la versión 2 del
dataset, en la que se tomarán todos los datos de la versión 1 como conjunto
de entrenamiento.
49
destacar que esta implementación sólo funciona ejecutando sobre GPU y
TensorFlow, y que los datos de mejora de rendimiento proporcionados se
basan en afirmaciones del creador de Keras, François Chollet, sin haberse
aportado pruebas empı́ricas.
5.2.1. Modelo 1
50
miento. La primera, y la más grave, de las encontradas era relativa al formato
de entrada de los datos. La red no llegaba a iniciar el entrenamiento por una
contradicción entre el formato de entrada de los datos (2D) y el formato de
entrada esperado por la red (3D). Teóricamente, los datos de entrada debı́an
tener 3D, al tratarse de una matriz con una entrada por cada fichero, ca-
da una de ellas compuesta por una matriz de dos dimensiones: 98x12, 98
atributos de 12 MFCCs.
51
una lista. Al terminar el procesado de datos de entrada, se eliminaban las
posiciones pertinentes de la lista de objetivos (targets).
5.2.2. Modelo 7
52
Figura 5.1: Métricas del modelo 7.
Con los datos anteriores se puede concluir que, si bien se consigue au-
mentar la precisión de la red, esta no termina de aprender correctamente,
viéndose reflejado en los altos valores de la pérdida.
5.2.3. Modelo 15
53
El modelo 15 tiene 200 unidades en su capa CuDNNLSTM de entrada,
ası́ como en las 5 capas CuDNNLSTM ocultas, y 25 unidades en la capa
Dense de salida. Además, se decidió utilizar capas de Dropout [31], con una
ratio del 20 % (0,2), a modo de regularización para probar si tenı́an algún
efecto positivo en el entrenamiento de la red. Se ejecutó durante 17 epochs
antes de realizar una parada anticipada, donde se obtuvieron los resultados
mostrados en la tabla 5.2.
54
Figura 5.2: Métricas del modelo 15.
5.2.4. Modelo 18
55
’unknown’ contenı́a las 10 clases restantes del dataset, provocando que este
no estuviera equilibrado al haber muchas más muestras (samples) de esta
clase que del resto, lo que supone una causa del overfitting.
56
Figura 5.3: Métricas del modelo 18.
57
Figura 5.4: Métricas relativas del modelo 18.
5.2.5. Modelo 19
Tras concluir como fallidas todas las pruebas anteriores, mostrando so-
breentrenamiento y sin conseguir corregirlo, se vio la necesidad de aplicar
técnicas de regularización sobre las capas CuDNNLSTM. Se decidió comen-
zar aplicando un Dropout del 20 % (0,2), pero se observó que este sólo podı́a
aplicarse sobre la salida de cada capa LSTM hacia la siguiente, introduciendo
una capa Dropout [31] entre ellas.
58
al contrario que la CuDNNLSTM.
59
Figura 5.5: Métricas del modelo 19.
5.2.6. Modelo 20
60
Los resultados obtenidos quedan recogidos en la tabla 5.5. En esta ocasión,
la convergencia se alcanza con buenas métricas, por lo que concluimos que
el modelo es capaz de aprender y lo tomamos como una solución válida al
problema planteado.
En la figura 5.6 podemos observar los resultados del entrenamiento por las
gráficas generadas por TensorBoard. Estas gráficas se generan distribuidas en
61
el tiempo, a ello se deben las mesetas que se pueden observar en las mismas,
ya que el entrenamiento no se completó en una única ejecución debido a la
limitada disponibilidad del equipo utilizado.
62
5.2.7. Pruebas
En la tabla 5.6 podemos observar que, entre los 6 ficheros mal clasifica-
dos, 2 de ellos son del mismo locutor (37dca74f), y en ambos la predicción
es three. En futuras iteraciones del proyecto serı́a de utilidad analizar los
resultados en todos los ficheros de los locutores que aparecen en esta tabla,
63
Figura 5.8: Muestra de la salida de la ejecución de Test-app.ipynb.
pues recordemos que los ficheros han sido elegidos al azar, y esta coincidencia
con el locutor 37dca74f nos lleva a plantear la hipótesis de que algunos de
los fallos encontrados podrı́an deberse a pronunciaciones singulares, con poca
representación en el dataset.
64
5.3. Evaluación de resultados
Los resultados obtenidos, si bien no alcanzan el estado del arte, no se
alejan en exceso. Tomamos como referencia los resultados expuestos en el
paper de publicación de la versión 2 del dataset [23], donde se reporta una
precisión de test del 88,2 % al realizar entrenamiento y test con esa versión.
No obstante, cabe destacar que los resultados del paper original y los
obtenidos en este proyecto no son del todo equiparabales pues, en primer
lugar, el tipo de red de neuronas utilizado es diferente, al haber recurrido
a celdas LSTM frente a la red convolucional utilizada en el paper original,
donde se recurrió a la arquitectura ofrecida por defecto para Keyword Spotting
en TensorFlow [32]. Además, tampoco se han utilizado las mismas métricas,
ya que el paper original implementa caracterı́sticas que quedan fuera del
alcance de nuestro proyecto, al trabajar directamente sobre streams de audio,
utilizando como métrica Top-One Error en lugar de accuracy.
65
Capı́tulo 6
Conclusiones
66
de Pandas, arrays n-dimensionales de NumPy) con los resultados obtenidos
por la fase de preprocesado de audio.
67
Capı́tulo 7
Futuros Proyectos
68
7.2. Integración con una aplicación final
Tras añadir la capacidad de reconocimiento de los comandos en streams
de audio con ruido, el siguiente paso natural serı́a la integración del sistema
con una aplicación final en plataformas que pudieran resultar de interés, tales
como iOS y Android.
Este cambio de alcance podrı́a abordarse bien con un dataset más gran-
de, continuando con el planteamiento de Keyword Spotting, o bien retomar
el planteamiento de Reconocimiento Automático del Habla (ASR). Lo más
conveniente serı́a optar por el ASR, dado que nos permitirı́a reconocer tantos
comandos como quisiéramos, mejorando ası́ la escalabilidad del sistema; ası́
como por la disponibilidad de un mayor número de datasets.
69
7.4. Comparativa de arquitecturas
Con una finalidad más orientada a la investigación, serı́a deseable com-
parar con otros modelos los resultados obtenidos únicamente haciendo uso
de LSTM, una vez hayamos conseguido explotar al máximo su potencial.
Entre estos modelos, se podrı́a evaluar los resultados que se obtengan con
una combinación de LSTM con Redes de Neuronas Convolucionales (CNN),
en las que se basa la arquitectura del paper que hemos tomado como refe-
rencia [23, 32]; redes LSTM bidireccionales, en las cuales no sólo se tiene
en cuenta el contexto pasado (de estados anteriores) sino también el futuro
(estados siguientes) [33]; el desempeño de modelos de atención [25], o de las
más recientes Grid LSTM [34].
70
Bibliografı́a
[1] Goodfellow, I., Bengio, Y. and Courville, A. 2017. Deep learning. Cam-
bridge, Mass: The MIT Press.
[3] Iris Dataset. UCI Machine Learning Repository [en lı́nea]. [Consulta: 28-
05-2018]. Disponible en: http://archive.ics.uci.edu/ml/datasets/Iris.
[6] Colah, C. 2015. Understanding LSTM Networks. GitHub [en lı́nea]. [Con-
sulta: 19-02-2018]. Disponible en: http://colah.github.io/posts/2015-08-
Understanding-LSTMs/.
71
[8] A Beginner’s Guide to Recurrent Networks and LSTMs. Dee-
plearning4j.org [en lı́nea]. [Consulta: 10-05-2018]. Disponible en:
https://deeplearning4j.org/lstm.html.
[9] Duchi, J., Hazan, E., and Singer, Y. 2011. Adaptive Subgradient Methods
for Online Learning and Stochastic Optimization. Journal of Machine
Learning Research, 12, 2121-2159
[11] Kingma, D. P., and Ba, J. L. 2015. Adam: a Method for Stochastic Op-
timization. International Conference on Learning Representations, 1–13.
[13] Srivastava, N., Hinton, G., Krizhevsky, A., Sutskever, I. and Salakhutdi-
nov, R. 2014. Dropout: A Simple Way To Prevent Neural Networks from
Overfitting. Journal of Machine Learning Research, 15, 1929-1958.
72
[16] Garofolo, John S., et al. TIMIT Acoustic-Phonetic Continuous Speech
Corpus LDC93S1. Web Download. Philadelphia: Linguistic Data Consor-
tium, 1993.
[17] Garofolo, John, et al. CSR-I (WSJ0) Sennheiser LDC93S6B. Web Down-
load. Philadelphia: Linguistic Data Consortium, 1993.
[20] Panayotov, V., Chen, G., Povey, D., and Khudanpur, S. 2015. Libris-
peech: an asr corpus based on public domain audio books. In Acoustics,
Speech and Signal Processing (ICASSP), 2015 IEEE International Con-
ference, pp. 5206-5210. IEEE.
[22] Mozilla Common Voice Dataset [en lı́nea]. [consulta 17-02-2018]. Dispo-
nible en: http://voice.mozilla.org/.
73
[24] Repositorio de Speech Commands para TensorFlow en GitHub, fichero
input data.py. GitHub [en lı́nea]. [consulta 18-04-2018]. Disponible
en: https://github.com/tensorflow/tensorflow/blob/master/tensorflow
/examples/speech commands/input data.py.
[25] Chan, W., Jaitly, N., Le, Q. V., and Vinyals, O. 2015. Listen, Attend
and Spell. arXiv:1508.01211
[26] Soltau, H., Liao, H., Sak, H. 2016. Neural Speech Recognizer: Acoustic-
to-Word LSTM Model for Large Vocabulary Speech Recognition. ar-
Xiv:1610.09975
[27] Graves, A., Fernández, S., Gomez, F., and Schmidhuber, J. 2006. Con-
nectionist Temporal Classification: Labelling Unsegmented Sequence Da-
ta with Recurrent Neural Networks.
74
[32] Sainath, T. N. and Parada, C. 2015. Convolutional Neural Net-
works for Small-Footprint Keyword Spotting. Sixteenth Annual Con-
ference of the International Speech Communication Association.
[en lı́nea]. [Consulta: 10-05-2018]. Disponible en: https://www.isca-
speech.org/archive/interspeech 2015/papers/i15 1478.pdf.
[34] Kalchbrenner, N., Danihelka, I. and Graves, A. 2015. Grid Long Short-
Term Memory.
75