# MFCC

Los Mel Frequency Cepstral Coeﬃcients (Coeﬁcientes Cepstrales en las Frecuencias de Mel) o MFCCs son coeﬁcientes para la representación del habla basados en la percepción auditiva humana. Estos surgen de la necesidad, en el área del reconocimiento de audio automático, de extraer características de las componentes de una señal de audio que sean adecuadas para la identificación de contenido relevante, así como obviar todas aquellas que posean información poco valiosa como el ruido de fondo, emociones, volumen, tono, etc. y que no aportan nada al proceso de reconocimiento, al contrario, lo empobrecen.
Los MFCCs son una característica ampliamente usada en el reconocimiento automático del discurso o el locutor y fueron introducidos por Davis y Mermelstein en los años 80 y han sido el estado del arte desde entonces.
MFCCs se calculan comúnmente de la siguiente forma:
* Separar la señal en pequeños tramos.
* A cada tramo aplicarle la Transformada de Fourier discreta y obtener la potencia espectral de la señal.
* Aplicar el banco de filtros correspondientes a la Escala Mel al espectro obtenido en el paso anterior y sumar las energías en cada uno de ellos.
* Tomar el logaritmo de todas las energías de cada frecuencia mel.
* Aplicarle la transformada de coseno discreta a estos logaritmos.
Estos valores obtenidos son los coeficientes que buscamos. Aunque opcionalmente se le pueden añadir otros valores como los deltas y/o los delta-deltas.

## Explicación

El primer paso es consecuencia de que toda señal de audio, grabada en condiciones normales, cambia constantemente en el tiempo, lo cual dificulta enormemente la extracción de características que la puedan diferenciar de otras señales o la identifiquen como similar a aquellas que claramente lo son para un ser humano. Debido a esto y con el objetivo de simplificar su tratamiento se asume que en pequeños períodos de tiempo sus características no cambian “mucho” y, por tanto, se le pueden realizar todo un conjunto de procesamientos con el objetivo de extraer características “estáticas” para cada pequeño tramo de la señal. Las cuales, en su conjunto, representarían a la señal completa. Los pasos que siguen a continuación pueden tener dos interpretaciones diferentes, pero ambas válidas: mediante la técnica de deconvolución y como una aplicación de filtros adaptados a las especificidades del discurso. Veamos cada una de ellas.

### Técnica de deconvolución

Para entender esta aproximación es necesario conocer un poco de las bases del modelo de producción de sonido en los humanos y en gran parte del reino animal. A dicho modelo se le denomina con frecuencia como: source-filter (fuente-filtrado).
* Fuente: El sonido que generamos está íntimamente relacionado con el aire que expulsamos desde nuestros pulmones. Si dicho sonido es no vocalizado, como la “s” o la “f” la Glotis se abre y las cuerdas vocales se encuentran relajadas. Mientras que si el sonido es vocalizado como la “a” o la “e”, entonces las cuerdas vocales vibran y la frecuencia de esta vibración se relaciona con el Tono (agudo o grave). Es por eso que al sonido puro de letras como “s” o la “f” no podemos darles tonos graves o agudos sin antes incorporarles el sonido de otras letras sonoras. Nótese que el tono no es lo mismo que la amplitud o Intensidad de sonido, que sí se encuentra presente en ambas, pues se relaciona con la cantidad de aire expelido.
* Filtrado: Se podría decir que es en esta parte del proceso donde realmente se genera el sonido, ya que la gran variedad de sonidos que conocemos no sería posible si los órganos del tracto vocal no le dieran “forma” al espectro del sonido que proviene de nuestros pulmones y que pasa a través de la glotis. Es por eso que debemos poner la lengua, los dientes o la boca de ciertas maneras específicas para provocar ciertos sonidos específicos.
Dicho esto, es fácil notar que el trabajo que debemos realizar sobre la señal debe ir encaminado a hacer desaparecer la influencia de la fuente. No obstante, esto es más complicado de lo que parece, pues ambas señales (la de la fuente y el filtrado) se encuentran en Convolución y forman la señal que escuchamos. Afortunadamente, el Teorema de convolución plantea que si:
$$ $h(t)=s(t)*f(t)$ $$
Donde la operación $*$ significa convolución; $h(t)$ es la señal de audio que escuchamos; $s(t)$ es la señal de la fuente y $f(t)$ es la del filtrado. Entonces se cumple:
$$ $H(w)=S(w)F(w)$ $$
Donde $H,$ $S$ y $F$ son las Transformadas de Fourier de las funciones correspondientes. Se le puede aplicar la escala de Mel a $H(w)$ (por las mismas razones que veremos durante la segunda interpretación) y a continuación se lleva a logaritmo la función anterior para obtener una relación entre la fuente y el filtrado más fácil de deshacer:
$$ $log(H(w))=log(S(w))+log(F(w))$ $$
Si en este punto filtrásemos las bajas frecuencias correspondientes a la fuente y seguidamente aplicamos la transformada de coseno discreta (DCT, por sus siglas en inglés) o lo que es lo mismo, aplicamos directamente la DCT y descartamos sus términos de alta frecuencia. Obtendríamos la señal (aunque debemos recordar que no es exactamente $f(t)$) del filtrado.

