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


SemanticResultKey Класс

Определение

Связывает ключевую строку со значениями SemanticResultValue для идентификации объектов SemanticValue.

public ref class SemanticResultKey
public class SemanticResultKey
type SemanticResultKey = class
Public Class SemanticResultKey
Наследование
SemanticResultKey

Примеры

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

Подстановочный знак помечается семантическим ключом, а 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);

}

Комментарии

Базовой единицей семантического выражения в System.Speech является SemanticValue, которая является парой "ключ-значение".

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

Для определения семантической структуры грамматики распознавания речи можно использовать SemanticResultValue объекты и SemanticResultKey в сочетании с GrammarBuilder объектами и Choices . Чтобы получить доступ к семантической информации в результате распознавания, получите экземпляр SemanticValue с помощью Semantics свойства в RecognizedPhrase.

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

SemanticResultKey(String, GrammarBuilder[])

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

SemanticResultKey(String, String[])

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

Методы

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
ToGrammarBuilder()

Возвращает экземпляр GrammarBuilder, созданный из текущего SemanticResultKey.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

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

См. также раздел