Schnellstart: Spracherkennung (HTML)

[ Dieser Artikel richtet sich an Windows 8.x- und Windows Phone 8.x-Entwickler, die Windows-Runtime-Apps schreiben. Wenn Sie für Windows 10 entwickeln, finden Sie weitere Informationen unter neueste Dokumentation]

Nutzen Sie die Spracherkennung als Eingabemöglichkeit oder zum Durchführen einer Aktion, eines Befehls oder einer Aufgabe innerhalb Ihrer Universal Windows-App.

Hinweis  Sprachbefehle und Spracherkennung werden von Windows Store-Apps in Windows 8 und Windows 8.1 nicht unterstützt.

 

Die Spracherkennung besteht aus einer Sprachlaufzeit, Erkennungs-APIs zum Programmieren der Laufzeit, einsatzfähiger Grammatik für das Diktieren und die Websuche und einer Standard-UI, die Benutzern das Auffinden und Verwenden der Spracherkennungsfeatures erleichtert.

Ziel: Erfahren Sie, wie Sie die Spracherkennung aktivieren.

Voraussetzungen

Wenn Sie noch keine Erfahrungen mit der Entwicklung von Apps mit JavaScript haben:

Lesen Sie zum Abschließen dieses Lernprogramms die Informationen unter diesen Links, um sich mit den hier erläuterten Technologien vertraut zu machen.

Richtlinien für die Benutzeroberfläche:

Nützliche Tipps zum Entwerfen einer hilfreichen und ansprechenden App mit Sprachfunktion finden Sie unter Richtlinien für den Sprachentwurf.

Anweisungen

1. Einrichten des Audiofeeds

Stellen Sie sicher, dass Ihr Gerät über ein Mikrofon oder Ähnliches verfügt.

Legen Sie die Gerätefunktion Mikrofon (DeviceCapability) im App-Paketmanifest (package.appxmanifest-Datei) fest, um Zugriff auf den Audiofeed des Mikrofons zu erhalten. Mit dieser Funktion kann die App Audio von angeschlossenen Mikrofonen aufzeichnen.

Informationen finden Sie unter Deklaration der App-Funktionen.

2. Erkennen von Spracheingabe

Mit einer Einschränkung werden die Wörter und Wortgruppen (Vokabular) definiert, die eine App bei der Spracheingabe erkennt. Einschränkungen sind der Kern der Spracherkennung und verleihen Ihrer App Kontrolle über die Genauigkeit der Spracherkennung.

