Como misturar gramática (regras) e ditado (expressão livre) com o SpeechRecognizer em C #

Eu realmente gosto das mais recentes ofertas de reconhecimento de voz da Microsofts (e SpeechSynthesis).

http://msdn.microsoft.com/en-us/library/ms554855.aspx

http://estellasays.blogspot.com/2009/04/speech-recognition-in-cnet.html

No entanto, sinto que sou um pouco limitado ao usar gramáticas.

Não me interpretem mal gramáticas são ótimas para dizer ao reconhecimento de fala exatamente quais palavras / frases procurar; no entanto, e se eu quiser que ele reconheça algo que não dei a entender? Ou eu quero analisar uma frase que é meio nome de comando pré-determinado e meio palavras aleatórias?

Por exemplo..

Cenário A - Eu digo "Google [Derramamento de óleo]" e quero que ele abra o Google com resultados de pesquisa para o termo entre colchetes, que pode ser qualquer coisa.

Cenário B - Eu digo "Localize [Manchester]" e quero que ele pesquise Manchester no Google Maps ou qualquer outra coisa não predeterminada

Quero que ele saiba que 'Google' e 'Locate' são comandos e o que vem depois são parâmetros (e podem ser qualquer coisa).

Pergunta: Alguém sabe como misturar o uso de gramáticas pré-determinadas (palavras que o reconhecimento de fala deve reconhecer) e palavras que não estão em sua gramática pré-determinada?

Fragmentos de código ..

using System.Speech.Recognition;

...
...

SpeechRecognizer rec = new SpeechRecognizer();
rec.SpeechRecognized += rec_SpeechRecognized;

var c = new Choices();
c.Add("search");

var gb = new GrammarBuilder(c);
var g = new Grammar(gb);
rec.LoadGrammar(g);
rec.Enabled = true; 

...
...

void rec_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
    if (e.Result.Text == "search")
    {
        string query = "How can I get a word not defined in Grammar recognised and passed into here!";

        launchGoogle(query);
    }
}

...
...


private void launchGoogle(string term)
{
    Process.Start("IEXPLORE", "google.com?q=" + term);
}

questionAnswers(2)

yourAnswerToTheQuestion