2009-03-05 5 views
1

Puh, großer Titel, aber ja, das fasst die Frage zusammen.C# und SAPI, ich habe eine Spracherkennung, aber ihre Wörter sind nicht interessiert. Wie kann ich das gramer dict beschränken, nicht nur über das Gewicht?

Ich arbeite in C# mit dem Microsoft SAPI, mit ihrer Spracherkennung in einem Programm im arbeiten.

was ich tun muss ist. Grammatik = 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); 

für benutzerdefinierte Wörter. aber das wird mehr aufnehmen als ich will. Wie kann ich das beheben?

was ich fragen ist, wie kann ich die m $ sapi nur kümmern über Wörter ich will es. nicht jedes Wort im Standarddict.

Antwort

0

Sie können versuchen, den Befehls- und Steuermodus zu verwenden, damit der Erkenner nur die gewünschten Wörter erkennt. Für Ihren Code, alles, was Sie tun müssen, ist hinzuzufügen

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

und objRecoContext.State = SpeechRecoContextState.SRCS_Enabled;

Hoffe, dass dies hilft ..