【发布时间】:2013-10-27 13:47:49
【问题描述】:
场景:
我有 2 个命令。
1) 在 Google 上搜索“此处的任何单词”
2) 打开应用程序“这里的任何单词”
问题:
既然“在 Google 上搜索”之后的词可以是任何东西,我想我怎么知道我要为我的 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);
}
【问题讨论】:
标签: c# .net speech-recognition grammar sapi