Note

Please see Azure Cognitive Services for Speech documentation for the latest supported speech solutions.

RecognizedWordUnit.LexicalForm Property

Gets the unnormalized text of a recognized word.

Namespace:  Microsoft.Speech.Recognition
Assembly:  Microsoft.Speech (in Microsoft.Speech.dll)

Syntax

'Declaration
Public ReadOnly Property LexicalForm As String
    Get
'Usage
Dim instance As RecognizedWordUnit
Dim value As String

value = instance.LexicalForm
public string LexicalForm { get; }

Property Value

Type: System.String
Returns a String containing the text of a recognized word, without any normalization.

Remarks

In most cases the values returned by Text and LexicalForm will be identical. However, recognition engines may use speech normalization to return more user-friendly or colloquial text representations of audio input.

Speech normalization is the use of special constructs or symbols to express speech in writing. For example, normalization can replace the spoken words "a dollar and sixteen cents" with "$1.16" in output text.

Examples

The following example shows a utility routine that generates text in one of three formats: lexical (using LexicalForm), normalized (using Text), and phonetic (using Pronunciation). The text output is obtained from a ReadOnlyCollection of RecognizedWordUnit objects, which is obtained from the Words property on the RecognizedPhrase object.

internal enum WordType 
{
  Text,
  Normalized = Text,
  Lexical,
  Pronunciation
}
internal static string stringFromWordArray(
         ReadOnlyCollection<RecognizedWordUnit> words, 
         WordType type) 
{
  string text = "";
  foreach (RecognizedWordUnit word in words) 
  {
    string wordText = "";
    if (type == WordType.Text || type == WordType.Normalized) 
    {
      wordText = word.Text;
    } 
    else if (type == WordType.Lexical) 
    {
      wordText = word.LexicalForm;
    } 
    else if (type == WordType.Pronunciation) 
    {
      wordText = word.Pronunciation;
    } 
    else 
    {
      throw new InvalidEnumArgumentException(
          String.Format("[0}: is not a valid input", type));
    }

    // Use display attribute
    if ((word.DisplayAttributes & DisplayAttributes.OneTrailingSpace) != 0) 
    {
      wordText += " ";
    }
    if ((word.DisplayAttributes & DisplayAttributes.TwoTrailingSpaces) != 0)
    {
      wordText += "  ";
    }
    if ((word.DisplayAttributes & DisplayAttributes.ConsumeLeadingSpaces) != 0) 
    {
      wordText = wordText.TrimStart();
    }
    if ((word.DisplayAttributes & DisplayAttributes.ZeroTrailingSpaces) != 0)
    {
    wordText = wordText.TrimEnd();
    }

    text += wordText;

  }
  return text;
}

See Also

Reference

RecognizedWordUnit Class

RecognizedWordUnit Members

Microsoft.Speech.Recognition Namespace

DisplayAttributes