2010-11-04 15 views
5

Sto lavorando ad alcuni software per bambini e sto cercando di aggiungere la possibilità per il software di rispondere a un numero di suoni non vocali. Ad esempio battendo, abbaiando, fischiettando, rumori di scoreggia, ecc.Software non vocale o software di riconoscimento del suono?

Ho usato CMU Sphinx e Windows Speech API in passato, tuttavia, per quanto posso dire, nessuno di questi ha alcun supporto per non- rumori del discorso, e in effetti credo che li filtri attivamente.

In generale sto cercando "Come faccio ad avere questa funzionalità" ma ho il sospetto può essere utile se rompo il basso in tre domande che sono le mie supposizioni su cosa cercare per il prossimo:

  1. Esiste un modo per utilizzare uno dei principali motori di riconoscimento vocale per riconoscere i suoni non di parole modificando un modello acustico o un lessico di pronuncia?
  2. (oppure) Esiste già una libreria esistente per il riconoscimento del rumore senza parole?
  3. (oppure) Ho un po 'di familiarità con Hidden Markov Models e la tecnologia di base del riconoscimento vocale del college, ma non è una buona stima su quanto sarebbe difficile creare un rumore/riconoscimento del suono molto piccolo da zero (supponiamo < 20 rumori da riconoscere). Se 1) e 2) falliscono, qualche stima su quanto tempo impiegherebbe a tirare il mio?

Grazie

+1

[La mia risposta] (http://stackoverflow.com/q/8285673/22364) alla domanda [Identificazione in tempo reale di suoni non vocali e non musicali da un flusso di microfono continuo] (http: // stackoverflow.com/q/8285673) potrebbe essere rilevante. –

risposta

0

Sì, è possibile utilizzare software di riconoscimento vocale come CMU Sphinx per il riconoscimento della non-suoni del linguaggio. Per questo, è necessario creare i propri modelli acustici e linguistici e definire il lessico limitato al proprio compito. Ma per addestrare il modello acustico corrispondente, è necessario disporre di dati di allenamento sufficienti con suoni di interesse annotati.

In breve, la sequenza delle fasi è la seguente:

In primo luogo, preparare le risorse per la formazione: lessico, dizionario ecc Il processo è descritto qui: http://cmusphinx.sourceforge.net/wiki/tutorialam. Ma nel tuo caso, devi ridefinire il set di fonemi e il lessico. Vale a dire, dovresti modellare i riempitivi come parole vere (quindi, no ++ in giro) e non è necessario definire il set completo di fonemi. Ci sono molte possibilità, ma probabilmente la più semplice è avere un singolo modello per tutti i fonemi vocali. Così, il vostro lessico sarà simile:

CLAP CLAP 
BARK BARK 
WHISTLE WHISTLE 
FART FART 
SPEECH SPEECH 

In secondo luogo, preparare i dati di allenamento con le etichette: Qualcosa di simile a VoxForge, ma annotazioni di testo deve contenere solo le etichette dal vostro lessico. Ovviamente anche i suoni non vocali devono essere etichettati correttamente. La buona domanda qui è dove ottenere abbastanza grande quantità di tali dati. Ma immagino che dovrebbe essere possibile.

Avendo ciò, è possibile addestrare il modello. Il compito è più semplice rispetto al riconoscimento vocale, ad esempio non è necessario utilizzare i triphones, ma solo i monofoni.

Supponendo uguale probabilità a priori di qualsiasi suono/parola, il modello di linguaggio più semplice può essere un loop-come la grammatica (http://cmusphinx.sourceforge.net/wiki/tutoriallm):

#JSGF V1.0; 
/** 
* JSGF Grammar for Hello World example 
*/ 
grammar foo; 
public <foo> = (CLAP | BARK | WHISTLE | FART | SPEECH)+ ; 

Questo è l'approccio molto di base all'utilizzo di ASR toolkit per il vostro compito. In può essere ulteriormente migliorato regolando le configurazioni HMMs, utilizzando modelli linguistici statistici e utilizzando modelli di fonemi a grana fine (ad esempio distinguendo vocali e consonanti invece di avere un singolo modello SPEECH. Dipende dalla natura dei dati di allenamento).

Al di fuori del framework del riconoscimento vocale, è possibile creare un semplice classificatore statico che analizzerà i dati di input fotogramma per fotogramma. Le reti nervose convulturali che operano su spettrogrammi funzionano abbastanza bene per questo compito.