Dieser Artikel wurde maschinell übersetzt.

Windows Phone

Aktivieren der Sprachfunktion einer Windows Phone 8-App, Teil 2: Dialog innerhalb der App

F. Avery Bishop

Letzten Monat in Teil 1 (msdn.microsoft.com/magazine/jj721592) dieser zweiteiligen Serie, ich ermöglicht Sprachbefehle in einer app für Windows Phone 8 diskutiert. Hier werden Dialog mit dem Benutzer in einer laufenden Anwendung mit Spracherkennung und-Ausgabe erläutert.

Sobald eine app gestartet wurde, können viele Szenarien von Interaktion zwischen dem Benutzer und dem Telefon mit Spracherkennung und-Ausgabe profitieren. Natürlicher Art ist in-app-Dialog. Beispielsweise kann der Benutzer die Magic Memo app starten (siehe vorheriger Artikel) gehen Sie zur Hauptseite und dann mit Spracherkennung und geben eine neue Memo, audio-Feedback erhalten und bestätigen die Änderungen. Sofern es keine Misrecognitions, der Benutzer komplett eingeben und speichern mehrere Notizen ohne Berührung des Telefons (mit Ausnahme der ersten langen "Push" auf die Schaltfläche "Start").

Sie können viele andere Szenarien mit Rede Dialogfeld ausgehend in der app vorstellen. Sobald der Benutzer eine Seite zeigt eine Liste der gespeicherten Favoriten wie Memos, Filme oder Erinnerungsstücke navigiert hat, könnten sie z. B. Anerkennung, eine auszuwählen und eine Aktion ausführen: Bearbeiten Sie, spielen Sie, bestellen Sie, entfernen Sie und so weiter. Sprachausgabe würde dann Lese die Auswahl zurück und fragt nach einer Bestätigung.

In den folgenden Abschnitten werde ich Beispiele für die Verwendung von Spracherkennung für Eingang und Ausgang, gestalten, beginnend mit einfachen Beispielen und arbeiten bis zu komplexeren Beispielen. Ich werde zeigen, wie einfach es ist, die einfachen Fällen implementieren und zeigen einige umfangreichere Funktionen für erweiterte Szenarien zur Verfügung.

Kommunikation für den Benutzer: Sprachsynthese API

Computergenerierte Sprachausgabe nennt verschiedentlich Text To Speech (TTS) oder Sprachsynthese (obwohl strenggenommen TTS mehr als Sprachsynthese umfasst). Häufige Verwendungen sind Anmeldung und Bestätigung, wie bereits erwähnt, aber es ist auch wichtig, andere Anwendungen wie Book-Reader oder Screen-reader.

Ein einfaches Beispiel der Sprachsynthese In seiner einfachsten Form, kann Ihre Anwendung eine Textzeichenfolge gesprochene Audio nur zwei Zeilen Code übersetzen. Hier ist ein Beispiel zur Verwendung von Code extrahiert aus dem Magic Memo-Beispiel:

// Instantiate a speech synthesizer
private SpeechSynthesizer speechOutput = 
  new SpeechSynthesizer();
// ...
// Private method to get a new memo
private async void GetNewMemoByVoice()
{
  await speechOutput.SpeakTextAsync("Say your memo");
  // Other code for capturing a new memo
}

Wenn der Benutzer die Mikrofontaste tappt, hören sie "Sagen Ihr Notizheft" aus der aktuellen Audiogerät gesprochen. In den folgenden Abschnitten werde ich in diesem Beispiel, durch Hinzufügen von Code, der die Eingabe des Benutzers mithilfe der Spracherkennung erweitern.

