我需要帮助。 我想做出会承认我说的话,做的东西,我说的应用程序。 例如:
如果我说open [notepad]
,其中[notepad]
可以是任何应用程序的名称,它需要打开记事本。
我想,我需要同时使用语法和DictationGrammar,但我不知道怎么办。 请帮我。 谢谢。
我的代码现在看起来是这样的:
string WelcomeSentence = "Hello sir, how are you today";
SpeechSynthesizer sSynth = new SpeechSynthesizer();
PromptBuilder pBuilder = new PromptBuilder();
SpeechRecognitionEngine sRecognize = new SpeechRecognitionEngine();
private void frmMain_Load(object sender, EventArgs e)
{
sSynth.SelectVoice("IVONA Amy");
sSynth.SetOutputToDefaultAudioDevice();
pBuilder.ClearContent();
pBuilder.AppendText(WelcomeSentence);
sSynth.Speak(pBuilder);
Choices sList = new Choices();
sList.Add(File.ReadAllLines(@"Commands.ekd"));
Grammar gr = new Grammar(new GrammarBuilder(sList));
DictationGrammar dgr = new DictationGrammar();
try
{
sRecognize.RequestRecognizerUpdate();
sRecognize.LoadGrammar(gr);
sRecognize.SpeechRecognized += sRecognize_SpeechRecognized;
sRecognize.SetInputToDefaultAudioDevice();
sRecognize.RecognizeAsync(RecognizeMode.Multiple);
sRecognize.Recognize();
}
catch { return; }
}
private void sRecognize_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
if (e.Result.Text == "open notepad")
{
System.Diagnostics.Process.Start(@"C:\Windows\System32\Notepad.exe");
}
else
{
pBuilder.ClearContent();
pBuilder.AppendText(e.Result.Text);
sSynth.Speak(pBuilder);
}
}
请帮忙。