Freigeben über


SpeechRecognitionEngine.AudioPosition Eigenschaft

Definition

Ruft die aktuelle Position im Audiodatenstrom ab, der vom Gerät generiert wird, das Eingaben für die SpeechRecognitionEngine.

public:
 property TimeSpan AudioPosition { TimeSpan get(); };
public TimeSpan AudioPosition { get; }
member this.AudioPosition : TimeSpan
Public ReadOnly Property AudioPosition As TimeSpan

Eigenschaftswert

Die aktuelle Position im Audiodatenstrom, der vom Eingabegerät generiert wird.

Beispiele

Im folgenden Beispiel verwendet die In-Process-Spracherkennung eine Diktiergrammatik, um die Spracheingabe abzugleichen. Ein Handler für das SpeechDetected Ereignis schreibt in die Konsole, AudioPositionRecognizerAudioPositionund AudioLevel wenn die Spracherkennung die Sprache bei der Eingabe erkennt.

using System;
using System.Speech.Recognition;

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

      // Initialize an in-process speech recognition engine for US English.
      using (recognizer = new SpeechRecognitionEngine(
        new System.Globalization.CultureInfo("en-US")))
      {
        recognizer.SetInputToDefaultAudioDevice();

        // Create a grammar for finding services in different cities.
        Choices services = new Choices(new string[] { "restaurants", "hotels", "gas stations" });
        Choices cities = new Choices(new string[] { "Seattle", "Boston", "Dallas" });

        GrammarBuilder findServices = new GrammarBuilder("Find");
        findServices.Append(services);
        findServices.Append("near");
        findServices.Append(cities);

        // Create a Grammar object from the GrammarBuilder and load it to the recognizer.
        Grammar servicesGrammar = new Grammar(findServices);
        recognizer.LoadGrammarAsync(servicesGrammar);

        // Add handlers for events.
        recognizer.SpeechRecognized +=
          new EventHandler<SpeechRecognizedEventArgs>(recognizer_SpeechRecognized);
        recognizer.SpeechDetected +=
          new EventHandler<SpeechDetectedEventArgs>(recognizer_SpeechDetected);

        // Start asynchronous recognition.
        recognizer.RecognizeAsync();
        Console.WriteLine("Starting asynchronous recognition...");

        // Keep the console window open.
        Console.ReadLine();
      }
    }

    // Gather information about detected speech and write it to the console.
    static void recognizer_SpeechDetected(object sender, SpeechDetectedEventArgs e)
    {
      Console.WriteLine();
      Console.WriteLine("Speech detected:");
      Console.WriteLine("  Audio level: " + recognizer.AudioLevel);
      Console.WriteLine("  Audio position at the event: " + e.AudioPosition);
      Console.WriteLine("  Current audio position: " + recognizer.AudioPosition);
      Console.WriteLine("  Current recognizer audio position: " +
        recognizer.RecognizerAudioPosition);
    }

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

      // Add event handler code here.
    }
  }
}

Hinweise

Die AudioPosition Eigenschaft verweist auf die Position des Eingabegeräts im generierten Audiodatenstrom. Im Gegensatz dazu verweist die RecognizerAudioPosition Eigenschaft auf die Position der Erkennung innerhalb der Audioeingabe. Diese Positionen können unterschiedlich sein. Wenn die Erkennung beispielsweise Eingaben erhalten hat, für die sie noch kein Erkennungsergebnis generiert hat, ist der Wert der RecognizerAudioPosition Eigenschaft kleiner als der Wert der AudioPosition Eigenschaft.

Gilt für:

Weitere Informationen