次の方法で共有


RecognitionResult.GetAudioForWordRange メソッド

定義

認識結果の単語の特定の範囲に関連付けられたオーディオのセクションを取得します。

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

パラメーター

firstWord
RecognizedWordUnit

範囲内の最初の単語。

lastWord
RecognizedWordUnit

範囲内の最後の単語。

戻り値

言葉の範囲に関連付けられたオーディオのセクション。

例外

認識エンジンは、SpeechRecognizer オブジェクトまたは SpeechRecognitionEngine オブジェクトの EmulateRecognize メソッドまたは EmulateRecognizeAsync メソッドの呼び出しから結果を生成しました。

次の例では、名前入力を受け入れる文法を作成し、それにイベントのハンドラーを SpeechRecognized アタッチします。 文法では、フレーズの name 要素にワイルドカードが使用されます。 イベント ハンドラーは、ワイルドカードからのオーディオを使用して、あいさつメッセージを作成して再生します。

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

注釈

認識結果に関連付けられている完全なオーディオを取得するには、 プロパティを Audio 使用します。

適用対象

こちらもご覧ください