Freigeben über


SpeechRecognizer.RequestRecognizerUpdate Methode

Definition

Fordert an, dass die freigegebene Erkennung anhält und ihren Zustand aktualisiert.

Überlädt

RequestRecognizerUpdate(Object, TimeSpan)

Fordert an, dass die freigegebene Erkennung anhält, um den Zustand zu aktualisieren und stellt ein Offset für das zugeordnete Ereignis bereit.

RequestRecognizerUpdate(Object)

Fordert an, dass die freigegebene Erkennung anhält, um den Zustand zu aktualisieren und stellt ein Benutzertoken für das zugeordnete Ereignis bereit.

RequestRecognizerUpdate()

Fordert an, dass die freigegebene Erkennung anhält und ihren Zustand aktualisiert.

Beispiele

Das folgende Beispiel zeigt eine Konsolenanwendung, die Objekte lädt und entlädt Grammar . Die Anwendung verwendet die RequestRecognizerUpdate -Methode, um die Spracherkennungs-Engine anzufordern, anzuhalten, damit sie ein Update erhalten kann. Anschließend lädt oder entlädt die Anwendung ein Grammar Objekt.

Bei jedem Update schreibt ein Handler für RecognizerUpdateReached das Ereignis den Namen und status der aktuell geladenen Grammar Objekte in die Konsole. Wenn Grammatiken geladen und entladen werden, erkennt die Anwendung zuerst die Namen der Nutztiere, dann die Namen der Nutztiere und die Namen der Früchte, dann nur die Namen der Früchte.

using System;  
using System.Speech.Recognition;  
using System.Collections.Generic;  
using System.Threading;  

namespace SampleRecognition  
{  
  class Program  
  {  
    private static SpeechRecognizer recognizer;  
    public static void Main(string[] args)  
    {  

      // Initialize an in-process speech recognition engine and configure its input.  
      recognizer = new SpeechRecognizer();  

      // Create the first grammar - Farm.  
      Choices animals = new Choices(new string[] { "cow", "pig", "goat" });  
      GrammarBuilder farm = new GrammarBuilder(animals);  
      Grammar farmAnimals = new Grammar(farm);  
      farmAnimals.Name = "Farm";  

      // Create the second grammar - Fruit.  
      Choices fruit = new Choices(new string[] { "apples", "peaches", "oranges" });  
      GrammarBuilder favorite = new GrammarBuilder(fruit);  
      Grammar favoriteFruit = new Grammar(favorite);  
      favoriteFruit.Name = "Fruit";  

      // Attach event handlers.  
      recognizer.SpeechRecognized +=  
        new EventHandler<SpeechRecognizedEventArgs>(recognizer_SpeechRecognized);  
      recognizer.RecognizerUpdateReached +=  
        new EventHandler<RecognizerUpdateReachedEventArgs>(recognizer_RecognizerUpdateReached);  

      // Check to see if recognizer is loaded, wait if it is not loaded.  
      if (recognizer.State != RecognizerState.Listening)  
      {  
        Thread.Sleep(5000);  

        // Put recognizer in listening state.  
        recognizer.EmulateRecognizeAsync("Start listening");  
      }  

      // Load the Farm grammar.  
      recognizer.LoadGrammar(farmAnimals);  
      Console.WriteLine("Grammar Farm is loaded");  

      // Pause to recognize farm animals.  
      Thread.Sleep(7000);  
      Console.WriteLine();  

      // Request an update and load the Fruit grammar.  
      recognizer.RequestRecognizerUpdate();  
      recognizer.LoadGrammarAsync(favoriteFruit);  
      Thread.Sleep(5000);  

      // Request an update and unload the Farm grammar.  
      recognizer.RequestRecognizerUpdate();  
      recognizer.UnloadGrammar(farmAnimals);  
      Thread.Sleep(5000);  

      // Keep the console window open.  
      Console.WriteLine();  
      Console.WriteLine("Press any key to exit...");  
      Console.ReadKey();  
    }  

    public static void recognizer_RecognizerUpdateReached(object sender, RecognizerUpdateReachedEventArgs e)  
    {  
      // At the update, get the names and enabled status of the currently loaded grammars.  
      Console.WriteLine();  
      Console.WriteLine("Update reached:");  
      Thread.Sleep(1000);  
      string qualifier;  
      List<Grammar> grammars = new List<Grammar>(recognizer.Grammars);  
      foreach (Grammar g in grammars)  
      {  
        qualifier = (g.Enabled) ? "enabled" : "disabled";  
        Console.WriteLine("  Grammar {0} is loaded and is {1}.",  
        g.Name, qualifier);  
      }  
    }  

    // Write the text of the recognized phrase to the console.  
    static void recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)  
    {  
      Console.WriteLine("  Speech recognized: " + e.Result.Text);  
    }  
  }  
}  

Hinweise

Verwenden Sie diese Methode, um Änderungen mit der freigegebenen Erkennung zu synchronisieren. Wenn Sie beispielsweise eine Spracherkennungsgrammatik laden oder entladen, während die Erkennung Eingabe verarbeitet, verwenden Sie diese Methode und das RecognizerUpdateReached Ereignis, um das Anwendungsverhalten mit dem Status der Erkennung zu synchronisieren.

