Freigeben über


RecognizedAudio.GetRange(TimeSpan, TimeSpan) Methode

Definition

Wählt aus und gibt einen Abschnitt des aktuellen erkannten Audio als Binärdaten zurück.

public:
 System::Speech::Recognition::RecognizedAudio ^ GetRange(TimeSpan audioPosition, TimeSpan duration);
public System.Speech.Recognition.RecognizedAudio GetRange (TimeSpan audioPosition, TimeSpan duration);
member this.GetRange : TimeSpan * TimeSpan -> System.Speech.Recognition.RecognizedAudio
Public Function GetRange (audioPosition As TimeSpan, duration As TimeSpan) As RecognizedAudio

Parameter

audioPosition
TimeSpan

Der Anfangspunkt der Audiodaten, die zurückgegeben werden sollen.

duration
TimeSpan

Die Länge des Segments, das zurückgegeben werden soll.

Gibt zurück

Gibt einen Unterabschnitt des erkannten Audio zurück, wie durch audioPosition und duration definiert.

Ausnahmen

audioPosition und duration definieren ein Audio-Segment außerhalb des Bereichs des aktuellen Segments.

Das aktuelle erkannte Audiodatei enthält keine Daten.

Beispiele

Im folgenden Beispiel wird eine Spracherkennungsgrammatik für die Namenseingabe erstellt, ein Handler für das SpeechRecognized Ereignis hinzugefügt und die Grammatik in eine prozessinterne Spracherkennung geladen. Anschließend werden die Audioinformationen für den Namensteil der Eingabe in eine Audiodatei geschrieben. Die Audiodatei wird als Eingabe für ein SpeechSynthesizer Objekt verwendet, das einen Ausdruck spricht, der das aufgezeichnete Audio enthält.

private static void AddNameGrammar(SpeechRecognitionEngine recognizer)  
{  
  GrammarBuilder builder = new GrammarBuilder();  
  builder.Append("My name is");  
  builder.AppendWildcard();  

  Grammar nameGrammar = new Grammar(builder);  
  nameGrammar.Name = "Name Grammar";  
  nameGrammar.SpeechRecognized +=  
    new EventHandler<SpeechRecognizedEventArgs>(  
      NameSpeechRecognized);  

  recognizer.LoadGrammar(nameGrammar);  
}  

// Handle the SpeechRecognized event of the name grammar.  
private static void NameSpeechRecognized(  
  object sender, SpeechRecognizedEventArgs e)  
{  
  Console.WriteLine("Grammar ({0}) recognized speech: {1}",  
    e.Result.Grammar.Name, e.Result.Text);  

  try  
  {  

    // The name phrase starts after the first three words.  
    if (e.Result.Words.Count < 4)  
    {  

      // Add code to check for an alternate that contains the wildcard.  
      return;  
    }  

    RecognizedAudio audio = e.Result.Audio;  
    TimeSpan start = e.Result.Words[3].AudioPosition;  
    TimeSpan duration = audio.Duration - start;  

    // Add code to verify and persist the audio.  
    string path = @"C:\temp\nameAudio.wav";  
    using (Stream outputStream = new FileStream(path, FileMode.Create))  
    {  
      RecognizedAudio nameAudio = audio.GetRange(start, duration);  
      nameAudio.WriteToWaveStream(outputStream);  
      outputStream.Close();  
    }  

    Thread testThread =  
      new Thread(new ParameterizedThreadStart(TestAudio));  
    testThread.Start(path);  
  }  
  catch (Exception ex)  
  {  
    Console.WriteLine("Exception thrown while processing audio:");  
    Console.WriteLine(ex.ToString());  
  }  
}  

// Use the speech synthesizer to play back the .wav file  
// that was created in the SpeechRecognized event handler.  

private static void TestAudio(object item)  
{  
  string path = item as string;  
  if (path != null && File.Exists(path))  
  {  
    SpeechSynthesizer synthesizer = new SpeechSynthesizer();  
    PromptBuilder builder = new PromptBuilder();  
    builder.AppendText("Hello");  
    builder.AppendAudio(path);  
    synthesizer.Speak(builder);  
  }  
}  

Gilt für:

Weitere Informationen