2009-03-05 7 views
1

Ouf, gros titre, mais oui ça résume la question.C# et SAPI, j'ai la reconnaissance de la parole mais je ne m'intéresse pas à ses mots. Comment est-ce que je peux limiter, pas seulement le surpoids, le dictateur?

Je travaille en C# avec le Microsoft SAPI, en utilisant leur reconnaissance vocale dans un programme sur lequel je travaille.

ce que je l'ai fait est. grammaire = objRecoContext.CreateGrammar (0);

  menuRule = grammar.Rules.Add("typewrite", SpeechRuleAttributes.SRATopLevel | SpeechRuleAttributes.SRADynamic, 1); 
      object PropValue = ""; 

      menuRule.InitialState.AddWordTransition(null, "will", " ", SpeechGrammarWordType.SGLexical, "will", 1, ref PropValue, 1.0F); 
      menuRule.InitialState.AddWordTransition(null, "New", " ", SpeechGrammarWordType.SGLexical, "New", 1, ref PropValue, 1.0F); 
      menuRule.InitialState.AddWordTransition(null, "Open", " ", SpeechGrammarWordType.SGLexical, "Open", 2, ref PropValue, 1.0F); 
      menuRule.InitialState.AddWordTransition(null, "Close", " ", SpeechGrammarWordType.SGLexical, "Close", 3, ref PropValue, 1.0F); 

pour les mots personnalisés. mais cela va ramasser plus que je veux. Comment puis-je réparer cela. Qu'est-ce que je demande, comment puis-je faire le m $ sapi se soucient seulement des mots que je le veux. pas tous les mots dans le dict par défaut.

Répondre

0

Vous pouvez essayer d'utiliser le mode Commande et Contrôle pour que le module de reconnaissance reconnaisse uniquement les mots que vous voulez. Pour votre code, tout ce que vous devez faire est d'ajouter

grammar.CmdSetRuleState ("typewrite", SpeechRuleState.SGDSActive);

et objRecoContext.State = SpeechRecoContextState.SRCS_Enabled;

Espérons que cela aide ..