Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Erfahren Sie, wie Sie benutzerdefinierte Einschränkungen für die Spracherkennung in Ihrer Windows App SDK-App definieren und verwenden.
Von Bedeutung
Für die Spracherkennung ist MSIX-Paketidentität erforderlich. Die Windows.Media.SpeechRecognition-APIs sind nur verfügbar, wenn Ihre App mit Paketidentität (gepackt oder mit externem Ort gepackt) ausgeführt wird. Entpackte Apps können diese APIs nicht verwenden.
Wichtige APIs
- SpeechRecognitionTopicConstraint
- SpeechRecognitionListConstraint
- SpeechRecognitionGrammarFileConstraint
Übersicht
Die Spracherkennung erfordert mindestens eine Einschränkung, um ein erkennbares Vokabular zu definieren. Wenn Sie keine Einschränkung angeben, wird die vordefinierte Diktiergrammatik verwendet. Siehe Spracherkennung.
Verwenden Sie die SpeechRecognizer.Constraints Eigenschaft, um Einschränkungen zu einer Spracherkennung hinzuzufügen. Es stehen drei Arten von Einschränkungen zur Verfügung:
- SpeechRecognitionTopicConstraint – Eine Einschränkung basierend auf einer vordefinierten Grammatik (Diktieren oder Websuche).
- SpeechRecognitionListConstraint – Eine Einschränkung basierend auf einer Liste von Wörtern oder Ausdrücken.
- SpeechRecognitionGrammarFileConstraint – Eine Einschränkung, die in einer SRGS-Datei (Speech Recognition Grammar Specification) definiert ist.
Jede Spracherkennung kann eine Einschränkungsauflistung aufweisen. Die folgenden Kombinationen sind gültig:
- Eine einzelne Themeneinschränkung (Diktat oder Websuche)
- Eine einzelne Themeneinschränkung in Kombination mit einer Listeneinschränkung
- Eine Kombination aus Listeneinschränkungen und/oder Grammatikdateieinschränkungen
Von Bedeutung
Rufen Sie auf SpeechRecognizer.CompileConstraintsAsync , um die Einschränkungen zu kompilieren, bevor Sie den Erkennungsprozess starten.
Angeben einer Grammatik für die Websuche (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;
}
Angeben einer programmatischen Listeneinschränkung (SpeechRecognitionListConstraint)
Listeneinschränkungen sind eine einfache Möglichkeit zum Erstellen einfacher Grammatiken aus einer Liste von Wörtern oder Ausdrücken. Eine Listeneinschränkung eignet sich gut zum Erkennen kurzer, eindeutiger Ausdrücke:
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;
}
Angeben einer SRGS-Grammatikeinschränkung (SpeechRecognitionGrammarFileConstraint)
SRGS-Grammatiken bieten einen vollständigen Satz von Features für komplexe Sprachinteraktionen, einschließlich der Angabe der Reihenfolge, in der Wörter gesprochen werden müssen, Kombinieren von Wörtern aus mehreren Listen, Verknüpfen mit anderen Grammatiken und Verwenden der semantischen Interpretation:
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;
}
Verwenden Sie die .grxml Dateierweiterung für XML-basierte Grammatikdokumente, die SRGS-Regeln entsprechen. Legen Sie die Buildaktion der Datei auf Inhalt und In Ausgabeverzeichnis kopieren auf Immer kopieren fest.
Weitere Informationen zu SRGS-Elementen und -Attributen finden Sie in der SRGS Grammar XML-Referenz.
Verwalten von Einschränkungen
Nachdem Sie eine Sammlung von Einschränkungen geladen haben, können Sie einzelne Einschränkungen aktivieren oder deaktivieren, indem Sie für die Eigenschaft IsEnabled den Wert true oder false festlegen. Der Standardwert lautet true.
Ladeeinschränkungen einmal und das anschließende Aktivieren oder Deaktivieren nach Bedarf sind effizienter als das Laden, Entladen und Kompilieren von Einschränkungen für jeden Erkennungsvorgang.
Das Einschränken der Anzahl der aktiven Einschränkungen verbessert sowohl die Leistung als auch die Genauigkeit der Spracherkennung. Entscheiden Sie, welche Einschränkungen basierend auf den Ausdrücken aktiviert werden sollen, die Ihre App im aktuellen Kontext erwarten kann.
Verwandte Artikel
Windows developer