RecognitionResult.GetAudioForWordRange Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém uma seção do áudio que está associada um intervalo específico de palavras no resultado de reconhecimento.
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
Parâmetros
- firstWord
- RecognizedWordUnit
A primeira palavra no intervalo.
- lastWord
- RecognizedWordUnit
A última palavra no intervalo.
Retornos
A seção de áudio associada ao intervalo de palavras.
Exceções
O reconhecedor gerou o resultado de uma chamada para os métodos EmulateRecognize
ou EmulateRecognizeAsync
dos objetos SpeechRecognizer ou SpeechRecognitionEngine.
Exemplos
O exemplo a seguir cria uma gramática para aceitar a entrada de nome e anexa a ela um manipulador para o SpeechRecognized
evento. A gramática usa um caractere curinga para o elemento Name da frase. O manipulador de eventos usa o áudio do curinga para criar e reproduzir um prompt de saudação.
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);
}
}
Comentários
Para obter o áudio completo associado ao resultado do reconhecimento, use a Audio propriedade.