Compartilhar via


SemanticResultValue Classe

Definição

Representa um valor semântico e opcionalmente associa o valor a um componente da gramática de reconhecimento de fala.

public ref class SemanticResultValue
public class SemanticResultValue
type SemanticResultValue = class
Public Class SemanticResultValue
Herança
SemanticResultValue

Exemplos

O exemplo a seguir retorna um Grammar que reconhece o comando "Set/Change/Alter Foreground/Background ... [lista de cores]". SemanticResultValue e SemanticResultKey instâncias (em conjunto com Choices objetos e GrammarBuilder ) são usadas para definir semântica que pode ser analisada no reconhecimento. A semântica analisada determinará qual cor foi solicitada e se o primeiro plano ou plano de fundo deve ser modificado.

private Grammar FgBgColorGrammar()
{
  Grammar grammar = null;

  // Allow the command to begin with set, alter, change.
  Choices introChoices = new Choices();
  foreach (string introString in new string[] { "Change", "Set", "Alter" })
  {
    GrammarBuilder introGB = new GrammarBuilder(introString);
    introChoices.Add(new SemanticResultValue(introGB, String.Format("Command: {0}", introString)));
  }

  GrammarBuilder cmdIntro = new GrammarBuilder(introChoices);

  // Define the arguments for the command to select foreground or background
  // and to change their color as semantic values.
  Choices fgOrbgChoice = new Choices();
  GrammarBuilder backgroundGB=new GrammarBuilder("background");
  backgroundGB.Append(new SemanticResultValue(true));
  fgOrbgChoice.Add(backgroundGB);
  fgOrbgChoice.Add((GrammarBuilder)new SemanticResultValue("foreground", false));
  SemanticResultKey fgOrbgChoiceKey = new SemanticResultKey("BgOrFgBool", fgOrbgChoice);
  Choices colorChoice = new Choices();
  foreach (string colorName in System.Enum.GetNames(typeof(KnownColor)))
  {

    // Use implicit conversion of SemanticResultValue to GrammarBuilder.
    colorChoice.Add(
        (GrammarBuilder) (new SemanticResultValue(colorName, (Color.FromName(colorName)).Name)));
  }

  // Create a GrammarBuilder for CmdArgs to be appended to CmdIntro using
  // semantic keys.
  GrammarBuilder cmdArgs = new GrammarBuilder();
  cmdArgs.Append(new SemanticResultKey("BgOrFgBool", fgOrbgChoice));
  cmdArgs.AppendWildcard();
  cmdArgs.Append(new SemanticResultKey("colorStringList", colorChoice));

  GrammarBuilder cmds =
      GrammarBuilder.Add(
                       cmdIntro,
                       new GrammarBuilder(new SemanticResultKey("Cmd Args", cmdArgs)));
  grammar = new Grammar(cmds);
  grammar.Name = "Tree [Set,change,alter] [foreground,background] * color";
  return grammar;
}

Comentários

O uso de SemanticResultValue objetos e SemanticResultKey , em conjunto com GrammarBuilder e Choices, é a maneira mais fácil de projetar uma estrutura semântica para um Grammar. Informações semânticas de uma frase são acessadas obtendo uma instância de SemanticValue, por meio da Semantics propriedade em RecognizedPhrase.

Observação

Os valores gerenciados por SemanticResultValue objetos são definidos por Object instâncias passadas para seus construtores. O tipo subjacente desse Object deve ser bool, int, floatou string. Qualquer outro tipo impedirá a construção de uma Grammar instância com o SemanticResultValue.

O uso típico de uma SemanticResultValue instância associa a instância a um componente reconhecível de um Grammar, como uma frase, uma regra ou um Choices objeto . Se o componente associado for usado como parte de uma operação de reconhecimento, o SemanticResultValue será usado para definir um valor na semântica da frase retornada.

Há dois métodos básicos para associar uma SemanticResultValue instância a um elemento gramatical, dependendo do construtor usado para criar o SemanticResultValue.

  • Se apenas o valor (especificado por uma instância de Object) for usado para construir um SemanticResultValue objeto, o SemanticResultValue será associado ao componente gramatical que o precedeu, além de um GrammarBuilder objeto .

    Por exemplo, no fragmento de código abaixo, se um Grammar construído usando essa GrammarBuilder instância reconhecer a palavra "plano de fundo", um valor de true será definido na semântica de frase reconhecida.

    GrammarBuilder backgroundGB=new GrammarBuilder("background");
    backgroundGB.Append(new SemanticResultValue(true));
    

    Para obter mais informações, consulte a descrição de SemanticResultValue(Object).

  • Se uma frase de valor de cadeia de caracteres ou uma instância específica GrammarBuilder for usada, juntamente com uma Object que especifica um SemanticResultValue valor, esse valor será automaticamente associado à frase de valor de cadeia de caracteres ou à GrammarBuilder instância. Se a frase ou GrammarBuilder objeto for usado no processo de reconhecimento, o valor será atribuído à semântica da frase reconhecida.

    O exemplo a seguir ilustra isso e é funcionalmente equivalente ao exemplo anterior, que usou chamadas explícitas para Append e SemanticResultValue(Object). Se a lógica de reconhecimento usar a palavra "plano de fundo", o valor true será adicionado à semântica reconhecida.

    fgOrbgChoice.Add((GrammarBuilder)new SemanticResultValue("background", true));
    

    Para obter mais informações, consulte a descrição de SemanticResultValue(GrammarBuilder, Object) e SemanticResultValue(String, Object).

Para ser usado por um Grammar em reconhecimento, todas as SemanticResultValue instâncias devem ser associadas a SemanticValue um dos objetos usados por esse Grammar. Isso é feito associando uma chave semântica ao SemanticResultValue.

Chaves semânticas podem ser anexadas explicitamente a um SemanticResultValue, usando um SemanticResultKey objeto . SemanticResultValue As instâncias não anexadas explicitamente a uma chave são anexadas à chave raiz do padrão SemanticValue.

Depois que um SemanticResultValue tiver sido usado para definir o Value, seja ele marcado com a chave raiz padrão ou por qualquer determinado SemanticResultKey, esse valor não deve ser modificado ou uma exceção ocorrerá durante as operações de reconhecimento.

O exemplo a seguir causará uma exceção porque define e modifica a raiz Value de um Grammar.

GrammarBuilder gb=new GrammarBuilder();
gb.Append(new SemanticResultValue("One"));
gb.Append(new SemanticResultValue("Two"));

Por outro lado, o código no exemplo a seguir é permitido. Embora defina várias instâncias de SemanticResultValue, elas são incluídas em um Choices objeto e apenas uma será usada para definir o valor da chave bgOrfgText.

Choices fgOrbgChoice = new Choices();
fgOrbgChoice.Add((GrammarBuilder)new SemanticResultValue("background"));
fgOrbgChoice.Add((GrammarBuilder)new SemanticResultValue("foreground"));
SemanticResultKey fgOrbgChoiceKey = new SemanticResultKey("BgOrFgText", fgOrbgChoice);

Construtores

SemanticResultValue(GrammarBuilder, Object)

Inicializa uma nova instância da classe SemanticResultValue e associa um valor semântico a um objeto GrammarBuilder.

SemanticResultValue(Object)

Inicializa uma nova instância da classe SemanticResultValue e especifica um valor semântico.

SemanticResultValue(String, Object)

Inicializa uma nova instância da classe SemanticResultValue e associa um valor semântico a um objeto String.

Métodos

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToGrammarBuilder()

Retorna uma instância de GrammarBuilder construída com base na instância de SemanticResultValue atual.

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a

Confira também