TTS-Funktionen für erweiterte Szenarien Apps, die stark auf Sprachausgabe verlassen könnte Anwendungsfälle, die erfordern ändern Lautstärke, Tonhöhe oder Lesegeschwindigkeit im Laufe der Rede ausgegeben haben. Um diese fortgeschrittenen Fällen decken, gibt es zwei weitere Methoden: SpeakSsmlAsync und SpeakSsmlFromUriAsync. Diese Methoden anmaßen die Eingabe im Format der Speech Synthesis Markup Language (SSML), ein World Wide Web Consortium (W3C) XML-standard für die Einbettung der Eigenschaften von Audio und die Synthesizer-Engine in den Text gesprochen werden. Ich habe nicht enthalten Beispielcode für SSML in diesem Artikel oder Codedownload Magic Memo, sondern erfahren Sie mehr über SSML in der MSDN Library Referenz-Artikel auf bit.ly/QwWLsu (oder der W3C-Spezifikation unter bit.ly/V4DlgG).

Die Synthesizer-Klasse hat auch Veranstaltungen für SpeakStarted und BookmarkReached, und es gibt Überladungen für jede Methode sprechen, die eine generische Zustandsobjekt wie ein zweiter Parameter helfen Sie verfolgen welche Instanz der Methode sprechen, ein bestimmtes Ereignis generiert. SSML verwenden und die Ereignisse behandeln kann Code Features wie gesprochenen Text hervorheben oder Neustarten eines Anrufs sprechen mitten in einem Absatz geben.

Spracheingabe: Spracherkennung API

Die zwei großen Klassen von Anwendungsfälle für die Spracherkennung in einer app sind Texteingabe und Kommando und Kontrolle. In den ersten Anwendungsfall, Texteingabe, erfasst die app einfach Äußerung des Benutzers als Text; Dies ist nützlich, wenn der Benutzer, dass fast alles, wie in der "neuen"Memo sagen könnte Funktion des Beispielcodes.

Im zweiten Anwendungsfall, Befehl und Steuerung bearbeitet der Nutzer die app durch gesprochenen Äußerung nicht durch Antippen der Schaltflächen oder einen Finger gleiten über das Gesicht des Telefons. Dieser Anwendungsfall ist besonders nützlich im Freisprech-Szenarien wie Autofahren oder kochen.

Ein einfaches Beispiel der Spracherkennung bevor Sie gehen ins Detail über die Features der Spracherkennung in einer app, werfen wir einen Blick auf den einfachsten Fall: Texteingabe in ein paar Zeilen Code.

Abbildung 1 zeigt die GetNewMemo­ByVoice Methode gezeigt, weiter oben, aber mit Linien hinzugefügt, um einen Recognizer-Objekt initialisieren eine Anerkennung-Sitzung starten und das Ergebnis zu behandeln.

Abbildung 1 Recognizer-Objekt initialisieren, Starten einer Sitzung Anerkennung und Behandlung das Ergebnis

private SpeechRecognizerUI speechInput = 
  new SpeechRecognizerUI();
// Set text to display to the user when recognizing
speechInput.Settings.ExampleText = 
  "Example: \"Buy roses\"";
speechInput.Settings.ListenText = "Say your memo";
// ...
// Private method to get a new memo
private async void GetNewMemoByVoice()
{
  await speechOutput.SpeakTextAsync("Say your memo"); // TTS prompt
  var recoResult =
    await speechInput.RecognizeWithUIAsync();
      // Uses default Dictation grammar
  Memo_TB.Text =
    recoResult.RecognitionResult.Text; // Do something with the result
}

Natürlich im echten Code es ist nie so einfach, und wenn Sie im Magic Memo-Beispiel anschauen, sehen Sie einen Try/Catch-Block und einen Scheck über erfolgreiche Anerkennung.

