¿Cómo comparar dos archivos de audio?

2

Tengo dos archivos de audio WAV de voz grabados que grabé diciendo "Buenos días" dos veces.

Quiero comparar los dos archivos de audio y decir que ambos son idénticos.

¿Cómo puedo hacer eso?
¿Cuál es el enfoque correcto para lograr esto?

    
pregunta Warrior

5 respuestas

3

Estoy de acuerdo con los comentarios acerca de cómo esta pregunta es muy difícil de responder en esta comunidad, pero me gustaría proporcionar algunos de los métodos más simples para que los estudies. En última instancia, un sistema bueno y robusto requerirá el uso de muchas técnicas diferentes y muchas horas. Esta es la razón por la cual hay toneladas y toneladas de dinero en reconocimiento de voz, y como usted puede saber, todavía no es excelente.

En general, las personas hablarán dentro del mismo rango de frecuencia cada vez que digan una palabra de comando. Si observa el dominio de frecuencia de su señal, puede registrar qué rango se utilizó cuando la persona grabó su palabra de comando y luego buscarla en el futuro. Puede acceder al dominio de la frecuencia con FFT, wikipedia y algunas búsquedas en Google pueden ayudarlo con lo que esto significa y cómo hacerlo.

Puede expandir el método de frecuencia para determinar cuál es la frecuencia para cada parte de la palabra. Por ejemplo, algunas personas aumentarán el tono de su voz cuando terminen una palabra. Esta podría ser otra "firma" a tener en cuenta.

También las personas generalmente hablarán a la misma velocidad para la misma palabra de comando. Para esto, puede observar la amplitud de su señal para determinar cuánto les tomó decir cada palabra e incluso la pausa entre dos palabras. Luego puedes comparar estas pausas con tu señal futura.

Una vez más, estos son solo algunos métodos básicos, pero deberían darle una idea del tipo de cosas que se pueden hacer.

    
respondido por el Kellenjb
2

Intente buscar métodos AI en el procesamiento de audio, y posiblemente wavelets. También use Matlab para desarrollar sus algoritmos antes de intentar codificarlo dentro de una aplicación.

    
respondido por el smashtastic
2

Lee sobre las huellas digitales de audio: enlace

Vea algunos ejemplos de código fuente abierto: enlace

Es un problema no trivial.

    
respondido por el Toby Jaffey
2

Podría considerar la integración de un módulo de reconocimiento de voz en su proyecto.

Módulo de reconocimiento de voz Tigal

Pero supongo que depende de qué resultados obtengas, el reconocimiento de voz de IMO sigue siendo bastante básico, uno de los primeros problemas es diferenciar el sonido ambiental de los comandos vocales: la mejor solución actual es cuando la persona que emite los comandos ha estado cerca del micrófono. Ed con unos auriculares tipo Madonna.

Ah ... me trae recuerdos de mi primer Macbook, pasé la primera semana o así gritando "Mac ....... ¡Qué hora es!" solo para que se dé la vuelta y responda "..... safari de apertura" - o alguna otra operación no relacionada.

    
respondido por el Jim
-1

Estoy usando una función javascript para comparar un archivo de audio. Al utilizar la misma lógica, puede comparar cualquier archivo en cualquier idioma.

function compireAudio(){ 
var audio1 = "http://soundjax.com/reddo/86502%5Ealarm.mp3"; 
var audio2 = "http://soundjax.com/reddo/44368%5EALARME.mp3";
var i,j,d;
var matching = 0;
var t = 0;var i,j,d;
var matching = 0;
var t = 0;
var audio1Arr = Array();
var audio1Len = audio1.length;
for (i = 1; i<=audio1Len; i++)
{
    //reverse so its like a stack
    d = audio1.charCodeAt(audio1Len-i);
    for (j = 0; j < 8; j++) 
    {
        audio1Arr.push(d%2);
        d = Math.floor(d/2);
    }
}
var audio2Len = audio2.length;
for (i = 1; i<=audio2Len; i++)
{
    //reverse so its like a stack
    d = audio2.charCodeAt(audio2Len-i);
    for (j = 0; j < 8; j++) 
    {
        if(d%2 == audio1Arr[t])
        {
            matching++;
        }
        d = Math.floor(d/2);
        t++;
    }
}
var avarage = Number(matching)/((Number(t)+Number(audio1Arr.length))/Number(2))*Number(100);
alert('The Matching with the two audio is '+avarage+' %.');

}

    
respondido por el Harsh Punnoose

Lea otras preguntas en las etiquetas