Comment mélanger la grammaire (règles) & amp; Dictée (parole libre) avec SpeechRecognizer en C #

J'aime vraiment les Microsoft les plus récentes de reconnaissance de la parole (et SpeechSynthesis) des offres.

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

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

Cependant j'ai l'impression que je suis un peu limité lors de l'utilisation de grammaires.

Ne vous méprenez pas, les grammaires sont grands pour dire la reconnaissance de la parole exactement ce que les mots /phrases de regarder pour, mais ce que, si je le veux à reconnaître quelque chose que je n'ai pas donné un heads-up? Ou je veux analyser une phrase qui est la moitié de la pré-déterminé le nom de la commande et la moitié des mots choisis au hasard?

Par exemple..

Scénario Un - je dire "Google [Déversement de Pétrole]" et je veux ouvrir Google avec les résultats de la recherche pour le terme entre crochets qui pourrait être n'importe quoi.

Scénario B - je dire "Localiser [Manchester]" et je veux qu'il recherche pour Manchester dans Google Maps ou autre chose non pré-déterminé

Je veux qu'il sache que "Google" et "Localiser" sont des commandes et ce qui vient après elle sont les paramètres (et pourrait être n'importe quoi).

Question : est-ce que quelqu'un sait comment mélanger l'utilisation de la pré-déterminé de grammaires (les mots de la reconnaissance vocale devrait reconnaître) et des mots n'est pas dans sa pré-déterminé de grammaire?

Fragments de Code..

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);
}

source d'informationauteur Lee Englestone | 2010-06-15