Wenn Sie dies in der Beispielanwendung versuchen, indem Sie auf das Symbol "mic", werden Sie feststellen, dass nachdem Sie Ihr Notizheft gesprochen habe, ein "denken" Bildschirm angezeigt eine Bestätigung UI, folgt nach dem wird das Ergebnis in das Textfeld Memo eingefügt wird. Hinter den Kulissen, die eine Menge los ist, ist nicht zuletzt die Verwendung einer "Grammatik" auf einem Remoteserver für die Spracherkennung. Eine Grammatik ist im Wesentlichen ein Satz von Regeln, die angeben, welche lexikalische Einträge ("Worte") muss der Motor erkennen und in welcher Reihenfolge. In den nächsten Abschnitten werde ich untersuchen die Spracherkennung API und wie es mit der Anerkennung Grammatiken verwendet wird.

Übersicht der Speech Recognition API bevor ich in die Details der Kodierung für die Spracherkennung zu erhalten, nehmen wir eine allgemeine Darstellung der Klassen in der API und ihre Rollen. Abbildung 2 zeigt das grundlegende Layout der API. Das erste, was Sie bemerken ist, dass zwei Boxen Rede­Recognizer im Namen.

Speech Recognition API Design Overview
Abbildung 2 Speech Recognition API Entwurfsübersicht

Wenn Ihre app braucht nicht anzeigen einer Benutzeroberfläche mit Spracherkennung, oder wenn Sie Ihre eigene benutzerdefinierte Benutzeroberfläche anzeigen möchten, sollten Sie eine Kopie der SpeechRecognizer-Klasse angezeigt, in der Mitte-Links instanziieren Abbildung 2. Dieses Objekt als operative Basiseinheit für die Spracherkennung innerhalb dieser API vorstellen. Dies ist, wo die app alle Grammatiken fügt es erfordert. Nach der Initialisierung rufen Sie RecognizeAsync, um die tatsächliche Anerkennung zu tun. Da SpeechRecognizer IAsyncOperation <SpeechRecognitionResult> implementiert, gibt Status und ein Ergebnisobjekt in die Rückruffunktion abgeschlossen. So gibt es keine separate Ereignisse für Anerkennung abgeschlossen oder wie in anderen verwalteten APIs-Rede abgelehnt.

Wie der Name schon sagt, bietet die Klasse die obersten Ebene SpeechRecognizerUI Spracherkennung mit einem Standard-GUI, die konsistent mit der Telefon globale Rede UI für Feedback, Begriffsklärung und Bestätigung ist. Um Kompatibilität mit der globalen Rede UI pflegen und Codierung vereinfachen, sollten die meisten apps anstelle der zuvor erwähnten nicht-UI-Klasse diese Klasse verwenden. Wenn Sie ein SpeechRecognizerUI-Objekt instanziieren, wird es mit zwei wichtige Objekte: Einstellungsobjekt, in dem Sie festlegen den Text der Benutzeroberfläche für den Benutzer angezeigt, und ein SpeechRecognizer-Objekt, in dem Sie Grammatiken angeben können, wie in den folgenden Abschnitten beschrieben. Nach der Initialisierung, rufen Sie RecognizeWithUIAsync auf das übergeordnete SpeechRecognizerUI Objekt, das eine Anerkennung-Sitzung zu starten. Wenn Sie RecognizeAsync für das Kind SpeechRecognizer-Objekt verwenden, erkennt es, als ob das SpeechRecognizer-Objekt verwendeten eigenständig, d. h. ohne Benutzeroberfläche wurden. Im folgenden die Begriffe SpeechRecognizer und Recognize­Async verstehen sich generische Referenzen für die Objekte und Methoden mit und ohne Benutzeroberfläche, je nach Bedarf.

Schritte für die Verwendung von Spracherkennung es gibt vier grundlegende Schritte für die Verwendung der Spracherkennung in einer app für Windows Phone 8:

  1. Erstellen von Grammatiken in der Erkennungsvorgang (nicht erforderlich, wenn eine vordefinierte Grammatik verwenden) verwendet werden.
  2. Durch Festlegen von Eigenschaften und Grammatiken hinzufügen, je nach Bedarf das SpeechRecognizer-Objekt zu initialisieren.
  3. Die Anerkennung-Sitzung starten, durch Aufrufen der Rede­Recognizer.RecognizeAsync oder SpeechRecognizer­- UI.RecognizeWithUIAsync.
  4. Das Erkennungsergebnis verarbeiten und die entsprechende Maßnahmen ergreifen.

