Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Lär dig hur du definierar och använder anpassade begränsningar för taligenkänning i din Windows App SDK-app.
Viktigt!
Taligenkänning kräver MSIX-paketidentitet.
Windows.Media.SpeechRecognition API:erna är endast tillgängliga när din app körs med paketidentitet (paketerad eller paketerad med extern plats). Uppackade appar kan inte använda dessa API:er.
Nyckel-API:er
- SpeechRecognitionTopicConstraint
- SpeechRecognitionListConstraint
- SpeechRecognitionGrammarFileConstraint
Översikt
Taligenkänning kräver minst en begränsning för att definiera ett igenkännligt ordförråd. Om du inte anger någon begränsning används den fördefinierade dikterings grammatiken. Se Taligenkänning.
Använd egenskapen SpeechRecognizer.Constraints för att lägga till begränsningar i en taligenkänning. Det finns tre typer av begränsningar:
- SpeechRecognitionTopicConstraint – en begränsning som baseras på en fördefinierad grammatik (diktering eller webbsökning).
- SpeechRecognitionListConstraint – en begränsning som baseras på en lista med ord eller fraser.
- SpeechRecognitionGrammarFileConstraint – en begränsning som definieras i en SRGS-fil (Speech Recognition Grammar Specification).
Varje taligenkännare kan ha en begränsningssamling. Följande kombinationer är giltiga:
- En begränsning för ett ämne (diktering eller webbsökning)
- En begränsning för ett enskilt ämne kombinerat med en listbegränsning
- En kombination av listbegränsningar och/eller grammatik-filbegränsningar
Viktigt!
Anropa SpeechRecognizer.CompileConstraintsAsync för att kompilera begränsningarna innan du startar igenkänningsprocessen.
Ange en grammatik för webbsökning (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;
}
Ange en programmatisk listbegränsning (SpeechRecognitionListConstraint)
Listbegränsningar är ett enkelt sätt att skapa enkla grammatiker från en lista med ord eller fraser. En listbegränsning fungerar bra för att identifiera korta, distinkta fraser:
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;
}
Ange en SRGS-grammatikbegränsning (SpeechRecognitionGrammarFileConstraint)
SRGS-grammatik ger en fullständig uppsättning funktioner för komplex röstinteraktion, inklusive att ange i vilken ordning ord måste talas, kombinera ord från flera listor, länka till andra grammatiker och använda semantisk tolkning:
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;
}
Använd filtillägget .grxml för XML-baserade grammatikdokument som överensstämmer med SRGS-regler. Ange filens build-åtgärd till Innehåll och Kopiera till utdatakatalog till Kopiera alltid.
Mer information om SRGS-element och -attribut finns i referensen för SRGS-grammatik-XML.
Hantera begränsningar
När du har läst in en begränsningssamling kan du aktivera eller inaktivera enskilda begränsningar genom att ange IsEnabled egenskapen till true eller false. Standardvärdet är true.
Att läsa in begränsningar en gång och sedan aktivera eller inaktivera dem efter behov är effektivare än att läsa in, ta bort och kompilera begränsningar för varje igenkänningsåtgärd.
Om du begränsar antalet aktiva begränsningar förbättras både taligenkänningens prestanda och noggrannhet. Bestäm vilka begränsningar som ska aktiveras baserat på de fraser som appen kan förvänta sig i den aktuella kontexten.
Relaterade artiklar
Windows developer