Я создал Grammar
с использованием XML для использования с типом SpeechRecognitionEngine
.
Файл грамматики работает, когда у меня есть только ОДНО правило, на которое есть ссылка в правиле 'root', но НЕ работает, когдаУ меня есть более одного правила, на которое есть ссылка в правиле «root».
Насколько я вижу, я следовал инструкциям, изложенным в документации ЗДЕСЬ
ВотXML-файл Grammer:
<grammar version="1.0" xml:lang="en-US" root="topLevel"
xmlns="http://www.w3.org/2001/06/grammar">
<rule id="topLevel">
<ruleref uri="#commandOne"/>
<ruleref uri="#commandTwo"/>
</rule>
<rule id="commandOne">
<one-of>
<item> run tests </item>
</one-of>
</rule>
<rule id="commandTwo">
<one-of>
<item> open </item>
<item> goto </item>
</one-of>
<ruleref uri="#toolRule"/>
</rule>
<rule id="toolRule">
<one-of>
<item> spanner </item>
<item> wrench </item>
</one-of>
</rule>
</grammar>
Вот код, который я использую для настройки и загрузки файла грамматики:
speechRecogniser.SpeechRecognized += SpeechRecogniser_SpeechRecognized;
speechRecogniser.LoadGrammar(new Grammar(@"Speech\TestGrammar.xml"));
speechRecogniser.SetInputToDefaultAudioDevice();
speechRecogniser.RecognizeAsync(RecognizeMode.Multiple);
Может кто-нибудь сказать мне, почему никакие правила не работают изXML, когда у меня> 1 правил, на которые ссылается правило topLevel?