Я начинаю работать с Microsoft Hololense прямо сейчас и хочу написать простую программу на C#, включая распознавание речи. Как я могу получить доступ к значению тега «да» из grxml в моей программе на C#? Вот код
Colors.grxml
<grammar xml:lang = "en-US"
root = "yesOrNo"
version = "1.0"
tag-format = "semantics/1.0"
xmlns = "http://www.w3.org/2001/06/grammar">
<!-- The following rules recognize variants of yes and no. -->
<rule id = "yesOrNo">
<one-of>
<item>
<one-of>
<item>yes</item>
<item>yeah</item>
<item>yep</item>
<item>yup</item>
<item>un huh</item>
<item>yay yus</item>
</one-of>
<tag>out = "yes";</tag>
</item>
<item>
<one-of>
<item>no</item>
<item>nope</item>
<item>nah</item>
<item>uh uh</item>
</one-of>
<tag>out = "no";</tag>
</item>
</one-of>
</rule>
Теперь C#:
private async void btnStartRecognition_Click(object sender, RoutedEventArgs e)
{
// Create an instance of SpeechRecognizer.
var speechRecognizer = new Windows.Media.SpeechRecognition.SpeechRecognizer();
// Add a grammar file constraint to the recognizer.
var storageFile = await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Colors.grxml"));
var grammarFileConstraint = new Windows.Media.SpeechRecognition.SpeechRecognitionGrammarFileConstraint(storageFile, "colors");
speechRecognizer.UIOptions.ExampleText = @"Ex. 'yes', 'yeah'";
speechRecognizer.Constraints.Add(grammarFileConstraint);
// Compile the constraint.
await speechRecognizer.CompileConstraintsAsync();
// Start recognition.
Windows.Media.SpeechRecognition.SpeechRecognitionResult speechRecognitionResult = await speechRecognizer.RecognizeWithUIAsync();
//Here i want to access the Tag-Value "Yes" if the user said yeah.
//I tried speechRecognitionResult.SemanticInterpretation.ToString
}





для приложения UWP, я думаю, использование speechRecognitionResult.SemanticInterpretation.Properties дает хороший способ найти решение
я нашел образец: https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/SpeechRecognitionAndSynthesis
да, у вас есть право iam с использованием WPF, но я не понимаю, что у вас есть ошибка с результатом распознавания речи. Семантическая интерпретация?
Точно. Если я использую SpeechRecognitionResult.SemanticInterpretation, я не смогу найти способ получить доступ к значению «да». Я всегда получаю результат распознавания, в котором было сказано слово, но я не получаю метку «да», если было сказано «да». Также я не смог найти подходящее решение на C# в сети, и я ищу уже несколько дней
вы должны использовать: speechRecognitionResult.SemanticInterpretation.Properties что-то вроде этого speechRecognitionResult.SemanticInterpretation.Properties ["" ] [0] .tostring
в моем случае SpeechRecognitionResult.SemanticInterpretation.Properties ["r esult"] [0] .tostring, потому что я написал out.result = "yes"
Святая корова, это сработало, спасибо большое! Я ценю твои старания!
я адаптирую ответ
Макс, не могли бы вы опубликовать свое решение для других парней и подтвердить мой ответ
Спасибо за ваш ответ. Но я думаю, что вы работаете над приложением Windows Forms, а не над UWP, верно? В UWP вам нужно использовать Media.Speechrecognition, а не System.speech. К сожалению, я думаю, что это решение несовместимо с UWP, но спасибо!