Abbildung 1 zeigt alle Schritte außer Nr. 1, Grammatiken erstellen. Die vordefinierte Diktat-Grammatik ist der Standard-Grammatik, so keine Notwendigkeit besteht zu erstellen oder die Grammatiken-Auflistung hinzufügen.

Der Code zum implementieren diese Schritte weitgehend hängt von der Art der Grammatik in der Spracherkennung verwendet. Der nächste Abschnitt beschreibt das Konzept und die Verwendung von Speech Recognition Grammars in Windows Phone 8.

Einführung in Speech Recognition Grammars

Moderne Spracherkennung Motoren alle Grammatiken verwenden zurückhalten den Satz der Sätze durch die Erkennungs-Engine suchen muss (im folgenden "Suchraum" genannt) eine Übereinstimmung des Benutzers Äußerung finden und verbessern so die Erkennungsgenauigkeit. Grammatikregeln kann als einfach als Liste von Zahlen oder so komplex wie gesprochene Text allgemeine Anerkennung von Phrasen.

In der Sprach-API von Windows Phone 8 kannst du eine Grammatik auf drei Arten, wie in den folgenden Abschnitten beschrieben. Für jeden Fall fügen Sie die Grammatik auf eine Auflistung von Grammatiken für das SpeechRecognizer-Objekt.

Einfache Liste Grammatik die einfachste Möglichkeit, eine benutzerdefinierte Grammatik für eine app ist es, eine Liste von allen Sätzen die Erkennung in eine einfache Zeichenfolge-Array überwachen sollte angeben. Diese Liste Grammatiken werden von der auf dem Gerät Spracherkennungs-Engine behandelt. Der Code zum Erstellen und Hinzufügen einer Liste Grammatik ist genauso einfach wie folgt eine statische Liste der Schaltflächennamen gegen erkennen:

commandReco.Recognizer.Grammars.AddGrammarFromList(
  "mainPageCommands", new string[] { "cancel", "save", "quit" });

Das Magic Memo-Beispiel tut etwas ein wenig anspruchsvoller: Er baut die Liste von Phrasen auf das Content-Attribut alle Button-Steuerelemente auf der Seite zu finden und eine String-Liste den Inhalten Text hinzufügen. Finden Sie die InitCommandGrammar-Methode im MainPage.xaml.cs für Details.

Um das Ergebnis einer Anerkennung Sitzung unter Verwendung einer Liste Grammatik zu verarbeiten, lesen Sie die Text-Eigenschaft auf SpeechRecognitionUIResult (oder SpeechRecognitionResult), wenn die Version ohne Benutzeroberfläche verwenden. Sie könnten dazu, z. B. in einer Switch-Anweisung, wie im Abbildung 3.

Abbildung 3 das Ergebnis einer Sitzung Anerkennung Verarbeitung

switch (result.RecognitionResult.Text.ToLower())
{
  case "cancel":
  // Cancel code
    break;
  case "save":
  // Save memo code
    break;
  case "quit":
    break;
  default:
    break;
}

Ein ausführlicheres Beispiel findet sich in der CommandCompleted-Rückruf in MainPage.xaml.cs.

Vordefinierte Grammatik The Speech API auf Windows Phone 8 bietet zwei vordefinierte Grammatiken: Diktat und Websuche. Diktat nennt man auch kurze Nachricht Diktat und beschäftigt die gleiche Grammatik wie in der integrierten SMS-app verwendet wird. Im Gegensatz dazu wird die Phrasen-Suche online benutzt WebSearch optimiert. Der integrierte suchen/Search-Befehl verwendet die gleiche WebSearch-Grammatik.

