Я разрабатываю приложение на С#, основанное на Microsoft Speech API. Мне нужно управлять статическим и свободным текстом в моем приложении. Например, пользователь может сказать "Файл поиска [здесь бесплатная диктовка, чтобы дать пользователю имя файла]".
Основываясь на этом сообщении (Объедините диктовку и семантику свободной формы в грамматике srgs), я попытался использовать следующую грамматику:
<grammar version="1.0" xml:lang="fr-fr" mode="voice" root="toplevel"
xmlns="http://www.w3.org/2001/06/grammar" tag-format="semantics/1.0" >
<rule id="toplevel" scope="public">
<ruleref uri="#tmkAction" />
<ruleref special="GARBAGE"/>
<ruleref uri="#tmkItemType" />
<ruleref uri="sapi:dictation" type="application/srgs+xml"/>
<tag>out.SpokenText=rules.latest();</tag>
</rule>
Но, по словам валидатора, этот файл грамматики неверен ("Предупреждение: не удалось загрузить внешнюю грамматику": dictation ") и не работает.
кто-нибудь знает, как смешивать свободный текст и статические грамматики в Microsoft Speech Platform?
спасибо
Поскольку вы используете пространство имен sapi в последнем теге ruleref, сначала объявляйте его: xmlns:sapi="http://schemas.microsoft.com/Speech/2002/06/SRGSExtensions
Это может быть источником информации.
Я могу заметить, что ваша ошибка связана с grammar:dictation
тогда как ваш атрибут - sapi:dictation
. Я думаю, вы должны убедиться, что ваш XML файл хорошо развернут при сборке.
Вы также должны убедиться, что вы установили Speech SDK Runtime Languages из своей культуры; текст для речи один и распознавание речи. Вот