2010-08-27 15 views
2

J'ai utilisé des grammaires SRGS avec SAPI 5.4 pour définir des grammaires de commande et de contrôle. Maintenant, je voudrais passer aux grammaires de texte afin qu'ils soient compatibles avec SAPI 5.1 (et peut-être même SAPI 4?).Comment charger une grammaire de texte dans un programme SAPI 5.4 C#?

Je trouve un exemple de SAPI 5.4 compatible text grammar here

Je voudrais charger que la grammaire de son fichier XML à l'exécution plutôt que d'utiliser l'outil de compilateur de grammaire et y compris la version binaire de la grammaire comme une ressource. Idéalement, j'aimerais pouvoir créer un XDocument en mémoire et demander à Speech.Recognizer d'écouter ces commandes.

Est-ce que quelqu'un sait comment faire cela? Merci!

Répondre

1

Pour utiliser les grammaires de texte, vous devez interagir directement avec SAPI COM (en incluant la bibliothèque Microsoft Speech Object Library) - au lieu de simplement utiliser le niveau supérieur System.Speech.

Donc, si vous avez copié la grammaire de texte lien ci-dessus et enregistré comme sol.xml (ce qui est dans les échantillons SDK SAPI), vous pouvez le charger en utilisant le code suivant:

SpSharedRecoContext reco = new SpSharedRecoContext(); 
ISpeechRecoGrammar grammar; 
grammar = reco.CreateGrammar(); 
grammar.CmdLoadFromFile("sol.xml"); 
grammar.CmdSetRuleIdState(0, SpeechRuleState.SGDSActive); 

Je l'ai testé que code avec XP (5.1), Visa (5.3) et 7 (5.4).

+0

Juste un épilogue. Pour utiliser SpSharedRecoContext, vous devez ajouter une référence à l'objet COM "Microsoft Speech Object Library", puis utiliser l'espace de noms SpeechLib. – Ian