Der Suchraum für beide vordefinierten Grammatiken ist riesig, dass die Rechenleistung durch entfernte Spracherkennung mit die Rede von Microsoft Web-Service zur Verfügung. Im Allgemeinen sind diese Grammatiken gut geeignet für Führungs- und wegen der Möglichkeit verkennen und das breite Spektrum der möglichen Ergebnisse nicht.

Ein großer Vorteil der vordefinierten Grammatiken ist, dass sie leicht in eine app umzusetzen sind. Z. B. die WebSearch Grammatik eher als die Standard-Diktat-Grammatik in verwenden Abbildung 1, fügen Sie einfach diese Zeile vor dem Aufruf von RecognizeWithUIAsync:

speechInput.Recognizer.Grammars.AddGrammarFromPredefinedType(
  "webSearch", SpeechPredefinedGrammar.WebSearch);

Sie verarbeiten das Erkennungsergebnis aus einer vordefinierten Grammatik durch Zugriff auf das Ergebnis der Text-Eigenschaft, wie im Abbildung 1.

Grammatiken in Speech Recognition Grammar Spezifikationsformat The Speech Recognition Grammar Specification (SRGS) ist ein W3C-Standard im XML-Format. Weitere Informationen über das Format und die Nutzung finden Sie im MSDN Library-Artikel "SRGS Grammar XML-Referenz" unter bit.ly/SYnAu5; der W3C-Spezifikation unter bit.ly/V4DNeS; oder eine beliebige Anzahl von Tutorial Web-Seiten, die Sie finden werden, mit der online Suche nach "SRGS Grammatik." SRGS Grammatiken bieten umfassende Funktionalität wie geben optionale Elemente und Elemente, Regeln, wiederholen Regel verweist, Sonderregeln und Semantik – auf Kosten der zusätzlichen Aufwand erstellen, testen und Debuggen der Grammatik. Windows Phone 8 SRGS Grammatiken nur in der lokalen Engine am Telefon, das heißt, nicht in der Remotedienst dienen.

Zum Hinzufügen einer SRGS Grammatik verweisen Sie den URI der Grammatikdatei in der app-Installationspfad, wie folgt:

commandReco.Recognizer.Grammars.AddGrammarFromUri(
  "srgsCommands", new Uri("ms-appx:///ViewMemos.grxml"));

Ein Hauptvorteil der SRGS Grammatiken ist, dass sie Sie semantische Werte erlauben um die Verarbeitung einer breiten Palette von Benutzermeinungen zu vereinfachen, ohne Zugriff auf die anerkannte Äußerung (die wie immer auf die RecognitionResult.Text-Eigenschaft verfügbar ist) angeben.

SRGS Semantik sind Objekte (die in der Praxis oft Zeichenfolgen sind), dass Sie in Ihre SRGS Grammatik eine <tag> mit Variablen zuweisen Element und eine Teilmenge von ECMAScript. Sie haben zwei Vorteile gegenüber der direkten Verwendung des erkannten Texts:

  1. Vereinfachte Verarbeitung: Absicht des Benutzers können Sie bestimmen, ohne Analyse der erkannten Texts, was auf mehrere Formulare für die gleiche Bedeutung in Anspruch nehmen kann. Z. B. Semantik verwenden, Sie können zuordnen alle Äußerungen, die ja bedeuten — "Ja" "Ja", "positive", "OK" oder "ya" — die einzigen semantischen Wert "Ja".
  2. Einfache Lokalisierung: Derselben Codebehind können Äußerungen in einer beliebigen unterstützten gesprochene Sprache zu verarbeiten, wenn Sie einen einheitlichen Satz von semantischen Werten in allen Sprachen verwenden.

