Учитывая следующий код,
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);
Как добавить дополнительные слова в загруженную грамматику? Я знаю, что этого можно достичь как в собственном коде, так и с помощью взаимодействия SpeechLib, но я предпочитаю использовать управляемую библиотеку.
Обновление: То, чего я хочу достичь, - это не загружать всю грамматику повторно из-за индивидуальных изменений. Для маленьких грамматик я получил хорошие результаты, позвонив
_recognition.RequestRecognizerUpdate()
и затем выгрузка старой грамматики и загрузка восстановленной грамматики в случае:
void Recognition_RecognizerUpdateReached(object sender, RecognizerUpdateReachedEventArgs e)
Для больших грамматик это становится слишком дорого.