Dejame empezar por el principio. La forma estándar de calcular cepstrum es la siguiente:
C( x ( t ) ) = F- 1[ log( F[ x ( t ) ] ) ]
En el caso de los coeficientes MFCC, el caso es un poco diferente, pero sigue siendo similar.
Después de pre-énfasis y ventanas, calcula el DFT de su señal y aplica el banco de filtros de los filtros triangulares superpuestos, separados en escala mel (aunque en algunos casos la escala lineal es mejor que mel):
Con respecto a la definición de cepstrum, ahora representó la envoltura del espectro (espectro reducido) en la escala de frecuencia de mel. Si representa eso, verá que se parece a su espectro de señal original.
El siguiente paso es calcular el logaritmo de los coeficientes obtenidos anteriormente. Esto se debe al hecho de que se supone que el cepstrum es una transformación homomórfica que separa la señal de la respuesta al impulso del tracto vocal, etc. ¿Cómo?
s ( t )h ( t )
s^( t ) = s ( t ) ⋆ h ( t )
En el dominio de frecuencia, la convolución es una multiplicación de espectros:
S^( f) = S( f) ⋅ H( f)
Iniciar sesión( a ⋅ b ) = log( a ) + log( b )
También esperamos que la respuesta al impulso no cambie con el tiempo, por lo que puede eliminarse fácilmente restando la media. Ahora ves por qué tomamos los logaritmos de las energías de nuestra banda.
F- 1ifft
Así que ahora ves que ahora es bastante difícil entender cómo se veía el espectro original. Además, generalmente solo tomamos los primeros 12 MFCC, ya que los más altos describen cambios rápidos en las energías de registro, lo que generalmente empeora la tasa de reconocimiento. Entonces, las razones para hacer DCT fueron las siguientes:
Originalmente debe realizar IFFT, pero es más fácil obtener los coeficientes reales de DCT. Además, ya no tenemos espectro completo (todos los contenedores de frecuencia), sino coeficientes de energía dentro de los bancos de filtros de mel, por lo tanto, el uso de IFFT es un poco exagerado.
Verá en la primera figura que los bancos de filtros se superponen, por lo que la energía de unos al lado del otro se está distribuyendo entre dos: DCT permite relacionarlos. Recuerde que esta es una buena propiedad, por ejemplo, en el caso de los modelos de mezcla gaussiana, donde puede usar matrices de covarianza diagonal (sin correlación entre otros coeficientes), en lugar de las completas (todos los coeficientes están correlacionados), esto simplifica mucho las cosas.
Otra forma de descorrelacionar los coeficientes de frecuencia de mel sería PCA (análisis de componentes principales), técnica utilizada exclusivamente para este propósito. Para nuestra suerte, se demostró que DCT es una muy buena aproximación de PCA cuando se trata de señales de descorrelación, de ahí otra ventaja de usar la Transformación discreta de coseno.
Alguna literatura:
Hyoung-Gook Kim, Nicolas Moreau, Thomas Sikora - MPEG-7 Audio and Beyond: indexación y recuperación de contenido de audio