Um diese Konzepte zu veranschaulichen, verwendet das Magic Memo-Beispiel eine einfache Grammatik ViewMemos.grxml zur Steuerung der ViewMemos.xaml-Seite; Auszüge aus dieser Grammatikdatei mit den semantischen Tags werden angezeigt, Abbildung 4. Die Funktion MicImage_Tap in ViewMemos.xaml.cs (Auszug in Abbildung 5) wird die Verwendung von semantischen Werte in einer Aktion des Benutzers Äußerung zuordnen.

Abbildung 4 Auszüge aus ViewMemos.grxml SRGS Grammatik

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE grammar PUBLIC "-//W3C//DTD GRAMMAR 1.0//EN"
  "http://www.w3.org/TR/speech-grammar/grammar.dtd">
<!-- the default grammar language is US English -->
<grammar xmlns="http://www.w3.org/2001/06/grammar"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.w3.org/2001/06/grammar
           http://www.w3.org/TR/speech-grammar/grammar.xsd"
         xml:lang="en-US" version="1.0" tag-format="semantics/1.0"
           root="buttons">
  <rule id="buttons" scope="public">
    <one-of>
      <!--The 'process' semantic can be one of 'clear',
        'save', 'new', or 'select'-->
      <item>
        <!--Reference to the internal rule "scope" below-->
        Clear <ruleref uri="#scope" type="application/srgs+xml"/>
        <tag>out.process="clear";out.num = rules.latest();</tag>
      </item>
      <item>
        Save
        <item repeat="0-1">changes</item>
        <tag>out.process="save";</tag>
      </item>
      <item>
        Enter new
        <tag>out.process="new";</tag>
      </item>
      <item>       
        Select
        <item repeat="0-1">memo</item> <!-- Optional words -->
        <item repeat="0-1">number</item>
        <!--Reference to the internal rule "number" below -->
        <ruleref uri="#number" type="application/srgs+xml"/>
        <tag>out.process="select";out.num = rules.latest();</tag>
      </item>
    </one-of>
  </rule>
  <rule id="scope" scope="private">
    <one-of> <!-- Can be "all", "selected" or a number from the
      'number' rule -->
      <item>
        all <tag>out.scope="all";</tag>
      </item>
      <item>
        selected <tag>out.scope="selected";</tag>
      </item>      <item>
        <item repeat="0-1">memo</item> <!-- Optional words -->
        <item repeat="0-1">number</item>
        <ruleref uri="#number" type="application/srgs+xml"/>
      </item>
    </one-of>
  </rule>
 <rule id="number" scope="public">
      <item>
        1
      </item>
    <!-- See ViewMemos.grxml for the remainder
      of the items in this block -->
  </rule>
</grammar>

Abbildung 5 ein Erkennungsergebnis mit semantische Eigenschaften behandeln

// micImage Tap handler, excerpted from ViewMemos.xaml.cs
private async void micImage_Tap(object sender, GestureEventArgs e)
{
  var commandResult = await commandReco.RecognizeWithUIAsync();
  if (commandResult.ResultStatus ==
    SpeechRecognitionUIStatus.Succeeded)
  {
    var commandSemantics = commandResult.RecognitionResult.Semantics;
    SemanticProperty process = null;
    if (commandSemantics.TryGetValue("process", out process))
    {
      // In general a semantic property can be any object,
      // but in this case it's a string
      switch (process.Value as string)
      {
        // For this grammar the "process" semantic more or less
        // corresponds to a button on the page
        case "select":
        // Command was "Select memo number 'num'"
          break;
        case "clear":
        // Command was "Clear memo number 'num,'" "Clear all"
        // or "Clear Selected"
          break;
        case "save":
        // Command was "Save" or "Save Changes"
          break;
        case "new":
        // Command was "Enter new"
          break;
        default:
          break;
      }
    }
  }
}

In diesem Beispiel oberflächlichen nur die des Machbaren mit Semantik. Um mehr zu erkunden, beginnen Sie mit dem MSDN Library-Artikel, "Mit dem-Element-Tag" bei bit.ly/PA80Wp. Der W3C-Standard für die Semantik ist bei bit.ly/RyqJxc.

