Festlegen der Sprache für die Spracherkennung

Erfahren Sie, wie Sie eine installierte Sprache auswählen, die für die Spracherkennung verwendet werden soll.

Important APIs: SupportedTopicLanguages, SupportedGrammarLanguages, Language

Hier werden die auf einem System installierten Sprachen aufgelistet, die Standardsprache ermittelt und eine andere Sprache für die Erkennung ausgewählt.

Voraussetzungen:

Dieses Thema basiert auf Spracherkennung.

Sie sollten ein grundlegendes Verständnis von Spracherkennung und ihren Einschränkungen haben.

Wenn Sie noch keine Erfahrung mit der Entwicklung von Windows-Apps haben, schauen Sie sich diese Themen an, um sich mit den hier erläuterten Technologien vertraut zu machen.

Richtlinien für die Benutzererfahrung:

Hilfreiche Tipps zum Entwerfen einer nützlichen und ansprechenden sprachgesteuerten App finden Sie unter Richtlinien für das Sprachdesign.

Standardsprache identifizieren

Eine Spracherkennung verwendet die Systemsprache als Standarderkennungssprache. Diese Sprache wird vom Benutzer auf dem Bildschirm "Geräteeinstellungen" > System > Spracherkennung > Sprachausgabe festgelegt.

Wir identifizieren die Standardsprache, indem wir die statische Eigenschaft SystemSpeechLanguage überprüfen.

var language = SpeechRecognizer.SystemSpeechLanguage; 

Bestätigen einer installierten Sprache

Installierte Sprachen können zwischen Geräten variieren. Sie sollten das Vorhandensein einer Sprache überprüfen, wenn Sie davon abhängig sind, dass sie für eine bestimmte Einschränkung erforderlich ist.

Anmerkung Nach der Installation eines neuen Sprachpakets ist ein Neustart erforderlich. Eine Ausnahme mit dem Fehlercode SPERR_NOT_FOUND (0x8004503a) wird ausgelöst, wenn die angegebene Sprache nicht unterstützt wird oder ihre Installation noch nicht abgeschlossen wurde.

 

Ermitteln Sie die unterstützten Sprachen auf einem Gerät, indem Sie eine von zwei statischen Eigenschaften der Klasse SpeechRecognizer überprüfen:

  • SupportedTopicLanguages – Die Sammlung von Language-Objekten, die mit vordefinierten Diktier- und Websuchgrammatiken verwendet werden.

  • SupportedGrammarLanguages – Die Auflistung von Language-Objekten, die mit einer Listeneinschränkung oder einer SRGS-Datei (Speech Recognition Grammar Specification) verwendet werden.

Angeben einer Sprache

Um eine Sprache anzugeben, übergeben Sie ein Language-Objekt im SpeechRecognizerKonstruktor.

Hier geben wir "en-US" als Erkennungssprache an.

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

Bemerkungen

Eine Themeneinschränkung kann durch Hinzufügen einer SpeechRecognitionTopicConstraint zur Constraints-Sammlung des SpeechRecognizer konfiguriert werden und anschließend CompileConstraintsAsync aufgerufen werden. Ein SpeechRecognitionResultStatus von TopicLanguageNotSupported wird zurückgegeben, wenn der Erkenner nicht mit einer unterstützten Themensprache initialisiert wird.

Eine Listeneinschränkung wird konfiguriert, indem eine SpeechRecognitionListConstraint zur Constraints-Sammlung des SpeechRecognizer hinzugefügt und anschließend durch einen Aufruf von CompileConstraintsAsync vervollständigt wird. Sie können die Sprache einer benutzerdefinierten Liste nicht direkt angeben. Stattdessen wird die Liste mithilfe der Sprache des Erkennungsmoduls verarbeitet.

Eine SRGS-Grammatik ist ein open-standard XML-Format, das durch die klasse SpeechRecognitionGrammarFileConstraint dargestellt wird. Im Gegensatz zu benutzerdefinierten Listen können Sie die Sprache der Grammatik im SRGS-Markup angeben. CompileConstraintsAsync schlägt fehl mit einem SpeechRecognitionResultStatus von TopicLanguageNotSupported, wenn die Erkennung nicht auf dieselbe Sprache wie das SRGS-Markup initialisiert wird.

Beispiele