11

Ho sviluppato un sistema proof of concept per il riconoscimento del suono utilizzando modelli mfcc e markov nascosti. Fornisce risultati promettenti quando collaudo il sistema su suoni noti. Anche se il sistema, quando viene immesso un suono sconosciuto, restituisce il risultato con la corrispondenza più vicina e il punteggio non è così distinto è un suono sconosciuto ad esempio:thresholding del modello markov nascosto

Ho addestrato 3 modelli markov nascosti uno per il parlato, uno per acqua che esce dal rubinetto dell'acqua e una per bussare alla scrivania. Poi li I test su dati invisibili e ottenere i seguenti risultati:

input: speech 
HMM\knocking: -1213.8911146444477 
HMM\speech: -617.8735676792728 
HMM\watertap: -1504.4735097322673 

So highest score speech which is correct 

input: watertap 
HMM\knocking: -3715.7246152783955 
HMM\speech: -4302.67960438553 
HMM\watertap: -1965.6149147201534 

So highest score watertap which is correct 

input: knocking 
HMM\filler -806.7248912250212 
HMM\knocking: -756.4428782636676 
HMM\speech: -1201.686687761133 
HMM\watertap: -3025.181144273698 

So highest score knocking which is correct 

input: unknown 
HMM\knocking: -4369.1702184688975 
HMM\speech: -5090.37122832872 
HMM\watertap: -7717.501505674925 

Qui l'ingresso è un suono sconosciuto, ma restituisce comunque il valore più simile come non esiste un sistema di filtraggio della soglia/spazzatura.

So che nella parola chiave spotting un OOV (fuori dal vocabolario) il suono può essere filtrato usando un modello di spazzatura o di riempimento ma dice che è addestrato usando un insieme finito di parole sconosciute dove questo non può essere applicato al mio sistema in quanto non conosco tutti i suoni che il sistema può registrare.

Come si risolve un problema simile nel sistema di riconoscimento vocale? E come posso risolvere il mio problema per evitare falsi positivi?

+2

Penso che questo dovrebbe essere spostato su Cross Validated. – ziggystar

+3

Sono d'accordo sul fatto che riceverebbe più (e meglio qualificato) l'attenzione di Cross Validated. Purtroppo, il segnale del pipistrello (noto anche come "abbastanza occhio con permessi abbastanza alti") sembra essere disattivato, quindi Radek avrebbe dovuto metterlo lì. (Il "appartiene a" non ha un'opzione per CV o specifica manualmente dove appartiene. Meh.) – Godeke

risposta

3

Per rifiutare altre parole è necessario un modello di riempimento.

Questo è un test di ipotesi statistica. Hai due ipotesi (la parola è conosciuta e la parola è sconosciuta). Per prendere una decisione è necessario stimare una probabilità di ciascuna ipotesi.

Il modello di riempimento è formato dal discorso che hai, solo in un modo diverso, ad esempio potrebbe essere un singolo gaussiano per qualsiasi suono vocale. Confrontate il punteggio dal modello di riempimento generico e il punteggio dalla parola HMM e prendete una decisione. Per informazioni più approfondite e algoritmi avanzati è possibile controllare qualsiasi tipo di carta con parole chiave. Questa tesi ha una buona recensione:

ACUSTICA PAROLA CHIAVE SPOTTING IN DISCORSO CON APPLICAZIONI al data mining AJ Kishan Thambiratnam

http://eprints.qut.edu.au/37254/1/Albert_Thambiratnam_Thesis.pdf

1

Quindi quello che ho fatto è: ho creato la mia versione semplificata di un modello di riempimento . Ogni hmm che rappresenta il suono del watertap, il suono del battito e il suono della voce è uno stato separato da 6 hmm formato da suoni provenienti da un set di allenamento di 30, 50, 90 suoni rispettivamente di varie lunghezze da 0,3 secondi a 10 secondi. Poi ho creato un modello di riempimento che è un hmm a 1 stato composto da tutti i suoni del set di allenamento per bussare, watertap e speech. Quindi se il punteggio del modello hmm è maggiore per un dato suono rispetto al punteggio del filler, il suono viene riconosciuto altrimenti è un suono sconosciuto. Non ho grandi dati ma ho perforato il seguente test per il rifiuto dei falsi positivi e il rifiuto dei veri positivi sui suoni non visti.

true positives rejection 
knocking 1/11 = 90% accuracy 
watertap 1/9 = 89% accuracy 
speech 0/14 = 100% accuracy 


false positives rejection 
Tested 7 unknown sounds 
6/7 = 86% accuracy 

Quindi da questo test rapido che può concludere che questo approccio dà risultati ragionevoli anche se ho una strana sensazione che potrebbe non essere sufficiente.

0

I modelli discriminanti tendono a svolgere meglio i compiti di classificazione rispetto ai modelli generativi.

È possibile ottenere prestazioni migliori su questa attività utilizzando un CRF appositamente progettato o un classificatore con margini massimi (svm strutturato).

Questo documento (http://ttic.uchicago.edu/~jkeshet/papers/KeshetGrBe07.pdf) discute un problema di classificazione simile al tuo e mostra che una formulazione del margine massimo supera l'approccio generativo con il modello di riempimento.

Probabilmente non c'è nulla di pronto all'uso che possa fare ciò che ho descritto, ma con qualche sforzo potreste essere in grado di estendere svm-struct. (L'implementazione di hmm-svm non funzionerà per il tuo problema perché è necessario specificare la struttura dello stato nascosto in anticipo piuttosto che imparare una struttura di stato nascosta arbitrariamente connessa.)

Problemi correlati