Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Découvrez comment définir et utiliser des contraintes personnalisées pour la reconnaissance vocale dans votre application SDK d'application Windows.
Important
La reconnaissance vocale nécessite l’identité du package MSIX. Les Windows.Media.SpeechRecognition API sont disponibles uniquement lorsque votre application s’exécute avec une identité de package (empaquetée ou empaquetée avec un emplacement externe). Les applications non empaquetées ne peuvent pas utiliser ces API.
API clés
- SpeechRecognitionTopicConstraint
- SpeechRecognitionListConstraint
- SpeechRecognitionGrammarFileConstraint
Aperçu
La reconnaissance vocale nécessite au moins une contrainte pour définir un vocabulaire reconnaissable. Si vous ne spécifiez pas de contrainte, la grammaire de dictée prédéfinie est utilisée. Voir reconnaissance vocale.
Utilisez la SpeechRecognizer.Constraints propriété pour ajouter des contraintes à un module de reconnaissance vocale. Trois types de contraintes sont disponibles :
- SpeechRecognitionTopicConstraint : contrainte basée sur une grammaire prédéfinie (dictée ou recherche web).
- SpeechRecognitionListConstraint : contrainte basée sur une liste de mots ou d’expressions.
- SpeechRecognitionGrammarFileConstraint : contrainte définie dans un fichier SRGS (Speech Recognition Grammar Specification).
Chaque module de reconnaissance vocale peut avoir une collection de contraintes. Les combinaisons suivantes sont valides :
- Contrainte de rubrique unique (dictée ou recherche web)
- Une contrainte de rubrique unique combinée à une contrainte de liste
- Combinaison de contraintes de liste et/ou de contraintes de grammaire-fichier
Important
Appelez SpeechRecognizer.CompileConstraintsAsync pour compiler les contraintes avant de démarrer le processus de reconnaissance.
Spécifier une grammaire de recherche web (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;
}
Spécifier une contrainte de liste programmatique (SpeechRecognitionListConstraint)
Les contraintes de liste sont un moyen léger de créer des grammaires simples à partir d’une liste de mots ou d’expressions. Une contrainte de liste fonctionne bien pour reconnaître des expressions courtes et distinctes :
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;
}
Spécifier une contrainte de grammaire SRGS (SpeechRecognitionGrammarFileConstraint)
Les grammaires SRGS fournissent un ensemble complet de fonctionnalités pour l’interaction vocale complexe, notamment la spécification de l’ordre dans lequel les mots doivent être prononcés, la combinaison de mots de plusieurs listes, la liaison à d’autres grammaires et l’utilisation de l’interprétation sémantique :
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;
}
Utilisez l’extension de .grxml fichier pour les documents de grammaire XML conformes aux règles SRGS. Définissez l’action de génération du fichier à Contenu et Copier dans le répertoire de sortie à Toujours copier.
Pour plus d’informations sur les éléments et attributs SRGS, consultez la référence XML de grammaire SRGS.
Gérer les contraintes
Après avoir chargé une collection de contraintes, vous pouvez activer ou désactiver des contraintes individuelles en définissant la IsEnabled propriété sur true ou false. La valeur par défaut est true.
Le chargement des contraintes une fois, puis l’activation ou la désactivation de ces contraintes en fonction des besoins est plus efficace que le chargement, le déchargement et la compilation des contraintes pour chaque opération de reconnaissance.
La restriction du nombre de contraintes actives améliore les performances et la précision de la reconnaissance vocale. Déterminez les contraintes à activer en fonction des expressions attendues par votre application dans le contexte actuel.
Articles connexes
Windows developer