Bagikan melalui


RecognitionResult.GetAudioForWordRange Metode

Definisi

Mendapatkan bagian audio yang terkait dengan rentang kata tertentu dalam hasil pengenalan.

public:
 System::Speech::Recognition::RecognizedAudio ^ GetAudioForWordRange(System::Speech::Recognition::RecognizedWordUnit ^ firstWord, System::Speech::Recognition::RecognizedWordUnit ^ lastWord);
public System.Speech.Recognition.RecognizedAudio GetAudioForWordRange(System.Speech.Recognition.RecognizedWordUnit firstWord, System.Speech.Recognition.RecognizedWordUnit lastWord);
member this.GetAudioForWordRange : System.Speech.Recognition.RecognizedWordUnit * System.Speech.Recognition.RecognizedWordUnit -> System.Speech.Recognition.RecognizedAudio
Public Function GetAudioForWordRange (firstWord As RecognizedWordUnit, lastWord As RecognizedWordUnit) As RecognizedAudio

Parameter

firstWord
RecognizedWordUnit

Kata pertama dalam rentang.

lastWord
RecognizedWordUnit

Kata terakhir dalam rentang.

Mengembalikan

Bagian audio yang terkait dengan rentang kata.

Pengecualian

Recognizer menghasilkan hasil dari panggilan ke EmulateRecognize atau EmulateRecognizeAsync metode SpeechRecognizer objek atau SpeechRecognitionEngine .

Contoh

Contoh berikut membuat tata bahasa untuk menerima input nama dan melampirkannya sebagai handler untuk peristiwa tersebut SpeechRecognized . Tata bahasa menggunakan kartubebas untuk elemen nama frasa. Penanganan aktivitas menggunakan audio dari wildcard untuk membuat dan memutar perintah salam.

private Grammar CreateNameInputGrammar()
{
  GrammarBuilder wildcardBuilder = new GrammarBuilder();
  wildcardBuilder.AppendWildcard();
  SemanticResultKey nameKey =
    new SemanticResultKey("Name", wildcardBuilder);

  GrammarBuilder nameBuilder =
    new GrammarBuilder("My name is");
  nameBuilder.Append(nameKey);

  Grammar nameGrammar = new Grammar(nameBuilder);
  nameGrammar.Name = "Name input";

  nameGrammar.SpeechRecognized +=
    new EventHandler<SpeechRecognizedEventArgs>(
      NameInputHandler);

  return nameGrammar;
}

// Handle the SpeechRecognized event for the name grammar.
private void NameInputHandler(object sender, SpeechRecognizedEventArgs e)
{
  if (e.Result == null) return;

  RecognitionResult result = e.Result;
  SemanticValue semantics = e.Result.Semantics;

  if (semantics.ContainsKey("Name"))
  {
    RecognizedAudio nameAudio =
      result.GetAudioForWordRange(
        result.Words[3], result.Words[result.Words.Count - 1]);

    // Save the audio. Create a directory and file as necessary.
    FileInfo fi = new FileInfo(@"C:\temp\temp.wav");
    if (!fi.Directory.Exists)
    {
      fi.Directory.Create();
    }
    FileStream stream = new FileStream(fi.FullName, FileMode.Create);
    nameAudio.WriteToWaveStream(stream);
    stream.Close();

    // Greet the person using the saved audio.
    SpeechSynthesizer synthesizer = new SpeechSynthesizer();
    PromptBuilder builder = new PromptBuilder();
    builder.AppendText("Hello");
    builder.AppendAudio(fi.FullName);
    synthesizer.Speak(builder);
  }
}

Keterangan

Untuk mendapatkan audio lengkap yang terkait dengan hasil pengenalan, gunakan Audio properti .

Berlaku untuk

Lihat juga