シナリオ :
私は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);
}