SemanticResultKey Конструкторы

Определение

Создает экземпляр SemanticResultKey и связывает ключ с компонентами грамматики.

Перегрузки

Имя Описание
SemanticResultKey(String, GrammarBuilder[])

Назначает семантический ключ одному или нескольким GrammarBuilder объектам, используемым для создания грамматики распознавания речи.

SemanticResultKey(String, String[])

Назначает семантический ключ одному или нескольким String экземплярам, используемым для создания грамматики распознавания речи.

Комментарии

Конструкторы для указания текстового тега (семантического ключа) и набора компонентов грамматики для SemanticResultKey добавления в грамматику распознавания речи.

Компоненты грамматики можно указать как массив объектов, так и в виде массива GrammarBuilder экземпляров String .

Если компоненты грамматики используются в распознавании, вы можете получить доступ к возвращенным SemanticValue с помощью текстового тега, предоставленного SemanticResultKey конструктору в качестве семантического ключа. Свойство Value экземпляра SemanticValue определяется компонентами грамматики, используемыми в определении SemanticResultKey.

SemanticResultKey(String, GrammarBuilder[])

Исходный код:
SemanticResultKey.cs
Исходный код:
SemanticResultKey.cs
Исходный код:
SemanticResultKey.cs
Исходный код:
SemanticResultKey.cs

Назначает семантический ключ одному или нескольким GrammarBuilder объектам, используемым для создания грамматики распознавания речи.

public:
 SemanticResultKey(System::String ^ semanticResultKey, ... cli::array <System::Speech::Recognition::GrammarBuilder ^> ^ builders);
public SemanticResultKey(string semanticResultKey, params System.Speech.Recognition.GrammarBuilder[] builders);
new System.Speech.Recognition.SemanticResultKey : string * System.Speech.Recognition.GrammarBuilder[] -> System.Speech.Recognition.SemanticResultKey
Public Sub New (semanticResultKey As String, ParamArray builders As GrammarBuilder())

Параметры

semanticResultKey
String

Тег, используемый в качестве семантического ключа для доступа к SemanticValue экземпляру, связанному с GrammarBuilder объектами, указанными аргументом builders .

builders
GrammarBuilder[]

Массив компонентов грамматики, который будет связан с объектом, доступным с SemanticValue тегом, определенным в semanticResultKey.

Примеры

В следующем примере создается Grammar код для распознавания ввода пароля формы "Мой пароль ..." , где фактические входные данные совпадают с подстановочным знаком.

Подстановочный знак помечается значением SpeechRecognizer ключа "Пароль". Обработчик SpeechRecognized проверяет наличие этого тега, получает входной звук пароля и проверяет пароль.

private void pwdGrammar()
{
  GrammarBuilder pwdBuilder = new GrammarBuilder("My Password is");
  GrammarBuilder wildcardBuilder = new GrammarBuilder();
  wildcardBuilder.AppendWildcard();
  SemanticResultKey wildcardKey= new SemanticResultKey("Password", wildcardBuilder);
  pwdBuilder+=wildcardKey;
  Grammar grammar = new Grammar(pwdBuilder);
  grammar.Name = "Password input";

  grammar.SpeechRecognized +=
    delegate(object sender, SpeechRecognizedEventArgs eventArgs)
    {
      SemanticValue semantics = eventArgs.Result.Semantics;
      RecognitionResult result=eventArgs.Result;

      if (!semantics.ContainsKey("Password"))
      {
        SpeechUI.SendTextFeedback(eventArgs.Result, "No Password Provided", false);
      }
      else
      {
        RecognizedAudio pwdAudio = result.GetAudioForWordRange(
                  result.Words[3],
                  result.Words[result.Words.Count - 1]);
                  MemoryStream pwdMemoryStream = new MemoryStream();
                  pwdAudio.WriteToAudioStream(pwdMemoryStream);
        if (!IsValidPwd(pwdMemoryStream))
        {
          string badPwd = System.IO.Path.GetTempPath() + "BadPwd" + (new Random()).Next().ToString() + ".wav";
          FileStream waveStream = new FileStream(badPwd, FileMode.Create);
          pwdAudio.WriteToWaveStream(waveStream);
          waveStream.Flush();
          waveStream.Close();
          SpeechUI.SendTextFeedback(eventArgs.Result, "Invalid Password", false);
        }
      }
    };

  grammar.Enabled = true;
  _recognizer.LoadGrammar(grammar);
  UpdateGrammarTree(_grammarTreeView, _recognizer);

}

Комментарии

Из-за неявных builders преобразований аргумент также поддерживает SemanticResultValue, SemanticResultKeyChoicesи String объекты. Дополнительные сведения о неявных преобразованиях см. в разделе Implicit.

