Как задать уровни приоритета грамматикам в SAPI?

Я создаю приложение для распознавания речи с помощью SAPI. Мне нужно иметь возможность назначать разные уровни приоритета для разных грамматик, которые я использую. (грамматика диктовки и другая грамматика, которую я определил) Мне нужно, чтобы распознаватель выполнял поиск в грамматике, которую я определил, и просматривал грамматику диктовки только в том случае, если речевой ввод не соответствует никаким словам в грамматике, которую я определил. На данный момент у меня есть такой код:

Grammar myGram;
Choices myEditor = new Choices();
myEditor.Add("public");
//adding other choices
myGram = new Grammar(new GrammarBuilder(myEditor));
SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine();
recognizer.LoadGrammar(myGram);
Grammar dictation = new DictationGrammar();
dictation.Name = "Dictation Grammar";
recognizer.LoadGrammar(dictation);
recognizer.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(
               SpeechRecognizedHandler);
recognizer.SetInputToDefaultAudioDevice();
recognizer.RecognizeAsync(RecognizeMode.Multiple);

Пожалуйста, дайте мне какие-нибудь идеи о том, как отдать предпочтение myGram над грамматикой диктовки. :)


person n00b    schedule 27.06.2012    source источник


Ответы (1)


Если вы используете грамматики, совместимые с SRGS, вы можете использовать веса, чтобы в основном назначать приоритет уровни. Объект Grammar действительно поддерживает грамматики в формате xml. которые соответствуют спецификации W3C SRGS.

person Kevin Junghans    schedule 27.06.2012