2013-05-04 14 views
5

Vorrei sapere come verso il basso sensibilità del microfono con System.Speech in C# ..System.Speech giù sensibilità del microfono

di spiegarmi, ho un file di grammatica, e la mia domanda dovrebbe iniziare a registrare quando me dico SIVRAJ (il nome di mio programma)

Tuttavia, posso dire qualcosa di totalmente diverso, e la mia domanda capirà qualcosa di 'SIVRAJ' ...

C'è una parte del mio file XML:

<rule id="mouskie" scope="public"> 
<item> 
    <one-of> 
    <item>SIVRAJ</item> 
    </one-of> 
</item> 
<ruleref special="GARBAGE" /> 
<one-of> 
    <item> 
    <one-of> 
     <item>quit</item> 
    </one-of> 
    <tag>$.mouskie={}; $.mouskie._value="QUIT";</tag> // quit programm when i say SIVRAJ + quit 
    </item> 
    ..... etc etc 

E questa è la funzione che avviare il riconoscimento del motore:

SrgsDocument xmlGrammar = new SrgsDocument("Grammaire.grxml"); 
Grammar grammar = new Grammar(xmlGrammar); 
ASREngine = new SpeechRecognitionEngine(); 
ASREngine.SetInputToDefaultAudioDevice(); 
ASREngine.LoadGrammar(grammar); 

ASREngine.SpeechRecognized += ASREngine_SpeechRecognized; 
ASREngine.SpeechRecognitionRejected += ASREngine_SpeechRecognitionRejected; 
ASREngine.SpeechHypothesized += ASREngine_SpeechHypothesized; 

Infine, recuperare i dati qui:

recoText.Text = e.Result.Text; 
devine.Text = ""; 
affiche.Text = ""; 

string baseCommand = e.Result.Semantics["mouskie"].Value.ToString(); 
commandText.Text = baseCommand; 

if (baseCommand.Equals("QUIT")) 
{ 
    m_SpeechSynth.Speech("au revoir", VoiceGender.Male, VoiceAge.Adult); 
    Environment.Exit(0); 
} 

risposta

2

In questo scenario davvero non siete alla ricerca di sensibilità del microfono. Quello che credo tu stia cercando è la fiducia nelle frasi.

Quando il motore restituisce un risultato di riconoscimento, restituisce anche un punteggio di confidenza. "Sostanzialmente questo è quanto sono sicuro che quello che ho sentito è stato quello che hai detto."

Questo contiene un valore compreso tra 0 e 1, dove 1 è il più sicuro e il rumore di fondo è fondamentalmente 0 che causa eventi di ricorrenza. Dovrai giocare con quale valore di confidenza ha senso dato che è altamente grammaticale e specifico per l'ambiente.

Un'altra cosa che potresti fare è cambiare la parola chiave. Dubito che il lessico per il motore vocale abbia la frase SIVRAJ in esso. In questo caso il motore cercherà di indovinare quali sono i fonemi che compongono questa parola (puoi fornirli tu stesso nella grammatica come pronuncia personalizzata se hai uno sfondo linguistico). Qualcosa come Start Recording avrà maggiori possibilità di darti un'esperienza più decente.

Problemi correlati