При выполнении операции распознавания объекты, предоставленные в аргументеGrammarBuilder, builders обрабатываются как последовательные. Например, если для создания SemanticResultValueкода используется следующая Grammar функция, входные данные для обработчика распознавания должны содержать слова "быстрая коричневая лиса" в последовательности для распознавания.

SemanticResultKey stringTest=new SemanticResultKey(
    "stringTest", new GrammarBuilder[] {
    new GrammarBuilder("the"),
    new GrammarBuilder("quick"),
    new GrammarBuilder("brown"),
    new GrammarBuilder("fox")});

Аргумент semanticResultKey содержит тег, используемый для доступа к SemanticValue возвращаемым.

Value Определяется SemanticValueGrammarBuilder экземплярами, предоставляемыми параметромbuilders.

GrammarBuilder Если объекты не содержат определяемых экземпляровSemanticResultValue, значение SemanticValue объекта равноnull.

GrammarBuilder Если объекты, предоставленные в builders параметре, предоставляют неуправляемый (не связанный с SemanticResultKey объектом) SemanticResultValue экземпляр, используемый логикой распознавания, то этот экземпляр SemanticResultValue определяет Value свойство создаваемого SemanticValue объекта.

В объектах, указанных SemanticResultValueGrammarBuilder параметром, должен быть только один, а только один— отключаемый builders экземпляр. Если с результатом распознавания связано SemanticResultValueнесколько экземпляров незаключенныхSemanticResultKey, каждая из них попытается задать значение создаваемого SemanticValue в результате распознавания. Это не разрешено, и распознаватель создаст исключение при попытке использовать Grammar созданный с помощью такого экземпляра SemanticResultKey .

Экземпляры, содержащиеся в SemanticResultValue объектах, указанных GrammarBuilderbuilders параметром, и уже связанные с другим SemanticResultKey не влияют на текущий SemanticResultKey экземпляр.

Применяется к

SemanticResultKey(String, String[])

Исходный код:
SemanticResultKey.cs
Исходный код:
SemanticResultKey.cs
Исходный код:
SemanticResultKey.cs
Исходный код:
SemanticResultKey.cs

Назначает семантический ключ одному или нескольким String экземплярам, используемым для создания грамматики распознавания речи.

public:
 SemanticResultKey(System::String ^ semanticResultKey, ... cli::array <System::String ^> ^ phrases);
public SemanticResultKey(string semanticResultKey, params string[] phrases);
new System.Speech.Recognition.SemanticResultKey : string * string[] -> System.Speech.Recognition.SemanticResultKey
Public Sub New (semanticResultKey As String, ParamArray phrases As String())

Параметры

semanticResultKey
String

Тег, используемый для доступа к экземпляру, связанному SemanticValue с String объектами, указанными аргументом phrases .

phrases
String[]

Один или несколько String объектов, чей сцепленный текст будет связан с объектом, доступным с SemanticValue тегом, определенным в semanticResultKey.

Примеры

В следующем примере создается GrammarGrammarBuilder объект, использующий SemanticResultKeyобъект, который определяется массивом String объектов.

Модуль распознавания, использующий Grammar созданный, распознает фразу "цвет красный зеленый синий ноль". Семантика возвращаемого RecognizedPhrase распознаванием будет содержать SemanticValueValue "красный зеленый синий". Вы можете получить доступ к тегу SemanticValue "code".

Из-за добавления SemanticResultValue("zero", 5)GrammarBuilder к корневому SemanticValue объекту в RecognizedPhrase объекте будет иметь значение 5.

private void keyTest()
{
  // Say "color red green blue zero"
  GrammarBuilder gb = new GrammarBuilder("color") +
                        new SemanticResultKey("code",
                          (new string[] {"red", "green", "blue"})) +
                        new SemanticResultValue("zero", 5);
  Grammar g = new Grammar(gb);
  g.Name = "keyTest";
  _recognizer.LoadGrammar(g);
}

Комментарии

При выполнении операции распознавания объекты, используемые в параметреString, phrases обрабатываются как последовательные. Например, если для создания SemanticResultValueкода используется следующая Grammar функция, входные данные для обработчика распознавания должны содержать слова "быстрая коричневая лиса" в последовательности для распознавания.

SemanticResultKey stringTest=new SemanticResultKey("stringTest",
                                new string[] {
                                               "the",
                                               "quick",
                                               "brown",
                                               "fox"});

Аргумент semanticResultKey определяет ключ, используемый для доступа к SemanticValue возвращаемым.

Если вы создаете Grammar объект GrammarBuilder , содержащий семантический ключ с массивом строковых объектов, то строка, созданная операцией распознавания, ValueSemanticValue будет строкой, используемой в распознавании. В предыдущем примере это означает, что Value это будет "быстрая коричневая лиса".

Применяется к