Wenn diese Methode aufgerufen wird, hält die Erkennung asynchrone Vorgänge an oder schließt sie ab und generiert ein RecognizerUpdateReached Ereignis. Ein RecognizerUpdateReached Ereignishandler kann dann den Status der Erkennung zwischen Erkennungsvorgängen ändern.

Wenn diese Methode aufgerufen wird:

  • Wenn die Erkennung keine Eingabe verarbeitet, generiert die Erkennung das RecognizerUpdateReached Ereignis sofort.

  • Wenn die Erkennung Eingabe verarbeitet, die aus Stille oder Hintergrundgeräuschen besteht, hält der Erkennungsvorgang an und generiert das RecognizerUpdateReached Ereignis.

  • Wenn die Erkennung Eingabe verarbeitet, die nicht aus Stille oder Hintergrundgeräuschen besteht, schließt die Erkennung den Erkennungsvorgang ab und generiert dann das RecognizerUpdateReached Ereignis.

Während die Erkennung das RecognizerUpdateReached Ereignis verarbeitet:

  • Die Erkennung verarbeitet keine Eingabe, und der Wert der RecognizerAudioPosition Eigenschaft bleibt gleich.

  • Die Erkennung sammelt weiterhin Eingaben, und der Wert der AudioPosition Eigenschaft kann sich ändern.

Verwenden Sie die PauseRecognizerOnRecognition -Eigenschaft, um zu ändern, ob die freigegebene Erkennung Erkennungsvorgänge anhält, während eine Anwendung ein SpeechRecognized Ereignis verarbeitet.

RequestRecognizerUpdate(Object, TimeSpan)

Quelle:
SpeechRecognizer.cs
Quelle:
SpeechRecognizer.cs
Quelle:
SpeechRecognizer.cs

Fordert an, dass die freigegebene Erkennung anhält, um den Zustand zu aktualisieren und stellt ein Offset für das zugeordnete Ereignis bereit.

public:
 void RequestRecognizerUpdate(System::Object ^ userToken, TimeSpan audioPositionAheadToRaiseUpdate);
public void RequestRecognizerUpdate (object userToken, TimeSpan audioPositionAheadToRaiseUpdate);
member this.RequestRecognizerUpdate : obj * TimeSpan -> unit
Public Sub RequestRecognizerUpdate (userToken As Object, audioPositionAheadToRaiseUpdate As TimeSpan)

Parameter

userToken
Object

Benutzerdefinierte Informationen, die Informationen für den Vorgang enthalten.

audioPositionAheadToRaiseUpdate
TimeSpan

Der Offset von der aktuellen AudioPosition, um die Anforderung zu verzögern.

Hinweise

Die Erkennung initiiert die Anforderung zum Erkennungsupdate erst, wenn die RecognizerAudioPosition Erkennungsanforderung gleich dem aktuellen AudioPosition plus dem Wert des audioPositionAheadToRaiseUpdate Parameters entspricht.

Wenn die Erkennung das RecognizerUpdateReached Ereignis generiert, enthält die UserToken Eigenschaft des RecognizerUpdateReachedEventArgs den Wert des userToken Parameters.

Weitere Informationen

Gilt für:

RequestRecognizerUpdate(Object)

Quelle:
SpeechRecognizer.cs
Quelle:
SpeechRecognizer.cs
Quelle:
SpeechRecognizer.cs

Fordert an, dass die freigegebene Erkennung anhält, um den Zustand zu aktualisieren und stellt ein Benutzertoken für das zugeordnete Ereignis bereit.

public:
 void RequestRecognizerUpdate(System::Object ^ userToken);
public void RequestRecognizerUpdate (object userToken);
member this.RequestRecognizerUpdate : obj -> unit
Public Sub RequestRecognizerUpdate (userToken As Object)

Parameter

userToken
Object

Benutzerdefinierte Informationen, die Informationen für den Vorgang enthalten.

Hinweise

Wenn die Erkennung das RecognizerUpdateReached Ereignis generiert, enthält die UserToken Eigenschaft des RecognizerUpdateReachedEventArgs den Wert des userToken Parameters.

Verwenden Sie die RequestRecognizerUpdate -Methode, um einen Audiopositionsoffset anzugeben.

Weitere Informationen

Gilt für:

RequestRecognizerUpdate()

Quelle:
SpeechRecognizer.cs
Quelle:
SpeechRecognizer.cs
Quelle:
SpeechRecognizer.cs

Fordert an, dass die freigegebene Erkennung anhält und ihren Zustand aktualisiert.

public:
 void RequestRecognizerUpdate();
public void RequestRecognizerUpdate ();
member this.RequestRecognizerUpdate : unit -> unit
Public Sub RequestRecognizerUpdate ()

Hinweise

Wenn die Erkennung das RecognizerUpdateReached Ereignis generiert, ist nulldie UserToken -Eigenschaft von RecognizerUpdateReachedEventArgs .

Verwenden Sie zum Bereitstellen eines Benutzertokens die RequestRecognizerUpdate -Methode oder RequestRecognizerUpdate . Verwenden Sie die RequestRecognizerUpdate -Methode, um einen Audiopositionsoffset anzugeben.

Weitere Informationen

Gilt für: