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 это будет "быстрая коричневая лиса".