おそらく、SAPI の代わりに .net System.Speech 名前空間を使用したいですか? 数年前に公開された非常に優れた記事がhttp://msdn.microsoft.com/en-us/magazine/cc163663.aspxにあります。これはおそらく、これまでに見つけた中で最高の紹介記事です。少し時代遅れですが、非常に便利です。(AppendResultKeyValue メソッドは、ベータ後に削除されました。)
共有認識エンジンを使用しようとしていますか? そのため、コマンドが表示されている可能性があります。認識のための特定のタスクがありますか? その場合は、タスク固有の文法と inproc 認識機能を使用したほうがよいでしょう。
単語を処理する必要がある場合は、System.Speech に付属の DictationGrammar を使用します。http://msdn.microsoft.com/en-us/library/system.speech.recognition.dictationgrammar%28VS.85%29.aspxを参照してください。
楽しみのために、私は思いつくディクテーション文法を使用する最も単純な .NET Windows フォーム アプリをまとめました。フォームを作成しました。その上にボタンを落として、ボタンを大きくしました。System.Speech と次の行への参照を追加しました。
using System.Speech.Recognition;
次に、次のイベント ハンドラーを button1 に追加しました。
private void button1_Click(object sender, EventArgs e)
{
SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine();
Grammar dictationGrammar = new DictationGrammar();
recognizer.LoadGrammar(dictationGrammar);
try
{
button1.Text = "Speak Now";
recognizer.SetInputToDefaultAudioDevice();
RecognitionResult result = recognizer.Recognize();
button1.Text = result.Text;
}
catch (InvalidOperationException exception)
{
button1.Text = String.Format("Could not recognize input from default aduio device. Is a microphone or sound card available?\r\n{0} - {1}.", exception.Source, exception.Message);
}
finally
{
recognizer.UnloadAllGrammars();
}
}