### Filtros adaptados al discurso

Esta segunda interpretación es mucho más intuitiva y antropomórfica que la anterior, ya que la razón por la que primeramente aplicamos la Transformada de Fourier y luego llevamos el espectro a la escala de Mel es para concordar con el órgano humano responsable de determinar la frecuencia de un sonido: la Cóclea. No obstante, este órgano no es lo suficientemente sensible como para notar un crecimiento lineal en las frecuencias, sino que más bien detecta regiones de frecuencia, las cuales a su vez se van haciendo más grandes a medida que la frecuencia aumenta. O sea que poseemos más sensibilidad al determinar sonidos graves que agudos. Al aplicar los filtros de Mel se obtienen las energías de cada una de estas regiones en la señal actual y, por tanto, el espectro de frecuencias con el que el sistema está trabajando es similar al de los humanos al escuchar el mismo sonido.
Dado que los humanos tampoco escuchamos la intensidad de un sonido con un crecimiento lineal, sino logarítmico (en Decibel), entonces se hace necesario aplicarle el logaritmo a las energías antes obtenidas, pues estas son los valores de la intensidad de los componentes de la señal con frecuencias en esa región.
Por último, debe observarse que al aplicar la DCT sobre esta función, que dicho sea de paso se encuentra en el dominio de la frecuencia, se realiza el proceso inverso al aplicado durante la transformación inicial, y se obtendría la señal original de no ser por los cambios que se le han hecho a esta para que se parezca a lo que escuchamos los humanos. Así que al aplicar la DCT se puede pensar que los valores que se obtienen serían los valores de la misma señal, pero escuchados por un humano.
Solo queda una incógnita y es por qué aplicar la DCT en vez de la Inversa de la Transformada Discreta de Fourier. En este caso, para ambas interpretaciones la razón es enteramente matemática, ya que la DCT posee características de compresión y decorrelación muy útiles (véase la transformada de coseno discreta).

## Delta y Delta-deltas

Aunque los MFCCs describen adecuadamente las características estáticas de cada uno de los pequeños tramos en que dividimos la señal. Es indiscutible que esta también posee características dinámicas de vital importancia para la detección correcta del sonido. Como, por ejemplo, el uso de una secuencia específica de fonemas que sirven para especificar una palabra dada. O incluso dentro de un mismo fonema hay cambios típicos que de ser tenidos en cuenta pueden mejorar enormemente la detección del sistema.
Es por esto que a los vectores de coeficiente MFCCs se les añade la velocidad a la que estos cambian entre los tramos en que se dividió la señal, así como su aceleración. O sea, que si se tiene un vector de 12 MFCCs se terminaría con uno de longitud 36, ya que se adicionan 12 para la velocidad y 12 más para la aceleración.

## Aplicaciones

Los MFCCs suelen emplearse características en sistemas de Reconocimiento del habla, como los empleados en el reconocimiento de números dictados por voz. También se aplican en sistemas de Reconocimiento de locutores, cuya función es el reconocimiento de personas por medio de la voz.
Cada vez más, se empiezan a descubrir otras aplicaciones en el campo de la Recuperación de información musical (music information retrieval) como por ejemplo la clasificación de géneros, medidas de similitud de audio, etc.

## Sensibilidad al ruido

Los valores del MFCCs no son muy robustos ante la presencia de ruido aditivo, por ello es común la normalización de los valores en los sistemas de reconocimiento de locutor para reducir la influencia de dicho ruido. Algunos investigadores proponen modificar el algoritmo básico para hacerlo más robusto, por ejemplo, aumentando las amplitudes de los logaritmos en la Escala Mel a un valor apropiado (en torno a 2 o 3) antes de aplicar la DCT, reduciendo así la influencia de las componentes de baja potencia.