Étant donné le code suivant,Comment ajouter des mots à une grammaire déjà chargée à l'aide System.Speech et SAPI 5.3
Choices choices = new Choices();
choices.Add(new GrammarBuilder(new SemanticResultValue("product", "<product/>")));
GrammarBuilder builder = new GrammarBuilder();
builder.Append(new SemanticResultKey("options", choices.ToGrammarBuilder()));
Grammar grammar = new Grammar(builder) { Name = Constants.GrammarNameLanguage};
grammar.Priority = priority;
_recognition.LoadGrammar(grammar);
Comment puis-je ajouter des mots supplémentaires à la grammaire chargée? Je sais que ceci peut être réalisé à la fois en code natif et en utilisant l'interop de SpeechLib, mais je préfère utiliser la bibliothèque gérée.
Mise à jour: Ce que je veux réaliser, ce n'est pas avoir à charger une grammaire entière à plusieurs reprises à cause de changements individuels. Pour les petites grammaires je suis arrivé de bons résultats en appelant
_recognition.RequestRecognizerUpdate()
et faire ensuite le déchargement de la vieille grammaire et le chargement d'une grammaire reconstruite en cas:
void Recognition_RecognizerUpdateReached(object sender, RecognizerUpdateReachedEventArgs e)
Pour les grandes grammaires cela devient trop cher.
Je ne suis pas sûr que je suis. Disons que j'ajoute une référence à une grammaire externe comme décrit dans AppendRuleReference. Une fois cette grammaire référencée chargée, son contenu change. Comment puis-je mettre à jour le moteur de reconnaissance vocale pour utiliser la grammaire modifiée? (sans le recharger bien sûr) –
Vous devez _do_ recharger la grammaire _referenced_, mais pas la grammaire principale. Cela devrait être une opération de chargement/déchargement beaucoup plus petite. Si les différences par utilisateur sont grandes, l'autre option consisterait à les charger toutes, puis à les activer/désactiver à la volée. –
Je vais essayer de donner un exemple. Ouvrez le mot et commencez à taper. Chaque phrase ajoutée/supprimée/modifiée doit être ajoutée/supprimée/modifiée (= supprimer, puis ajouter) à la grammaire. Je dois supporter de gros fichiers. (où je définis grand comme rendant le rechargement notable) –