I have no idea what is wrong with your code, but luckily I have made a similar program an hour ago. This code will work, maybe you should add some adjustments though:
SpeechRecognitionEngine Engine = new SpeechRecognitionEngine();
DictationGrammar Grammar = new DictationGrammar();
private void frmManager_Load(object sender, EventArgs e)
{
Engine.SetInputToDefaultAudioDevice();
Grammar.Name = "Default Dictation";
Grammar.Enabled = true;
Engine.LoadGrammar(Grammar);
Engine.SpeechRecognized += new EventHandler<speechrecognizedeventargs>(Engine_SpeechRecognized);
Engine.RecognizeAsync(RecognizeMode.Multiple);
}
void Engine_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
string RecognizedText = e.Result.Text;
}