Поделиться через


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

Присваивает семантический ключ одному или нескольким объектам 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 для распознавания введенных паролей в форме "My password is...", где фактические входные данные сопоставляются с подстановочным знаком.

Подстановочный знак помечается тегом SpeechRecognizer , ключ которого имеет значение "Password". Обработчик 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объекты , SemanticResultKey, Choicesи String . Дополнительные сведения о неявных преобразованиях см. в разделе Implicit.

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

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

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

Свойство Value объекта SemanticValue определяется экземплярами, GrammarBuilder предоставленными параметром builders .

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

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

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

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

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

SemanticResultKey(String, String[])

Исходный код:
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.

Примеры

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

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

SemanticResultValue("zero", 5) Из-за добавления к GrammarBuilderкорневому объекту SemanticValueRecognizedPhrase в будет иметь значение 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);
}

Комментарии

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

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

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

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

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