chtěl jsem si vytvořit program, který by rozpoznal mluvená slova a následně po nich konal viz sample.
- Kód: Vybrat vše
sSynth = new SpeechSynthesizer();
pBuilder = new PromptBuilder();
sRecognize = new SpeechRecognitionEngine();
Choices sList = new Choices();
sList.Add(new string[] { "systemrestart", "systemshutdown", "lockdown"});
Grammar gr = new Grammar(new GrammarBuilder(sList));
try
{
sRecognize.RequestRecognizerUpdate();
sRecognize.LoadGrammar(gr);
sRecognize.SpeechRecognized += sRecognize_SpeechRecognized;
sRecognize.SetInputToDefaultAudioDevice();
sRecognize.RecognizeAsync(RecognizeMode.Multiple);
sRecognize.Recognize();
}
catch (Exception ex) {
using (StreamWriter sw = new StreamWriter("C:\\error.txt"))
{
sw.WriteLine(ex.Message);
sw.Close();
}
}
K tomu nějaká ta metoda na reakci rozpoznávání.
- Kód: Vybrat vše
private void sRecognize_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
switch (e.Result.Text)
{
case "systemrestart":
Process.Start("shutdown", "-r");
break;
case "systemshutdown":
Process.Start("shutdown", "-s -t 0");
break;
case "lockdown":
Process.Start("rundll32.exe", "user32.dll, LockWorkStation");
break;
}
}
To funguje krásně, jenže pokud to chci spustit jako službu, tak najednou na mikrofón program nereaguje a vykoná nic.
Službu jsem úspěšně přes InstallUtil nainstaloval do systému a "funguje" (čti je spuštěná a v eventlogu nejsou žádné chyby). Napadá někoho jak by se dal tento problém vyřešit?
Díky za hinty.