Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Informazioni su come definire e usare vincoli personalizzati per il riconoscimento vocale nell'app SDK per app di Windows.
Importante
Il riconoscimento vocale richiede l'identità del pacchetto MSIX. Le Windows.Media.SpeechRecognition API sono disponibili solo quando l'app viene eseguita con l'identità del pacchetto (in pacchetto o in pacchetto con posizione esterna). Le app non in pacchetto non possono usare queste API.
API chiave
- SpeechRecognitionTopicConstraint
- SpeechRecognitionListConstraint
- SpeechRecognitionGrammarFileConstraint
Overview
Il riconoscimento vocale richiede almeno un vincolo per definire un vocabolario riconoscibile. Se non si specifica un vincolo, viene usata la grammatica di dettatura predefinita. Vedere Riconoscimento vocale.
Usare la SpeechRecognizer.Constraints proprietà per aggiungere vincoli a un riconoscimento vocale. Sono disponibili tre tipi di vincoli:
- SpeechRecognitionTopicConstraint : vincolo basato su una grammatica predefinita (dettatura o ricerca Web).
- SpeechRecognitionListConstraint : vincolo basato su un elenco di parole o frasi.
- SpeechRecognitionGrammarFileConstraint : vincolo definito in un file SRGS (Speech Recognition Grammar Specification).
Ogni riconoscimento vocale può avere una raccolta di vincoli. Le combinazioni seguenti sono valide:
- Un singolo vincolo di argomento (dettatura o ricerca Web)
- Vincolo a un singolo argomento combinato con un vincolo di elenco
- Combinazione di vincoli di elenco e/o vincoli di file di grammatica
Importante
Chiamare SpeechRecognizer.CompileConstraintsAsync per compilare i vincoli prima di avviare il processo di riconoscimento.
Specificare una grammatica di ricerca 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;
}
Specificare un vincolo elenco a livello di codice (SpeechRecognitionListConstraint)
I vincoli di elenco sono un modo leggero per creare grammatiche semplici da un elenco di parole o frasi. Un vincolo di elenco funziona bene per il riconoscimento di frasi brevi e distinte:
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;
}
Specificare un vincolo grammaticale SRGS (SpeechRecognitionGrammarFileConstraint)
Le grammatiche SRGS offrono un set completo di funzionalità per l'interazione vocale complessa, inclusa l'indicazione dell'ordine in cui le parole devono essere pronunciate, la combinazione di parole da più elenchi, il collegamento ad altre grammatiche e l'uso dell'interpretazione semantica:
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;
}
Usare l'estensione .grxml di file per i documenti grammaticali basati su XML conformi alle regole SRGS. Impostare l'azione di compilazione del file su Contenuto e copia nella directory di output su Copia sempre.
Per ulteriori informazioni sugli elementi e gli attributi SRGS, vedere il Riferimento XML della grammatica SRGS.
Gestire i vincoli
Dopo aver caricato una raccolta di vincoli, è possibile abilitare o disabilitare i singoli vincoli impostando la IsEnabled proprietà su true o false. Il valore predefinito è true.
Il caricamento di vincoli una sola volta e quindi l'abilitazione o la disabilitazione in base alle esigenze è più efficiente del caricamento, dello scaricamento e della compilazione dei vincoli per ogni operazione di riconoscimento.
La limitazione del numero di vincoli attivi migliora le prestazioni e l'accuratezza del riconoscimento vocale. Decidere quali vincoli abilitare in base alle frasi previste dall'app nel contesto corrente.