Note
Please see Azure Cognitive Services for Speech documentation for the latest supported speech solutions.
ReplacementText Class
Contains information about a speech normalization procedure that has been performed on recognition results.
Inheritance Hierarchy
System.Object
Microsoft.Speech.Recognition.ReplacementText
Namespace: Microsoft.Speech.Recognition
Assembly: Microsoft.Speech (in Microsoft.Speech.dll)
Syntax
'Declaration
<SerializableAttribute> _
Public Class ReplacementText
'Usage
Dim instance As ReplacementText
[SerializableAttribute]
public class ReplacementText
Remarks
Speech normalization is the use of special constructs or symbols to express speech in writing.
For example, suppose that this is recognized text:
july fourth at twelve thirty one PM, I bought one point six kilograms of fish for fourteen dollars and six cents, at the pike market in seattle washington nine eight one two two
This is the same text after normalization:
July 4 at 12:31 PM, I bought 1.6 kg of fish for $14.06, at the pike market in Seattle WA 98122
In this example there are five substitutions, each of which would be described by an instance of ReplacementText.
Using the ReplacementText object, an application can determine:
The location and number of words replaced by normalization. For more information, see FirstWordIndex or CountOfWords.
The replaced text and its display attributes. For more information, see Text, and DisplayAttributes.
Instances of ReplacementText are typically obtained as members of the Collection object returned by the ReplacementWordUnits property on RecognizedPhrase (or classes which inherit from RecognizedPhrase such as RecognitionResult) when returned text has been normalized.
Examples
In the example below, information about a RecognizedPhrase object returned by a recognition engine is displayed to a user interface.
internal static void DisplayBasicPhraseInfo(Label label, RecognizedPhrase result, SpeechRecognitionEngine rec)
{
if (result != null && label != null)
{ // Blank
if (rec != null)
{ // Clear
label.Text += String.Format(
" Recognizer currently at: {0} mSec\n" +
" Audio Device currently at: {1} mSec\n",
rec.RecognizerAudioPosition.TotalMilliseconds,
rec.AudioPosition.TotalMilliseconds);
}
if (result != null)
{ // Clear
RecognitionResult recResult = result as RecognitionResult;
if (recResult != null)
{
RecognizedAudio resultAudio = recResult.Audio;
if (resultAudio == null)
{
label.Text += String.Format(
" Emulated input\n");
}
else
{
label.Text += String.Format(
" Candidate Phrase at: {0} mSec\n" +
" Phrase Length: {1} mSec\n" +
" Input State Time: {2}\n" +
" Input Format: {3}\n",
resultAudio.AudioPosition.TotalMilliseconds,
resultAudio.Duration.TotalMilliseconds,
resultAudio.StartTime.ToShortTimeString(),
resultAudio.Format.EncodingFormat.ToString());
}
}
label.Text += String.Format(" Confidence Level: {0}\n", result.Confidence);
if (result.Grammar != null)
{
label.Text += String.Format(
" Recognizing Grammar: {0}\n" +
" Recognizing Rule: {1}\n",
((result.Grammar.Name != null) ? (result.Grammar.Name) : "None"),
((result.Grammar.RuleName != null) ? (result.Grammar.RuleName) : "None"));
}
if (result.ReplacementWordUnits.Count != 0)
{
label.Text += String.Format(" Replacement text:\n");
foreach (ReplacementText rep in result.ReplacementWordUnits)
{
string repText = rep.Text;
// Add trailing spaces
if ((rep.DisplayAttributes & DisplayAttributes.OneTrailingSpace) != 0)
{
repText += " ";
}
if ((rep.DisplayAttributes & DisplayAttributes.TwoTrailingSpaces) != 0)
{
repText += " ";
}
if ((rep.DisplayAttributes & DisplayAttributes.ConsumeLeadingSpaces) != 0)
{
repText=repText.TrimStart();
}
if ((rep.DisplayAttributes & DisplayAttributes.ZeroTrailingSpaces) != 0)
{
repText = repText.TrimEnd();
}
label.Text += String.Format(" At index {0} for {1} words. Text: \"{2}\"\n",
rep.FirstWordIndex, rep.CountOfWords, repText);
}
label.Text += String.Format("\n\n");
}
}
}
}
Thread Safety
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.