次の方法で共有


RecognizedAudio.WriteToWaveStream(Stream) メソッド

定義

Wave 形式でストリームにオーディオを書き込みます。

public:
 void WriteToWaveStream(System::IO::Stream ^ outputStream);
public void WriteToWaveStream(System.IO.Stream outputStream);
member this.WriteToWaveStream : System.IO.Stream -> unit
Public Sub WriteToWaveStream (outputStream As Stream)

パラメーター

outputStream
Stream

オーディオ データを受け取るストリーム。

次の例では、名前入力用の音声認識文法を作成し、イベントのハンドラーを SpeechRecognized 追加して、インプロセス音声認識エンジンに文法を読み込みます。 次に、入力の名前部分のオーディオ情報をオーディオ ファイルに書き込みます。 オーディオ ファイルは、録音されたオーディオを SpeechSynthesizer 含むフレーズを読み上げるオブジェクトへの入力として使用されます。

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

注釈

オーディオ データは、リソース交換ファイル形式 (RIFF) ヘッダーを含む Wave 形式で に outputStream 書き込まれます。

メソッドは WriteToAudioStream 同じバイナリ形式を使用しますが、Wave ヘッダーは含まれません。

適用対象

こちらもご覧ください