Estoy estudiando el reconocimiento de voz, en particular el uso de MFCC para la extracción de características. Todos los ejemplos que he encontrado en línea tienden a graficar una serie de MFCC extraídos de un enunciado particular de la siguiente manera (gráfico generado por mí desde el software que estoy escribiendo):
Como puede ver en el gráfico anterior:
- el eje x se usa para cada uno de los coeficientes MFC (de 1 a 12 en este ejemplo)
- el eje y se usa para los valores de los coeficientes (que varían aproximadamente de -12 a 42 en este ejemplo)
- tiene tantas líneas como cuadros o vectores de características que ha extraído (140 en este ejemplo).
Ahora, esto no tiene mucho sentido para mí, porque lo que estamos viendo aquí, es la superposición de todos los vectores de características a la vez, perdiendo información en cualquier momento. Me está costando entender cómo es útil esta representación.
En mi opinión, representaría los vectores extraídos de la siguiente manera (nuevamente, gráfico generado por mí):
En el gráfico de arriba:
- el eje x es el número de cuadro o vector (1 a 140)
- el eje y son los valores de los coeficientes (nuevamente, de -12 a 42 aprox)
- tiene una línea para cada función (12).
Para mí, esta representación debería ser más útil porque puede ver la evolución en el tiempo de cada característica en particular, y en mi opinión eso debería tener un impacto más fuerte sobre cómo aplicar algoritmos de comparación en palabras habladas.
Tal vez las dos representaciones son igualmente válidas y útiles para diferentes propósitos, muy parecido a cuando se necesita estudiar una señal en el dominio del tiempo o en el dominio de la frecuencia, pero en el caso del reconocimiento de voz, esperaría la evolución en el tiempo de cada individuo. característica para ser más significativo que la densidad de valores para cada característica (y tal vez estoy completamente equivocado: P).
Entonces, dos preguntas de hecho:
- ¿Por qué la primera representación es la que parece ser ampliamente utilizada y no la segunda?
- Cuando desea comparar dos conjuntos de MFCC extraídos, por ejemplo, utilizando Dynamic Time Warping - DTW, y relacionado con este tema, ¿compara los vectores de características (es decir, 140 vectores de 12 características) o los cuadros (12 vectores de 140 cuadros )? (en otras palabras, MxN o NxM?)
¡Gracias!
fuente
Respuestas:
La forma en que siempre se usan los MFCC es introduciéndolos en el clasificador. Esto se puede hacer cuadro por cuadro (
12x1
vector) o concatenando (12xN
), lo mismo que un espectrograma.Por lo tanto, para DTW, debe realizar la clasificación calculando la distancia entre los vectores 12D. Es una deformación dinámica del tiempo , por lo que la diferencia debe calcularse entre cuadros en el dominio del tiempo , no entre muestras en un "dominio de una sola característica".
Aquí hay una representación gráfica de eso:
Solo un apéndice sobre el trazado de MFCC. No tiene sentido mirar la gráfica de línea de todos los vectores MFCC apilados juntos (primera imagen), y no es realmente útil observar la evolución temporal de todos los MFCC (segunda imagen). No existe un concepto de representación gráfica correcta para los MFCC a menos que desee lograr algo específico.
En primer lugar, se puede trazar una distribución (histograma) de cada MFCC para ver cuáles son los valores típicos, etc. Especialmente si tiene un modelo GMM entrenado para una señal, puede trazar la distribución de la muestra de prueba y superponerla con un PDF de GMM en esa dimensión
El segundo enfoque sería trazar los MFCC de manera similar a un espectrograma (como se muestra en la imagen de arriba). Uno podría querer usarlo para "una buena representación" o para ver las tendencias y patrones generales. Pero es casi imposible saber qué tipo de señal se esconde detrás de tal representación.
Por ejemplo, aquí hay un diagrama MFCC de una señal muy simple. ¿Qué señal es esa? Si está listo, pase el espacio amarillo.
¿Fue fácil saberlo? Definitivamente, al mirar el espectrograma fue inmediatamente obvio. Tal vez hay pocas personas que adivinaron ya que jugaron con tales ejemplos antes. Ahora algo más complicado:
Listo?
Apenas creo que esta representación de MFCC sea de alguna utilidad, excepto llenar el espacio. Ahora pocas personas pueden adivinar la señal basada en un espectrograma, pero es imposible hacerlo mirando los MFCC.
Entonces, si alguien le dice que puede decir lo que está sucediendo con la señal basada en "ajustes de coseno des-correlacionados de las energías logarítmicas dentro de los bancos de filtros triangulares en el dominio de la frecuencia", entonces es un mentiroso (con un antecedente de99.9% ) o una computadora. Muy raramente hay ocasiones en las que es útil mirar los valores de MFCC sin procesar, como la depuración y la verificación de la cordura (son coeficientes constantes para la señal estacionaria).
fuente