Udostępnij za pośrednictwem


RecognizedAudio.GetRange(TimeSpan, TimeSpan) Metoda

Definicja

Wybiera i zwraca sekcję bieżącego rozpoznanego dźwięku jako dane binarne.

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

Parametry

audioPosition
TimeSpan

Punkt początkowy danych dźwiękowych, które mają zostać zwrócone.

duration
TimeSpan

Długość segmentu do zwrócenia.

Zwraca

Zwraca podsekcję rozpoznanego dźwięku zdefiniowanego przez audioPosition element i duration.

Wyjątki

audioPosition i duration zdefiniuj segment audio poza zakresem bieżącego segmentu.

Bieżący rozpoznany dźwięk nie zawiera żadnych danych.

Przykłady

Poniższy przykład tworzy gramatykę rozpoznawania mowy dla danych wejściowych nazw, dodaje procedurę obsługi dla SpeechRecognized zdarzenia i ładuje gramatykę do rozpoznawania mowy w procesie. Następnie zapisuje informacje audio o nazwie części danych wejściowych do pliku audio. Plik audio jest używany jako dane wejściowe do SpeechSynthesizer obiektu, który mówi frazę zawierającą nagrany dźwięk.

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);  
  }  
}  

Dotyczy

Zobacz też