2010-05-11 18 views
8

Dadas dos voces grabadas en formato digital, ¿hay un algoritmo para comparar las dos y devolver un coeficiente de similitud?Algoritmo para comparación de voz

+4

¿Estás tratando de determinar si el _speakers_ son iguales o similares, o si _speech en sí mismo_ es el mismo o similar ... o ambos? –

+0

Lamento que no haya aclarado esto: se prefiere a los hablantes independientes. Estoy buscando la similitud de _speech_ _itself_. – ohho

Respuesta

0

No estoy seguro de que esto funcionará para archivos de sonido, pero le da una idea de cómo proceder, espero. Esa es una forma básica de cómo encontrar un patrón (imagen) en otra imagen.

Primero tiene que calcular el fft de ambos archivos de sonido y luego hacer una correlación. En formular que se vería así (pseudocódigo):

fftSoundFile1 = fft(soundFile1); 
fftConjSoundFile2 = conj(fft(soundFile2)); 
result_corr = real(ifft(soundFile1.*soundFile2)); 

Cuando FFT = transformada rápida de Fourier, IFFT = inversa, conj = complejo conjugado. La fft se realiza en los valores de muestra de los archivos de sonido. Los picos en el vector result_corr le darán las posiciones de alta correlación. Tenga en cuenta que ambos archivos de sonido deben en este caso ser del mismo tamaño; de lo contrario, debe colocar el más corto en un archivo de vector max (soundFileLength).

Saludos

Editar:. * Medios (estilos de Matlab) un componente mult sabia, que no debe hacer un vector de mult! Siguiente edición: Tenga en cuenta que debe operar con números complejos, pero existen varias clases complejas por lo que creo que no tiene que preocuparse por esto.

+1

Esto ni siquiera se acerca a ser una solución funcional. El espectro del discurso es variable en el tiempo y ruidoso. En realidad, solo puedes hacer algo como esto para un segmento muy pequeño del discurso en el que el hablante dice, p. la misma vocal, y aun así probablemente no funcionará muy bien, si es que lo hace. –

+0

Disculpe, no soy un "experto en el habla", pero pensé que para un simple "cómo son los archivos de sonido therse" estaría bien para un primer acercamiento, debido al hecho de que funciona con imágenes. – InsertNickHere

4

Dada su aclaración, creo que lo que está buscando cae bajo speech recognition algorithms.

Aunque solo está buscando la medida de la similitud y no intenta convertir el habla en texto, los conceptos son los mismos y no me sorprendería si una gran parte de los algoritmos fuera bastante útil.

Sin embargo, usted tendrá que definir este coeficiente de similitud más formal y preciso para llegar a cualquier parte.

EDIT: Creo que los algoritmos de reconocimiento de voz serían útiles porque hacen la abstracción del sonido y la comparación con algunas formas conocidas. Conceptualmente, esto podría no ser tan diferente de tomar dos grabaciones, abstraerlas y compararlas.

De artículo de Wikipedia sobre HMM

"En reconocimiento de voz, el oculto modelo de Markov haría salida una secuencia de los vectores de valor real n-dimensional (siendo n un entero pequeño, tal como 10), la salida de uno de estos cada 10 milisegundos. los vectores serían constar de coeficientes cepstrales, que se obtienen mediante la adopción de un Fourier transformada de una ventana de tiempo corto de habla y descorrelación el espectro usando una transformación de coseno, luego tomando los primeros (más significativos) coeficientes ."

lo tanto, si se ejecuta un algoritmo en ambas grabaciones que acabaría con coeficientes que representan las grabaciones y que podría ser mucho más fácil de medir y establecer similitudes entre los dos.

Pero de nuevo ahora Llegar a la cuestión de definir el "coeficiente de similitud" y la introducción de perros y caballos realmente no ayudaron.

(Bueno, lo hace un poco, pero en términos de evaluar algoritmos y elegir uno sobre otro, tendrá que hacerlo mejor).

+0

No voy a obtener ningún _meaning_ de la fuente de sonido. Como ejemplo, si registro dos ladrido de perro y un caballo relincha, la comparación de los dos ladridos de perro debería dar un coeficiente _highher_ que la comparación de un ladrido con un relincho. – ohho

+0

@Horace Ho, respondió en el EDIT como parte de la respuesta – Unreason

4

I rec recomiendo echar un vistazo al kit de herramientas HTK para reconocimiento de voz http://htk.eng.cam.ac.uk/, especialmente la parte sobre extracción de características.

Características que iba a asumir para ser buenos indicadores:

  • coeficientes Mel-Cepstrum (timbre general)
  • LPC (para los armónicos)
+0

+1 para el enlace – Unreason

+0

¿La licencia (http://htk.eng.cam.ac.uk/docs/license.shtml) permite el uso del kit de herramientas para otra aplicación para distribución? – ohho

+0

Por lo que recuerdo, es extremadamente restrictivo. Sin embargo, también puedes probar http://clam-project.org/, que es software libre. Encontrarás una implementación eficiente de los algoritmos de extracción de características proporcionados por HTK (y algunos más). – miquelramirez

Cuestiones relacionadas