Sie können verschiedene Arten von Einschränkungen bei der Spracherkennung nutzen:

  1. Vordefinierte Grammatiken (SpeechRecognitionTopicConstraint).

    Mit vordefinierten Diktier- und Websuchgrammatiken können Sie eine Spracherkennung für Ihre App bereitstellen, ohne eine Grammatik erstellen zu müssen. Bei Verwendung dieser Grammatiken wird die Spracherkennung von einem Remotewebdienst durchgeführt, und die Ergebnisse werden an das Gerät zurückgegeben.

    Die Standardgrammatik der Freitext-Diktierfunktion erkennt die meisten Wörter und Ausdrücke, die Benutzer in einer bestimmten Sprache sagen können, und ist für die Erkennung kurzer Ausdrücke optimiert. Die vordefinierte Grammatik für das Diktieren kommt dann zum Einsatz, wenn Sie keine Einschränkungen für Ihr SpeechRecognizer-Objekt festlegen. Die Freitext-Diktierfunktion ist nützlich, wenn Sie nicht einschränken möchten, was Benutzer sagen können. Typische Verwendungsmöglichkeiten sind das Erstellen von Notizen oder das Diktieren eines Nachrichtentexts.

    Die Grammatik für die Websuche enthält wie die Diktiergrammatik eine große Anzahl von Wörtern und Ausdrücken, die Benutzer sagen können. Sie ist allerdings für die Erkennung von Begriffen optimiert, die beim Suchen im Web häufig verwendet werden.

    Hinweis  Da vordefinierte Diktier- und Websuchgrammatiken sehr umfangreich sein können und online bereitgestellt werden (nicht auf dem Gerät), ist die Leistung u. U. nicht so gut wie bei einer lokal auf dem Gerät installierten benutzerdefinierten Grammatik.

     

    Diese vordefinierten Grammatiken können zum Erkennen von bis zu zehn Sekunden Spracheingabe verwendet werden. Sie müssen dazu keinen Code selbst erstellen. Sie erfordern jedoch eine Netzwerkverbindung.

    Wichtig  

    Zum Verwenden der Webdiensteinschränkungen muss unter Einstellungen die Unterstützung für die Spracheingabe und das Diktieren aktiviert sein. Aktivieren Sie dazu auf der Seite Settings -> Privacy -> Speech, inking, and typing die Option "Kennenlernen".

    Öffnen Sie diese Seite mit Einstellungen, indem Sie Windows.System.Launcher.LaunchUriAsync(uri); aufrufen. Hierbei ist uri als var uri = new Windows.Foundation.Uri("ms-settings:privacy-accounts"); definiert.

     

  2. Einschränkungen per programmgesteuerter Liste (SpeechRecognitionListConstraint).

    Einschränkungen per programmgesteuerter Liste sind eine unkomplizierte Methode für die Erstellung einfacher Grammatiken in Form einer Liste von Wörtern und Ausdrücken. Eine Einschränkungsliste eignet sich gut für die Erkennung kurzer, einzelner Ausdrücke. Das explizite Angeben aller Wörter in einer Grammatik verbessert auch die Erkennungsgenauigkeit, da das Spracherkennungsmodul nur eine Übereinstimmung bestätigen muss. Die Liste kann auch programmgesteuert aktualisiert werden.

    Eine Einschränkungsliste besteht aus einem Array von Zeichenfolgen, die die Spracheingaben darstellen, die von Ihrer App für einen Erkennungsvorgang akzeptiert werden. Sie können in Ihrer App eine Einschränkungsliste einrichten, indem Sie ein Einschränkungslistenobjekt für die Spracherkennung erstellen und ein Array mit Zeichenfolgen übergeben. Fügen Sie dieses Objekt dann der Einschränkungsauflistung der Erkennung hinzu. Die Erkennung ist erfolgreich, wenn die Spracherkennung die Zeichenfolgen des Arrays erkennt.

  3. SRGS-Grammatik (SpeechRecognitionGrammarFileConstraint).

    Eine Speech Recognition Grammar Specification (SRGS)-Grammatik ist ein statisches Dokument, das im Gegensatz zu einer Einschränkung per programmgesteuerter Liste das in SRGS Version 1.0 definierte XML-Format verwendet. Eine SRGS-Grammatik bietet die höchstmögliche Kontrolle über die Spracherkennungsfunktion, da Sie mehrere semantische Bedeutungen in einem einzigen Erkennungsvorgang erfassen können.

  4. Einschränkungen für Sprachbefehle (SpeechRecognitionVoiceCommandDefinitionConstraint)

    Verwenden Sie eine Voice Command Definition-(VCD-)XML-Datei, um die Befehle zu definieren, mit denen der Benutzer Aktionen initiieren kann, wenn er Ihre App aktiviert. Weitere Informationen finden Sie unter Schnellstart: Sprachbefehle.

Hinweis  Der von Ihnen verwendete Einschränkungstyp richtet sich nach der Komplexität der Erkennungsfunktion, die Sie erstellen möchten. Für eine bestimmte Erkennungsaufgabe kann jeweils einer der Ansätze am besten geeignet sein, und vielleicht haben Sie in Ihrer App sogar für alle Einschränkungsarten Verwendung.

Informationen zu den ersten Schritten für Einschränkungen finden Sie unter So wird’s gemacht: Definieren von benutzerdefinierten Erkennungseinschränkungen.

 

Die vordefinierte Diktiergrammatik von Universal Windows-Apps erkennt die meisten Wörter und kurzen Wortgruppen einer Sprache. Sie wird standardmäßig aktiviert, wenn ein Spracherkennungsobjekt ohne benutzerdefinierte Einschränkungen instanziiert wird.

In diesem Beispiel zeigen wir Ihnen, wie Sie:

  • eine Spracherkennung erstellen,
  • die standardmäßigen Windows Phone-Einschränkungen kompilieren (es wurde keine Grammatik zum Grammatiksatz der Spracherkennung hinzugefügt) und
  • die Spracherkennung starten, indem Sie die einfache Erkennungs-UI und das TTS-Feedback der RecognizeWithUIAsync-Methode verwenden. Verwenden Sie die RecognizeAsync-Methode, wenn die Standard-UI nicht benötigt wird.
function buttonSpeechRecognizerClick() {
    // Create an instance of SpeechRecognizer.
    var speechRecognizer =
      new Windows.Media.SpeechRecognition.SpeechRecognizer();

    // Compile the default dictation grammar.
    speechRecognizer.compileConstraintsAsync().done(
      // Success function.
      function (result) {
          // Start recognition.
          speechRecognizer.recognizeWithUIAsync().done(
            // Success function.
            function (speechRecognitionResult) {
                // Do something with the recognition result.
                var messageDialog =
                  new Windows.UI.Popups.MessageDialog(
                  speechRecognitionResult.text, "Text spoken");
                messageDialog.showAsync();
            },
            // Error function.
            function (err) {
                WinJS.log && WinJS.log("Speech recognition failed.");
            });
      },
      // Error function.
      function (err) {
          WinJS.log && WinJS.log("Constraint compilation failed.");
      });
    speechRecognizer.close();
}

