设想 :
我有 2 个命令。
1)在谷歌搜索“这里的任何单词”
2)打开应用程序“这里的任何单词”
问题 :
由于“Search Google for”之后的词可以是任何东西,我怎么知道我要为我的 IF 语句写什么?
使用预定义的句子,我可以轻松做到
void Engine_SpeechRecognized (object sender, SpeechRecognizedEventsArgs e)
{
if (e.Result.Text == "Search Google Stackoverflow")
{
Search("Stackoverflow");
}
}
但既然现在它不是预定义的,我应该为我的 IF 语句条件写什么?这不像我能做到的,
if (e.Result.Text == "Search Google" + e.Result.Text)
{
Search(e.Result.Text);
}
那么,我该怎么做呢?如果我只有 1 个命令并且只需要执行 1 个操作,这很容易,那么我可以将默认操作设置为 Search(),但现在情况不同了。
这是我的代码(仅适用于 1 个命令和操作,我需要 2 个及以上)* 使用 System.Speech
public MainWindow()
{
InitializeComponent();
builder.Append("search google for"); builder.AppendDictation();
Grammar grammar = new Grammar(builder);
grammar.Name = ("Google Searching");
engine.LoadGrammarAsync(grammar);
engine.SetInputToDefaultAudioDevice();
engine.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(Engine_SpeechRecognized);
engine.RecognizeAsync(RecognizeMode.Multiple);
}
string result;
void Engine_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
txtSpeech.Text = e.Result.Text;
ExtractKeywords(e.Result.Text);
OpenApp("https://www.google.com/#q=" + result);
}