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
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer quelque chose comme ça...
Il spécifie une liste des commandes.. mais vous permet également d'utiliser open dictée par la suite.
Il s'attend à une commande donnée avant l'ouverture de la dictée.. mais vous pouvez inverser cette... et ajouter th
Cependant, en ajoutant dans un vide dans le type de commande (" ") il vous permettra également de passer directement à la partie de la dictée.
ensuite sur votre reconnaissance utilisez simplement la suite du texte etc
Vous pouvez ajouter plus d'options à choix, et SemanticResultKeys de la structure pour en faire des modèles plus complexes si vous le souhaitez. Aussi un caractère générique (par exemple, go.AppendWildcard(); ).
Vous avez deux choix: