Condividi tramite


RecognitionResult.GetAudioForWordRange Metodo

Definizione

Ottiene una sezione dell'audio associato a un intervallo specifico di parole nel risultato del riconoscimento.

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

Parametri

firstWord
RecognizedWordUnit

La prima parola nell'intervallo.

lastWord
RecognizedWordUnit

L'ultima parola nell'intervallo.

Restituisce

La sezione dell'audio associata all'intervallo della parola.

Eccezioni

Il riconoscimento genera il risultato da una chiamata ai metodi EmulateRecognize o EmulateRecognizeAsync degli oggetti di SpeechRecognizer o di SpeechRecognitionEngine .

Esempio

Nell'esempio seguente viene creata una grammatica per accettare l'input del nome e allegarla a un gestore per l'evento SpeechRecognized . La grammatica usa un carattere jolly per l'elemento name della frase. Il gestore eventi usa l'audio del carattere jolly per creare e riprodurre una richiesta di saluto.

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

Commenti

Per ottenere l'audio completo associato al risultato del riconoscimento, usare la Audio proprietà .

Si applica a

Vedi anche