Estoy tratando de comparar 2 muestras de voz y calificarlas en similitudes. Piense en alguien que intenta repetir una frase y luego compara esos 2 archivos de audio.
Comencé implementando el algoritmo MFCC (http://en.wikipedia.org/wiki/Mel-frequency_cepstrum). Calculo los MFCC de ambas muestras de audio, lo que me da aproximadamente 500 cuadros de audio (a 10 ms cada uno, con una superposición del 30% del anterior) con 14 o más coeficientes MFCC. Entonces, una matriz de 500x14 para cada señal de audio.
Luego hago el enfoque ingenuo de simplemente diferenciar las matrices. Esto no da resultados muy prometedores. La mitad de las veces cuando comparo muestras de audio completamente diferentes (donde se hablan frases diferentes), obtengo menos diferencia que comparar el audio donde trato de repetir la misma frase. Esto es claramente al revés y no me puede dar un buen algoritmo de puntuación.
¿Cómo puedo mejorar esto? Pensé que los MFCC eran una parte realmente importante del procesamiento del habla, aunque claramente necesito hacer más con él.
Respuestas:
Primero, tendrá que corregir las diferencias en el tiempo. Por ejemplo, si un enunciado es "--heeelloooo ---" y el otro "hellooooooo ----" (- que representa el silencio), una comparación directa por pares de marcos MFCC mostrará diferencias simplemente porque las dos muestras no están alineadas. Puede usar la deformación dinámica del tiempo para encontrar la mejor alineación entre las dos secuencias de vectores de características y calcular la distancia correspondiente.
El segundo problema es que si las dos grabaciones no son del mismo orador, tendrá que compensar las diferencias en el timbre. ¡El MFCC de una mujer que dice "aaa" no es lo mismo que el MFCC de un orador que dice el mismo fonema! Un modelo relativamente simple para tener en cuenta las variaciones en el timbre de voz es suponer que existe una transformación lineal.Γ que "mapea" los MFCC de un hablante en los MFCC de otro hablante (para ser justos, solo un pequeño subconjunto de estos transformadores modela con precisión cómo los parámetros cambiantes como edad, género, etc. "desplazan" el MFCC). Una vez que se han alineado dos grabaciones, incluso aproximadamente, puede usar un procedimiento de mínimos cuadrados para estimarΓ . Este procedimiento se conoce como normalización del altavoz o adaptación del altavoz.
Su procedimiento de comparación consistirá en los siguientes pasos.UNA y si son tus secuencias originales de MFCC.
Una última cosa que me viene a la mente es que debe descartar el primer coeficiente MFCC (que expresa aproximadamente el volumen de la señal) para mejorar la capacidad de su sistema para que coincida con las declaraciones pronunciadas a un nivel de volumen / grabación diferente.
fuente