3. Anpassen der Erkennungs-UI

Wenn Ihre App die Spracherkennung durch Aufruf von SpeechRecognizer.RecognizeWithUIAsync zu leisten versucht, werden mehrere Bildschirme in der folgenden Reihenfolge angezeigt.

Wenn Sie eine Einschränkung auf der Grundlage einer vordefinierten Grammatik (Diktat oder Websuche) verwenden:

  • Der Listening-Bildschirm.
  • Der Thinking-Bildschirm.
  • Der Heard you say-Bildschirm oder der Fehlerbildschirm.

Wenn Sie eine Einschränkung auf der Grundlage von Wörtern oder Ausdrücken oder eine Einschränkung auf der Grundlage einer SGRS-Grammatikdatei verwenden:

  • Der Listening-Bildschirm.
  • Der Did you say-Bildschirm, falls die vom Benutzer ausgesprochenen Wörter als mehrere potenzielle Ergebnisse interpretiert werden können.
  • Der Heard you say-Bildschirm oder der Fehlerbildschirm.

Die folgende Abbildung zeigt ein Beispiel für den Fluss zwischen Bildschirmen für die Spracherkennung mit einer Einschränkung auf der Grundlage einer SGRS-Grammatikdatei. In diesem Beispiel war die Spracherkennung erfolgreich.

Bildschirme für eine Einschränkung auf der Grundlage einer SGRS-Grammatikdatei

Der Listening-Bildschirm kann Beispiele für Wörter oder Ausdrücke zur Erkennung durch die App bereitstellen. Hier zeigen wir, wie Sie die Eigenschaften der SpeechRecognizerUIOptions-Klasse (abgerufen durch Aufruf der SpeechRecognizer.UIOptions-Eigenschaft) zur Anpassung von Inhalt auf dem Listening-Bildschirm verwenden.

function buttonSpeechRecognizerSRGSConstraintClick() {
    // Create an instance of SpeechRecognizer.
    var speechRecognizer =
      new Windows.Media.SpeechRecognition.SpeechRecognizer();

    speechRecognizer.uiOptions.audiblePrompt = "Say what you want to search for...";
    speechRecognizer.uiOptions.exampleText = "Ex. 'yes', 'no'";

    // Add a grammar file constraint to the recognizer.
    var uri = new Windows.Foundation.Uri("ms-appx:///data/srgs.grxml");
    var storageFile =
        Windows.Storage.StorageFile.getFileFromApplicationUriAsync(uri).then(
        // Success function.
        function (srgs) {
            var grammarfileConstraint =
                new Windows.Media.SpeechRecognition.SpeechRecognitionGrammarFileConstraint(srgs, "yesorno");
            speechRecognizer.constraints.append(grammarfileConstraint);
            // Compile the default dictation grammar.
            speechRecognizer.compileConstraintsAsync().then(
              // Success function.
              function (result) {
                  // Start recognition.
                  speechRecognizer.recognizeWithUIAsync().done(
                    // Success function.
                    function (speechRecognitionResult) {
                        // Do something with the recognition result.
                        var messageDialog =
                          new Windows.UI.Popups.MessageDialog(
                          speechRecognitionResult.text, "Text spoken");
                        messageDialog.showAsync();
                    },
                    // Error function.
                    function (err) {
                        WinJS.log && WinJS.log("Speech recognition failed.");
                    });
              },
              // Error function.
              function (err) {
                  WinJS.log && WinJS.log("Constraint compilation failed.");
              });
        },
        // Error function.
        function (err) {
            WinJS.log && WinJS.log("File retrieval failed.");
        });
    speechRecognizer.close();
}

Zusammenfassung und nächste Schritte

Sie haben erfahren, wie Sie mithilfe von vordefinierter Grammatik und der Spracherkennungs-UI der Universal Windows-App einfache Spracherkennung implementieren.

Als Nächstes sollten Sie die Informationen unter So wird’s gemacht: Definieren von benutzerdefinierten Erkennungseinschränkungen und So wird's gemacht: Aktivieren des kontinuierlichen Diktierens lesen.

Verwandte Themen

Reaktion auf Sprachinteraktionen

Designer

Richtlinien für den Sprachentwurf