Aracılığıyla paylaş


RecognizedAudio.GetRange(TimeSpan, TimeSpan) Yöntem

Tanım

Geçerli tanınan sesin bir bölümünü ikili veri olarak seçer ve döndürür.

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

Parametreler

audioPosition
TimeSpan

Döndürülecek ses verilerinin başlangıç noktası.

duration
TimeSpan

Döndürülecek segmentin uzunluğu.

Döndürülenler

ve durationtarafından audioPosition tanımlandığı gibi tanınan sesin bir alt kısmını döndürür.

Özel durumlar

audioPosition ve duration geçerli segmentin aralığının dışında bir ses kesimi tanımlayın.

Geçerli tanınan ses veri içermiyor.

Örnekler

Aşağıdaki örnek, ad girişi için bir konuşma tanıma dil bilgisi oluşturur, olay için SpeechRecognized bir işleyici ekler ve dil bilgisini işlem içi konuşma tanıyıcısına yükler. Ardından, girişin ad bölümü için ses bilgilerini bir ses dosyasına yazar. Ses dosyası, kaydedilen sesi içeren bir tümcecik konuşan bir SpeechSynthesizer nesneye giriş olarak kullanılır.

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

Şunlara uygulanır

Ayrıca bkz.