#c# #xml #speech-recognition
#c# #xml #распознавание речи
Вопрос:
У меня есть следующая грамматика XML для определения числа, такого как 1000 или 2200 и т.д.
<rule id="rule1" scope="public">
<one-of>
<item>1</item>
<item>2</item>
<item>3</item>
</one-of>
<ruleref uri="#rule2"/>
</rule>
<rule id="rule2" scope="public">
<one-of>
<item>thousand<tag>out="000";</tag></item>
<item>thousand 100<tag>out=100;</tag></item>
<item>thousand 200<tag>out=200;</tag></item>
</one-of>
</rule>
Однако, когда пользователь говорит, например, 2100, я получаю «2 тысячи 100″ вместо 2100. Похоже, что часть out= не работает. Я видел несколько примеров в Интернете и не знаю, нужно ли мне добавить что-то еще, чтобы это сработало. Я использую tag-format=»семантика / 1.0»
Комментарии:
1. Это зависит от движка, с которым вы работаете, не так ли? Возможно, он не поддерживает теги. Какой из них вы используете? Также для полноты картины я бы добавил кавычки вокруг второго и третьего случая.
2. Я использую SpeechRecognitionEngine в C # для загрузки грамматики. Я пробовал это с кавычками и без них.
Ответ №1:
Способ, которым я решил эту проблему, заключался в том, чтобы использовать только одно правило и использовать такие свойства, как out.start , out.end, а затем объединить их.
<rule id="rule1" scope="public">
<one-of>
<item>1<tag>out.start="1";</tag></item>
<item>2<tag>out.start="2";</tag></item>
<item>3<tag>out.start="3";</tag></item>
</one-of>
<one-of>
<item>thousand<tag>out.end="000";</tag></item>
<item>thousand 100<tag>out.end="100";</tag></item>
<item>thousand 200<tag>out.end="200";</tag></item>
</one-of>
<tag>out=out.start out.end;</tag>
</rule>
Чтобы извлечь семантическое значение из C #, вы можете использовать что-то вроде
private void sre_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
MessageBox.Show(e.Results.Semantics.Value.ToString());
}
Ответ №2:
Microsoft Speech SDK поставляется с образцом SRGS, который может обрабатывать числа довольно хорошо. Например, «Кардинальное» правило может обрабатывать числа до 1 000 000. Он доступен на разных языках в каталоге Samples (например C:Program FilesMicrosoft SDKsSpeechv11.0SamplesSample Grammarsen-US.grxml).