Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Meer informatie over het definiëren en gebruiken van aangepaste beperkingen voor spraakherkenning in uw Windows App SDK-app.
Belangrijk
Voor spraakherkenning is een MSIX-pakketidentiteit vereist. De Windows.Media.SpeechRecognition API’s zijn alleen beschikbaar als uw app wordt uitgevoerd met een pakketidentiteit (verpakt of verpakt met een externe locatie). Uitgepakte apps kunnen deze API's niet gebruiken.
Sleutel-API's
- SpeechRecognitionTopicConstraint
- SpeechRecognitionListConstraint
- SpeechRecognitionGrammarFileConstraint
Overview
Voor spraakherkenning is ten minste één beperking vereist om een herkenbare woordenlijst te definiëren. Als u geen beperking opgeeft, wordt de vooraf gedefinieerde dicteer grammatica gebruikt. Zie Spraakherkenning.
Gebruik de SpeechRecognizer.Constraints eigenschap om beperkingen toe te voegen aan een spraakherkenning. Er zijn drie typen beperkingen beschikbaar:
- SpeechRecognitionTopicConstraint : een beperking op basis van een vooraf gedefinieerde grammatica (dicteren of zoeken op internet).
- SpeechRecognitionListConstraint : een beperking op basis van een lijst met woorden of woordgroepen.
- SpeechRecognitionGrammarFileConstraint : een beperking die is gedefinieerd in een SRGS-bestand (Speech Recognition Grammar Specification).
Elke spraakherkenning kan één verzameling beperkingen hebben. De volgende combinaties zijn geldig:
- Eén onderwerpbeperking (dicteren of zoeken op internet)
- Eén onderwerpbeperking gecombineerd met een lijstbeperking
- Een combinatie van lijstbeperkingen en/of grammaticabestandsbeperkingen
Belangrijk
Roep SpeechRecognizer.CompileConstraintsAsync aan om de beperkingen te compileren voordat het herkenningsproces wordt gestart.
Een grammatica voor zoeken op internet opgeven (SpeechRecognitionTopicConstraint)
private async void WeatherSearch_Click(object sender, RoutedEventArgs e)
{
var speechRecognizer = new Windows.Media.SpeechRecognition.SpeechRecognizer();
var webSearchGrammar = new Windows.Media.SpeechRecognition.SpeechRecognitionTopicConstraint(
Windows.Media.SpeechRecognition.SpeechRecognitionScenario.WebSearch, "webSearch");
speechRecognizer.UIOptions.AudiblePrompt = "Say what you want to search for...";
speechRecognizer.UIOptions.ExampleText = @"Ex. 'weather for London'";
speechRecognizer.Constraints.Add(webSearchGrammar);
await speechRecognizer.CompileConstraintsAsync();
Windows.Media.SpeechRecognition.SpeechRecognitionResult result =
await speechRecognizer.RecognizeWithUIAsync();
resultTextBlock.Text = result.Text;
}
Een programmatische lijstbeperking opgeven (SpeechRecognitionListConstraint)
Lijstbeperkingen zijn een eenvoudige manier om eenvoudige grammatica te maken op basis van een lijst met woorden of woordgroepen. Een lijstbeperking werkt goed voor het herkennen van korte, afzonderlijke zinnen:
private async void YesOrNo_Click(object sender, RoutedEventArgs e)
{
var speechRecognizer = new Windows.Media.SpeechRecognition.SpeechRecognizer();
string[] responses = { "Yes", "No" };
var listConstraint = new Windows.Media.SpeechRecognition.SpeechRecognitionListConstraint(
responses, "yesOrNo");
speechRecognizer.UIOptions.ExampleText = @"Ex. 'yes', 'no'";
speechRecognizer.Constraints.Add(listConstraint);
await speechRecognizer.CompileConstraintsAsync();
Windows.Media.SpeechRecognition.SpeechRecognitionResult result =
await speechRecognizer.RecognizeWithUIAsync();
resultTextBlock.Text = result.Text;
}
Geef een SRGS-grammaticabeperking op (SpeechRecognitionGrammarFileConstraint)
SRGS-grammatica's bieden een volledige set functies voor complexe spraakinteractie, waaronder het opgeven van de volgorde waarin woorden moeten worden gesproken, woorden uit meerdere lijsten combineren, koppelen aan andere grammatica's en het gebruik van semantische interpretatie:
private async void Colors_Click(object sender, RoutedEventArgs e)
{
var speechRecognizer = new Windows.Media.SpeechRecognition.SpeechRecognizer();
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. 'blue background', 'green text'";
speechRecognizer.Constraints.Add(grammarFileConstraint);
await speechRecognizer.CompileConstraintsAsync();
Windows.Media.SpeechRecognition.SpeechRecognitionResult result =
await speechRecognizer.RecognizeWithUIAsync();
resultTextBlock.Text = result.Text;
}
Gebruik de .grxml bestandsextensie voor op XML gebaseerde grammaticadocumenten die voldoen aan SRGS-regels. Stel de buildactie van het bestand in op Inhoud en Kopiëren naar Uitvoermap om altijd te kopiëren.
Zie de XML-verwijzing voor SRGS-grammatica voor meer informatie over SRGS-elementen en -kenmerken.
Beperkingen beheren
Nadat u een verzameling beperkingen hebt geladen, kunt u afzonderlijke beperkingen in- of uitschakelen door de IsEnabled eigenschap in te stellen op true of false. De standaardwaarde is true.
Het laden van beperkingen eenmaal en vervolgens indien nodig in- of uitschakelen is efficiënter dan het laden, lossen en compileren van beperkingen voor elke herkenningsbewerking.
Door het aantal actieve beperkingen te beperken, worden zowel de prestaties als de nauwkeurigheid van spraakherkenning verbeterd. Bepaal welke beperkingen u wilt inschakelen op basis van de zinnen die uw app in de huidige context kan verwachten.
Verwante artikelen
Windows developer