¿Es esta una interpretación correcta del paso DCT en el cálculo de MFCC?


9

Esta es una continuación de la discusión aquí . Yo comentaría allí, pero no tengo 50 repeticiones, así que estoy haciendo una nueva pregunta.

Así es como entiendo el paso DCT en el proceso de cálculo de MFCC: la razón detrás de esto es separar la correlación en las magnitudes logarítmicas espectrales (del banco de filtros) debido a la superposición de los filtros. Esencialmente, el DCT suaviza la representación del espectro dada por estas magnitudes log-espectrales.

¿Sería correcto decir que la línea azul en la imagen a continuación representa el espectro representado por el vector de las magnitudes log-espectrales, y la línea roja es ese vector una vez que ha sido DCT?

¿Magnitudes log-espectrales controladas por DCT (es decir, MFCC) frente a magnitudes meramente espectrales logarítmicas?


¿Dónde puedo descargar su código para probarlo?
auraham

La imagen de abajo? No hay imagen en la publicación.
Eric Platon

Respuestas:


16

Dejame empezar por el principio. La forma estándar de calcular cepstrum es la siguiente:

C(X(t))=F-1[Iniciar sesión(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):

ingrese la descripción de la imagen aquí

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(unasi)=Iniciar sesión(una)+Iniciar sesión(si)

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

ingrese la descripción de la imagen aquí

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


1
¿Por qué no podemos tomar el valor absoluto de los números complejos del IFFT? Si los números complejos son mucho más difíciles de manejar, ¿por qué alguna vez tomamos el IFFT al calcular un cepstrum y no siempre hacemos el DCT? Gracias por la explicación. Esa cifra fue particularmente útil.
acannon828

1
@ acannon828: Vea los últimos 3 puntos de mi respuesta editada. Espero que ahora lo explique todo.
jojek

Gran respuesta ... Cualquier literatura que pueda adjuntar a esto.
Bob Burt el

1
@BobBurt: ¡Ahí tienes!
jojek

Gracias por el libro La mayoría de las cosas parecen explicarse en eso. ¿El libro también cubre la teoría sobre el tracto vocal? Parece que no puedo encontrar nada relacionado con eso.
Bob Burt el

3

Más que suavizar el DCT reduce el número de dimensiones necesarias para representar el espectro. DCT es bueno para la reducción de la dimensionalidad porque tiende a compactar la mayor parte de la energía del espectro en los primeros coeficientes.


Gracias. Esto me ayudó a entender lo que @pichenettes quería decir con reducción de dimensionalidad.
acannon828

3

La razón detrás de esto es separar la correlación en las magnitudes log-espectrales (del banco de filtros) debido a la superposición de los filtros. Esencialmente, el DCT suaviza la representación del espectro dada por estas magnitudes log-espectrales.

Esto es incorrecto. Existe una correlación entre las magnitudes logarítmicas espectrales no solo porque se superponen, sino también porque ninguna secuencia de números representa una serie "significativa" (como ocurre en el habla y sonido natural) de la magnitud logarítmica espectral. Las magnitudes log-espectrales "significativas" tienden a ser bastante suaves, con una disminución general de la energía en las frecuencias más altas, etc. Se podría decir que la dimensión del espacio de todos los vectores de magnitud log-espectrales "significativas" es menor que 40 o la cantidad de bandas que use; y el DCT puede verse como una reducción de dimensionalidad para mapear los datos de 40 canales en este espacio más pequeño.

Esencialmente, el DCT suaviza la representación del espectro dada por estas magnitudes log-espectrales.

El DCT no suaviza. Verá suavizado al reconstruir a partir de los datos de DCT: el suavizado se debe a la pérdida de información por parte del DCT y al truncamiento del coeficiente que sigue.

Pero los coeficientes MFCC no almacenan el espectro suavizado, sino que almacena una secuencia de coeficientes DCT no correlacionados.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.