2013-05-04 19 views
5

Chciałbym wiedzieć, jak w dół czułość mikrofonu z System.Speech w C# ..System.Speech dół czułość mikrofonu

Aby wytłumaczyć, mam plik gramatyki, a mój wniosek powinien rozpocząć nagrywanie, gdy mnie mówię SIVRAJ (nazwa mojego programu)

jednak mogę powiedzieć coś zupełnie innego, a moja aplikacja będzie coś zrozumieć „SIVRAJ” ...

jest częścią mojego pliku 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 

i jest to funkcja, która rozpocząć rozpoznawanie Silnik:

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; 

Wreszcie mogę odzyskać dane tutaj:

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); 
} 

Odpowiedz

2

w tym scenariuszu naprawdę nie szukasz czułości mikrofonu. To, czego, według ciebie, szukasz, to zaufanie do wyrażenia.

Gdy silnik zwraca wyniki rozpoznawania, zwraca również wraz z nim wynik zaufania. "Zasadniczo mówię, że jestem pewny, że to, co usłyszałem, było tym, co powiedziałeś".

if (Speech.Recognition.RecognitionResult.Confidence > .20) 
{ 
    //do some good stuff 
} 
else 
{ 
    // ignore 
} 

ten zawiera wartości od 0 do 1, przy czym 1 to najbardziej pewny siebie i 0 w zasadzie istota powodując hałas tła wydarzeń Reco. Będziesz musiał rozejrzeć się z pewną wartością zaufania, ponieważ jest to wysoce gramatyczne i specyficzne dla środowiska.

Inną rzeczą, którą możesz zrobić, to zmienić słowo wywołujące. Wątpię, aby leksykon silnika mowy miał w sobie frazę SIVRAJ. W tym przypadku silnik spróbuje odgadnąć, jakie fonemy składają się na to słowo (możesz je podać w gramatyce jako niestandardową wymowę, jeśli masz doświadczenie językowe). Coś takiego jak Start Recording będzie miało lepszą szansę, aby dać Ci więcej przyzwoitego doświadczenia.

Powiązane problemy