RecognizedAudio.GetRange(TimeSpan, TimeSpan) Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Selecteert en retourneert een sectie van de huidige herkende audio als binaire gegevens.
public:
System::Speech::Recognition::RecognizedAudio ^ GetRange(TimeSpan audioPosition, TimeSpan duration);
public System.Speech.Recognition.RecognizedAudio GetRange(TimeSpan audioPosition, TimeSpan duration);
member this.GetRange : TimeSpan * TimeSpan -> System.Speech.Recognition.RecognizedAudio
Public Function GetRange (audioPosition As TimeSpan, duration As TimeSpan) As RecognizedAudio
Parameters
- audioPosition
- TimeSpan
Het beginpunt van de audiogegevens die moeten worden geretourneerd.
- duration
- TimeSpan
De lengte van het segment dat moet worden geretourneerd.
Retouren
Retourneert een subsectie van de herkende audio, zoals gedefinieerd door audioPosition en duration.
Uitzonderingen
audioPosition en duration definieert een audiosegment buiten het bereik van het huidige segment.
De huidige herkende audio bevat geen gegevens.
Voorbeelden
In het volgende voorbeeld wordt een grammatica voor spraakherkenning gemaakt voor naaminvoer, wordt een handler toegevoegd voor de SpeechRecognized gebeurtenis en wordt de grammatica geladen in een spraakherkenningsfunctie in een proces. Vervolgens worden de audiogegevens voor het naamgedeelte van de invoer naar een audiobestand geschreven. Het audiobestand wordt gebruikt als invoer voor een SpeechSynthesizer object, dat een woordgroep spreekt die de opgenomen audio bevat.
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);
}
}