Sie können diese Grammatik in der Magic Memo-Probe durch Navigieren auf der Seite ViewMemos und tippen auf das Symbol "mic" ausprobieren. Die Datei ViewMemos.xaml.cs hat das Codebehind, einschließlich Code unter einer # definieren Abschnitt, die Sie aktivieren können (mit # SemanticsDebug definieren) anzeigen und Debuggen die semantischen Werte für das Erkennungsergebnis zurückgegeben wird.

Über mehrere Grammatiken auf dasselbe Objekt Recognizer an dieser Stelle eine natürliche Frage zu stellen ist, ob Sie mehr als eine Grammatik für ein SpeechRecognizer-Objekt verwenden können. Die Antwort ist ja, mit einigen Einschränkungen. Hier sind einige Richtlinien und Codierungsverfahren für mehrere Grammatiken verwenden:

  1. Wenn Sie eine vordefinierte Grammatik hinzufügen, können nicht Sie alle anderen Grammatiken hinzufügen. Darüber hinaus können Sie eine vordefinierte Grammatik nicht deaktivieren; Es ist derjenige und nur Grammatik für seine Lebensdauer dieser Recognizer-Objekt zugeordnet.
  2. Sie können mehrere benutzerdefinierte Grammatiken (Liste Grammatiken und SRGS Grammatiken) zu einem einzigen Recognizer-Objekt hinzufügen und aktivieren oder deaktivieren die Grammatiken, je nach Bedarf für verschiedene Szenarien in Ihrer app:
    1. Um eine bestimmte Grammatik zuzugreifen, verwenden Sie den Namen der Grammatik (die String-Parameter im Aufruf der AddGrammar-Methode übergeben) als Schlüssel für die Auflistung von Grammatiken.
    2. Zum Aktivieren oder Deaktivieren einer bestimmten Grammatik, seine aktiviert Boolean true oder false festgelegt. Beispielsweise wird im folgenden die Grammatik mit dem Namen "ButtonNames" deaktivieren:
      myRecognizer.Grammars["buttonNames"].Aktiviert = False;
  3. Beim Aufrufen der Methoden AddGrammar ist nicht die Grammatik ist in einer Warteschlange auf Verarbeitung warten, setzen aber analysiert oder geladen. Die Grammatik wird kompiliert und geladen auf den ersten Aufruf von RecognizeAsync oder eine optionale Aufruf von Vorspannung­GrammarsAsync. Diese letztere Methode aufrufen, bevor die tatsächliche Nutzung die Wartezeit bei der Rückkehr eines Ergebnis von RecognizeAsync reduzieren kann und empfiehlt sich daher für die meisten Anwendungsfälle.

Der nächste Killer App

Die Sprachfunktionen für apps auf Windows Phone 8 darstellen, unter allen Smartphone-angeboten, die erste voll funktionsfähige Entwicklerplattform für beide Dienste auf dem Gerät und remote-Anerkennung mit Rede. Sprachbefehle und in-app-Dialogfeld verwenden, können Sie Ihre app für viele überzeugende Szenarien öffnen, die Ihre Benutzer begeistern wird. Mit diesen Features Rede könnte Ihre app fangen das Summen und werden die nächsten "killer app" auf dem Markt.

F Avery Bischof arbeitet in Software-Entwicklung für mehr als 20 Jahren mit 12 Jahren verbrachte bei Microsoft, wo er Programmmanager für Sprachplattform ist. Er hat zahlreiche Artikel zur Unterstützung natürlicher Sprachen in Anwendungen veröffentlicht und Themen wie die Unterstützung komplexer Skripts, mehrsprachige Anwendungen und Spracherkennung behandelt.

Unser Dank gilt den folgenden technischen Experten für die Durchsicht dieses Artikels: Eduardo Billo, Rob Chambers, Gabriel Ghizila, Michael Kim und Brian Mouncer