Come faccio a confrontare 2 file audio, restituendo una percentuale di differenza


12

C'è un modo per confrontare 2 file audio, per cui verrà restituita una percentuale di differenza? Sto usando C # VS08 , .net framework 3.5.

Modificato: differenza nel suono (come ad es. Audio 1:, "HELP"Audio 2 "HELP ME PLEASE":, restituirà la differenza in percentuale tra questo audio 2).

Attualmente sto salvando i file registrati in formato WAV e la sua velocità in bit e la qualità saranno uguali a quelle che verranno registrate e confrontate. Vorrei chiedere se esiste un modo per confrontare il suono (non solo i binari) in 2 file audio con le stesse proprietà e lo stesso formato (WAV) e mostrare la differenza percentuale tra i 2 suoni nei 2 file audio.

L'aiuto sarà molto apprezzato.


7
Quello che stai descrivendo è nel dominio dell'elaborazione del segnale digitale. In parole povere, se hai bisogno di chiedere come farlo, non sei in forma pronto a farlo. Dubito fortemente che .NET abbia qualcosa di così sofisticato integrato.

Recentemente ho visto un articolo di ricerca sull'argomento: un algoritmo di ricerca audio di livello industriale (PDF) che confronta gli spettri di frequenza. La tecnica è utilizzata in una popolare app per iPhone Shazam .

3
Per rispondere alla domanda avremo bisogno di una definizione attenta e precisa di cosa significhi "simile". Cosa credete significhi "simile" nel contesto dei file wav?

1
Stai cercando di affrontare un problema di riconoscimento vocale che i ricercatori seri di tutto il mondo hanno affrontato per decenni. Per quanto sia una cosa interessante da fare, non credo che sia trattabile per una persona senza una conoscenza preliminare di DSP, reti bayesiane, classificatori e così via.
Phonon,

2
Vuoi davvero confrontare la differenza nell'audio o semplicemente nel testo trascritto? È molto più facile, una volta superato l'ostacolo iniziale.
Emre,

Risposte:


8

Potresti definire la "percentuale di differenza"?

Ad esempio, comunicaci quale valore ti aspetti di ottenere:

  • Tra due versioni dello stesso file codificate con impostazioni diverse?
  • Tra due versioni dello stesso file, tranne per il fatto che una è leggermente più veloce dell'altra?
  • Tra due registrazioni dello stesso ingresso audio, ma attraverso diversi microfoni / apparecchiature di registrazione?
  • Tra due registrazioni della stessa persona che dice la stessa parola?
  • Tra due registrazioni della stessa persona che dice la stessa parola, con una prosodia diversa (ritmo / melodia)?
  • Tra due registrazioni di persone diverse che dicono la stessa parola?
  • Tra due registrazioni della stessa persona che dice la stessa frase, tranne poche parole?
  • Tra una registrazione di una persona e quella di una mucca?
  • Tra una registrazione di un aeroplano e musica?

Cosa vuoi misurare? Il contenuto del discorso (parole)? La melodia, il ritmo? La somiglianza audio complessiva? Differenze nelle apparecchiature di codifica / registrazione?


3
Non tratteniamo il respiro; la domanda ha due anni e l'OP è AWOL.
Emre,

1
Spiacenti, ho notato solo la (recente) data di migrazione.
Pichenettes,

3

Dai un'occhiata a ITU-T P.862 . È una forma standardizzata di PESQ (valutazione percettiva della qualità del parlato) , famiglia di standard per la valutazione della qualità del parlato vissuta da un utente di un sistema di telefonia.

Questo riguarda solo il parlato (non altre informazioni audio). Si confrontano due file audio, sorgente e degradati e si ottiene un valore in percentuale o MOS equivalente.


2
Benvenuto in DSP.stackexchange! Grazie per aver fornito le risposte, ma suggerisco di consultare le FAQ per migliorare le vostre risposte / domande. Le firme sono scoraggiate: tu "firmi" comunque con il tuo handle registrato. Inoltre, fornire collegamenti a materiale esterno, esempi e chiarimenti per gli approcci che menzioni nelle tue risposte è una buona pratica :)
penelope,

-3

Sto usando una funzione JavaScript per confrontare il file audio di traino. Usando la stessa logica sei in grado di confrontare qualsiasi file in qualsiasi lingua.

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+' %.');

}


3
Il confronto diretto del bytestream non funziona. Due registrazioni possono essere percettibilmente indistinguibili ma vengono codificate in due flussi diversi con una corrispondenza dello 0% in base al codice.
Pichenettes,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.