Specificare la lingua di riconoscimento vocaleSpecify the speech recognizer language

Scopri come selezionare una lingua installata da usare per il riconoscimento vocale.Learn how to select an installed language to use for speech recognition.

API importanti : SupportedTopicLanguages, SupportedGrammarLanguages, LanguageImportant APIs : SupportedTopicLanguages, SupportedGrammarLanguages, Language

In questo argomento vedremo come enumerare le lingue installate in un sistema, identificare la lingua predefinita e selezionare una lingua diversa per il riconoscimento.Here, we enumerate the languages installed on a system, identify which is the default language, and select a different language for recognition.

Prerequisiti:Prerequisites:

Questo argomento si basa su Riconoscimento vocale.This topic builds on Speech recognition.

È consigliabile disporre di conoscenze di base del riconoscimento vocale e dei vincoli di riconoscimento.You should have a basic understanding of speech recognition and recognition constraints.

Se non si ha familiarità con lo sviluppo di app di Windows, vedere questi argomenti per acquisire familiarità con le tecnologie illustrate qui.If you're new to developing Windows apps, have a look through these topics to get familiar with the technologies discussed here.

Linee guida sull'esperienza utente:User experience guidelines:

Per suggerimenti utili sulla progettazione di un'app pratica e coinvolgente abilitata per i comandi vocali, vedi Linee guida per la progettazione delle funzionalità vocali.For helpful tips about designing a useful and engaging speech-enabled app, see Speech design guidelines .

Identificare la lingua predefinitaIdentify the default language

Uno strumento di riconoscimento vocale usa la lingua per le funzionalità vocali di sistema come lingua di riconoscimento predefinita.A speech recognizer uses the system speech language as its default recognition language. Questa lingua viene impostata dall'utente nella schermata Impostazioni > Sistema > Riconoscimento vocale > Lingua delle funzionalità vocali del dispositivo.This language is set by the user on the device Settings > System > Speech > Speech Language screen.

Per identificare la lingua predefinita, controllare la proprietà statica SystemSpeechLanguage .We identify the default language by checking the SystemSpeechLanguage static property.

var language = SpeechRecognizer.SystemSpeechLanguage; 

Verificare che sia installata una linguaConfirm an installed language

Le lingue installate possono variare tra dispositivi.Installed languages can vary between devices. Dovresti verificare se una lingua è effettivamente disponibile se dipendi da tale lingua per un particolare vincolo.You should verify the existence of a language if you depend on it for a particular constraint.

Nota Dopo l'installazione di un nuovo Language Pack, è necessario riavviare il computer.Note A reboot is required after a new language pack is installed. _ _ Se la lingua specificata non è supportata o l'installazione non è stata completata, viene generata un'eccezione con il codice di errore SPERR non trovato (0x8004503a).An exception with error code SPERR_NOT_FOUND (0x8004503a) is raised if the specified language is not supported or has not finished installing.

Puoi determinare le lingue supportate in un dispositivo selezionando una delle due proprietà statiche della classe SpeechRecognizer:Determine the supported languages on a device by checking one of two static properties of the SpeechRecognizer class:

Specificare una linguaSpecify a language

Per specificare una lingua, passare un oggetto Language nel costruttore SpeechRecognizer .To specify a language, pass a Language object in the SpeechRecognizer constructor.

In questo caso, specifichiamo "en-US" come lingua di riconoscimento.Here, we specify "en-US" as the recognition language.

var language = new Windows.Globalization.Language("en-US"); 
var recognizer = new SpeechRecognizer(language); 

CommentiRemarks

Un vincolo di argomento può essere configurato aggiungendo un SpeechRecognitionTopicConstraint alla raccolta Constraints di SpeechRecognizer e quindi chiamando CompileConstraintsAsync.A topic constraint can be configured by adding a SpeechRecognitionTopicConstraint to the Constraints collection of the SpeechRecognizer and then calling CompileConstraintsAsync. Viene restituito un speechRecognitionResultStatus con valore TopicLanguageNotSupported se lo strumento di riconoscimento non è inizializzato con una lingua supportata per gli argomenti.A SpeechRecognitionResultStatus of TopicLanguageNotSupported is returned if the recognizer is not initialized with a supported topic language.

Un vincolo List viene configurato aggiungendo un SpeechRecognitionListConstraint alla raccolta Constraints di SpeechRecognizer e quindi chiamando CompileConstraintsAsync.A list constraint is configured by adding a SpeechRecognitionListConstraint to the Constraints collection of the SpeechRecognizer and then calling CompileConstraintsAsync. Non è possibile specificare la lingua di un elenco personalizzato direttamente.You cannot specify the language of a custom list directly. L'elenco verrà invece elaborato con la lingua dello strumento di riconoscimento.Instead, the list will be processed using the language of the recognizer.

Una grammatica SRGS è un formato di XML standard aperto rappresentato dalla classe SpeechRecognitionGrammarFileConstraint.An SRGS grammar is an open-standard XML format represented by the SpeechRecognitionGrammarFileConstraint class. Diversamente dagli elenchi personalizzati, puoi specificare la lingua della grammatica nel markup SRGS.Unlike custom lists, you can specify the language of the grammar in the SRGS markup. CompileConstraintsAsync ha esito negativo con un valore TopicLanguageNotSupported per SpeechRecognitionResultStatus se lo strumento di riconoscimento non è inizializzato sulla stessa lingua del markup SRGS.CompileConstraintsAsync fails with a SpeechRecognitionResultStatus of TopicLanguageNotSupported if the recognizer is not initialized to the same language as the SRGS markup.

EsempiSamples