2011-04-05 3 views
5

Prima di tutto vorrei dire che la mia domanda non è per dire sulla definizione "classica" del riconoscimento vocale.Come confrontare due campioni vocali su iOS?

Quello che stiamo cercando di fare è un po 'diverso, nel senso di:

  1. utente registra il suo comando
  2. Più tardi, quando l'utente parlerà comando pre-registrati, si verificherà una certa azione.

Ad esempio, registro un comando vocale per chiamare mia madre, quindi faccio clic su di lei e dico "Mamma". Quindi quando uso il programma e dico "Mamma", la chiamerà automaticamente.

Come eseguire il confronto di un comando vocale con un campione vocale salvato?

MODIFICA: Non abbiamo bisogno di alcuna capacità di "sintesi vocale", solo un confronto di segnali sonori. Ovviamente stiamo cercando una sorta di prodotto o quadro standard.

+2

Qual è la tua domanda? – titaniumdecoy

+1

Come ho detto, come è possibile ottenere ciò che ho chiesto :) –

+0

Per risolvere questo problema, non abbiamo bisogno di alcun tipo di "sintesi vocale" o qualcosa del genere, stiamo cercando una struttura relativamente semplice in grado di confrontare 2 segnali audio e vedere se sono "uguali". In questo modo anche le persone che non parlano inglese possono usare questo programma. –

risposta

0

Provare a utilizzare una libreria di terze parti, ad esempio OpenEars per le applicazioni iOS. Potresti fare in modo che gli utenti registrino un campione vocale e salvarlo come testo tradotto, o semplicemente lasciare che vengano immessi del testo per il riconoscimento.

+0

Non ho nemmeno bisogno di tradurre detto comando vocale in testo, voglio semplicemente memorizzare detto comando, e dopo confrontarlo. –

+1

No, hai veramente bisogno del riconoscimento vocale. Il confronto dei suoni per "uguaglianza" non tiene conto di nessuno dei molti modi in cui il secondo campione registrato potrebbe differire dal primo. L'auto passa in background? L'utente si ferma un po 'più a lungo tra le parole? O balbetti? Perdona ai tuoi utenti: sono umani e non sono in grado di produrre esattamente lo stesso suono due volte. – Dominic

0

Penso che dovresti eseguire una sorta di cross correlation per determinare quanto siano simili questi due segnali. (Supponendo che sarà lo stesso utente che sta parlando di corso). Sto solo scrivendo questa risposta per vedere se è d'aiuto, ma aspetterei una risposta migliore da qualcun altro. Le mie capacità di elaborazione del segnale sono vicine allo zero.

+0

La correlazione incrociata sembra quella di cui abbiamo bisogno per il progetto, poiché vogliamo che sia universale (e non solo per i clienti di lingua inglese) –

0

Non sono sicuro che la tua domanda riguardi il DSP o come farlo su iPhone. Se è quest'ultimo, inizierei con il progetto Speak Here fornito da Apple. In questo modo hai già l'interfaccia per registrare la voce su un file fatto. Ti farà risparmiare un sacco di problemi.

4

Un modo per eseguire il riconoscimento musicale consiste nel prendere una sequenza temporale di spettri di frequenza (FFT a tempo STFT FFT) per i due suoni in questione, mappare le posizioni dei picchi di frequenza sull'asse del tempo e cross-correlare le due mappature dei picchi di frequenza temporale 2D per una corrispondenza. Questo è molto più robusto della semplice correlazione incrociata tra i 2 campioni sonori, poiché i picchi cambiano molto meno di tutti gli "spie" spettrali tra i picchi spettrali. Questo metodo funzionerà meglio se la velocità delle due espressioni e il loro tono non sono cambiati troppo.

In iOS 4.x, è possibile utilizzare il framework Accelerate per le FFT e forse anche le correlazioni incrociate 2D.

+1

Hai un codice sorgente? – va05