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


GrammarBuilder.Append Метод

Определение

Добавляет элемент грамматики к текущей последовательности элементов грамматики.

Перегрузки

Append(String, Int32, Int32)

Добавляет повторную фразу к текущей последовательности элементов грамматики.

Append(GrammarBuilder, Int32, Int32)

Добавляет повторный элемент грамматики к текущей последовательности элементов грамматики.

Append(String)

Добавляет фразу к текущей последовательности элементов грамматики.

Append(String, SubsetMatchingMode)

Добавляет элемент для подмножества фразы к текущей последовательности элементов грамматики.

Append(SemanticResultKey)

Добавляет семантический ключ к текущей последовательности элементов грамматики.

Append(SemanticResultValue)

Добавляет семантическое значение к текущей последовательности элементов грамматики.

Append(GrammarBuilder)

Добавляет элемент грамматики к текущей последовательности элементов грамматики.

Append(Choices)

Добавляет набор альтернатив к текущей последовательности элементов грамматики.

Комментарии

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

Этот метод имеет перегрузки для добавления GrammarBuilderобъектов , String, Choices, SemanticResultKeyи SemanticResultValue .

Важно!

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

Дополнительные сведения о построении и использовании грамматики распознавания речи см. в разделе Распознавание речи.

Append(String, Int32, Int32)

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

Добавляет повторную фразу к текущей последовательности элементов грамматики.

public:
 void Append(System::String ^ phrase, int minRepeat, int maxRepeat);
public void Append (string phrase, int minRepeat, int maxRepeat);
member this.Append : string * int * int -> unit
Public Sub Append (phrase As String, minRepeat As Integer, maxRepeat As Integer)

Параметры

phrase
String

Повторяющаяся последовательность слов для добавления.

minRepeat
Int32

Минимальное количество сопоставлений входных данных phrase, при котором засчитывается совпадение.

maxRepeat
Int32

Максимальное количество сопоставлений входных данных phrase, при котором засчитывается совпадение.

Примеры

В следующем примере создается грамматика распознавания речи для таких фраз, как "Позвонить Джеймсу на работе" и "Позвонить Анне по мобильному телефону", где слово "телефон" является необязательным. GrammarBuilder Объекты и Choices используются для построения грамматики. В примере подчеркивается использование Append метода .

public static Grammar CreatePhonePhrase()
{
  // Create alternatives for person names, locations, devices, and pronouns.
  Choices personChoice = new Choices(new string[] {"Anne", "James", "Mary", "Sam"});
  Choices locationChoice = new Choices(new string[] {"home", "work"});
  Choices deviceChoice = new Choices(new string[] {"home", "work", "cell"});
  Choices pronounChoice = new Choices(new string[] {"his", "her"});

  // Create a phrase for the receiving device, which optionally contains the word "phone".
  GrammarBuilder devicePhrase = new GrammarBuilder(pronounChoice);
  devicePhrase.Append(deviceChoice);
  devicePhrase.Append("phone", 0, 1);

  // Create alternatives for phrases specifying a device or a location.
  GrammarBuilder atLocation = new GrammarBuilder("at");
  atLocation.Append(locationChoice);

  GrammarBuilder onDevice = new GrammarBuilder("on");
  onDevice.Append(devicePhrase);

  Choices howChoice = new Choices(new GrammarBuilder[] {atLocation, onDevice});

  // Build the final phrase.
  GrammarBuilder callWho = new GrammarBuilder("Call");
  callWho.Append(personChoice);
  callWho.Append(howChoice);

  // Create the Grammar object.
  Grammar callGrammar = new Grammar(callWho);
  callGrammar.Name = "Call Grammar";

  return callGrammar;
}

Комментарии

Значение minRepeat должно быть больше или равно 0 и меньше или равно значению maxRepeat.

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

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

Append(GrammarBuilder, Int32, Int32)

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

Добавляет повторный элемент грамматики к текущей последовательности элементов грамматики.

public:
 void Append(System::Speech::Recognition::GrammarBuilder ^ builder, int minRepeat, int maxRepeat);
public void Append (System.Speech.Recognition.GrammarBuilder builder, int minRepeat, int maxRepeat);
member this.Append : System.Speech.Recognition.GrammarBuilder * int * int -> unit
Public Sub Append (builder As GrammarBuilder, minRepeat As Integer, maxRepeat As Integer)

Параметры

builder
GrammarBuilder

Повторяющийся элемент грамматики для добавления.

minRepeat
Int32

Минимальное количество сопоставлений входных данных элементу, определенному в builder, при котором засчитывается совпадение.

maxRepeat
Int32

Максимальное количество сопоставлений входных данных элементу, определенному в builder, при котором засчитывается совпадение.

Примеры

В следующем примере создается грамматика распознавания речи для таких фраз, как "Позвонить Джеймсу на работе" и "Позвонить Анне по мобильному телефону", где слово "телефон" является необязательным. GrammarBuilder Объекты и Choices используются для построения грамматики. В примере подчеркивается использование Append метода .

public static Grammar CreatePhonePhrase()
{
  // Create alternatives for person names, locations, devices, and pronouns.
  Choices personChoice = new Choices(new string[] {"Anne", "James", "Mary", "Sam"});
  Choices locationChoice = new Choices(new string[] {"home", "work"});
  Choices deviceChoice = new Choices(new string[] {"home", "work", "cell"});
  Choices pronounChoice = new Choices(new string[] {"his", "her"});

  // Create a phrase for the receiving device, which optionally contains the word "phone".
  GrammarBuilder devicePhrase = new GrammarBuilder(pronounChoice);
  devicePhrase.Append(deviceChoice);
  devicePhrase.Append("phone", 0, 1);

  // Create alternatives for phrases specifying a device or a location.
  GrammarBuilder atLocation = new GrammarBuilder("at");
  atLocation.Append(locationChoice);

  GrammarBuilder onDevice = new GrammarBuilder("on");
  onDevice.Append(devicePhrase);

  Choices howChoice = new Choices(new GrammarBuilder[] {atLocation, onDevice});

  // Build the final phrase.
  GrammarBuilder callWho = new GrammarBuilder("Call");
  callWho.Append(personChoice);
  callWho.Append(howChoice);

  // Create the Grammar object.
  Grammar callGrammar = new Grammar(callWho);
  callGrammar.Name = "Call Grammar";

  return callGrammar;
}

Комментарии

Значение minRepeat должно быть больше или равно 0 и меньше или равно значению maxRepeat.

Важно!

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

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

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

Append(String)

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

Добавляет фразу к текущей последовательности элементов грамматики.

public:
 void Append(System::String ^ phrase);
public void Append (string phrase);
member this.Append : string -> unit
Public Sub Append (phrase As String)

Параметры

phrase
String

Последовательность слов для добавления.

Комментарии

phrase добавляется в конец текущей последовательности элементов.

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

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

Append(String, SubsetMatchingMode)

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

Добавляет элемент для подмножества фразы к текущей последовательности элементов грамматики.

public:
 void Append(System::String ^ phrase, System::Speech::Recognition::SubsetMatchingMode subsetMatchingCriteria);
public void Append (string phrase, System.Speech.Recognition.SubsetMatchingMode subsetMatchingCriteria);
member this.Append : string * System.Speech.Recognition.SubsetMatchingMode -> unit
Public Sub Append (phrase As String, subsetMatchingCriteria As SubsetMatchingMode)

Параметры

phrase
String

Последовательность слов для добавления.

subsetMatchingCriteria
SubsetMatchingMode

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

Примеры

В следующем примере создается грамматика распознавания речи для каждого SubsetMatchingMode значения. Например, созданная грамматика OrderedSubset распознает фразы "три четыре пять" и "один три пять", а грамматика Subsequence распознает фразу "три четыре пять", но не фразу "один три пять".

private Grammar[] CreateSubsetMatchTest()
{
  List<Grammar> grammars = new List<Grammar>(4);

  string phrase = "one two three four five six";
  foreach (SubsetMatchingMode mode in
    Enum.GetValues(typeof(SubsetMatchingMode)))
  {
    GrammarBuilder gb = new GrammarBuilder();
    gb.Append(phrase, mode);

    Grammar grammar = new Grammar(gb);
    grammar.Name = mode.ToString();
    grammars.Add(grammar);
  }

  return grammars.ToArray();
}

Комментарии

Элемент подмножества добавляется в конец текущей последовательности элементов. Дополнительные сведения о создании грамматики распознавания речи с помощью строк см. в статье Использование строк для создания грамматики GrammarBuilder.

Подробные сведения об использовании режимов сопоставления подмножества см. в разделе System.Speech.Recognition.SubsetMatchingMode.

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

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

Append(SemanticResultKey)

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

Добавляет семантический ключ к текущей последовательности элементов грамматики.

public:
 void Append(System::Speech::Recognition::SemanticResultKey ^ key);
public void Append (System.Speech.Recognition.SemanticResultKey key);
member this.Append : System.Speech.Recognition.SemanticResultKey -> unit
Public Sub Append (key As SemanticResultKey)

Параметры

key
SemanticResultKey

Семантический ключ для добавления.

Примеры

Следующий пример является частью консольного приложения для выбора городов происхождения и назначения для рейса. Приложение распознает такие фразы, как "Я хочу полететь из Майами в Чикаго". Обработчик события SpeechRecognized использует SemanticResultKey для извлечения кода аэропорта, указанного в SemanticResultValue , для городов происхождения и назначения.

using System;
using System.Speech.Recognition;

namespace SampleRecognition
{
  class Program
  {
    static void Main(string[] args)

    // Initialize an in-process speech recognition engine.
    {
      using (SpeechRecognitionEngine recognizer =
         new SpeechRecognitionEngine())
      {

        // Create a Choices object and add  cities and airport codes
        // using SemanticResultValue objects.
        Choices cities = new Choices();
        cities.Add(new SemanticResultValue("Chicago", "ORD"));
        cities.Add(new SemanticResultValue("Boston", "BOS"));
        cities.Add(new SemanticResultValue("Miami", "MIA"));
        cities.Add(new SemanticResultValue("Dallas", "DFW"));

        // Build the phrase and add SemanticResultKeys.
        GrammarBuilder chooseCities = new GrammarBuilder();
        chooseCities.Append("I want to fly from");
        chooseCities.Append(new SemanticResultKey("origin", cities));
        chooseCities.Append("to");
        chooseCities.Append(new SemanticResultKey("destination", cities));

        // Build a Grammar object from the GrammarBuilder.
        Grammar bookFlight = new Grammar(chooseCities);
        bookFlight.Name = "Book Flight";

        // Add a handler for the LoadGrammarCompleted event.
        recognizer.LoadGrammarCompleted +=
          new EventHandler<LoadGrammarCompletedEventArgs>(recognizer_LoadGrammarCompleted);

        // Add a handler for the SpeechRecognized event.
        recognizer.SpeechRecognized +=
          new EventHandler<SpeechRecognizedEventArgs>(recognizer_SpeechRecognized);

        // Configure the input to the recognizer.
        recognizer.SetInputToDefaultAudioDevice();

        // Load the grammar object and start recognition.
        recognizer.LoadGrammarAsync(bookFlight);
        recognizer.RecognizeAsync();

        // Keep the console window open.
        Console.ReadLine();
      }
    }

    // Handle the LoadGrammarCompleted event.
    static void recognizer_LoadGrammarCompleted(object sender, LoadGrammarCompletedEventArgs e)
    {
      Console.WriteLine("Grammar loaded: " + e.Grammar.Name);
      Console.WriteLine();
    }

    // Handle the SpeechRecognized event.
    static void recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
    {
      Console.WriteLine("Speech recognized:  " + e.Result.Text);
      Console.WriteLine();
      Console.WriteLine("Semantic results:");
      Console.WriteLine("  The flight origin is " + e.Result.Semantics["origin"].Value);
      Console.WriteLine("  The flight destination is " + e.Result.Semantics["destination"].Value);
    }
  }
}

Комментарии

key добавляется в конец текущей последовательности элементов.

Важно!

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

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

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

Append(SemanticResultValue)

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

Добавляет семантическое значение к текущей последовательности элементов грамматики.

public:
 void Append(System::Speech::Recognition::SemanticResultValue ^ value);
public void Append (System.Speech.Recognition.SemanticResultValue value);
member this.Append : System.Speech.Recognition.SemanticResultValue -> unit
Public Sub Append (value As SemanticResultValue)

Параметры

value
SemanticResultValue

Прибавляемое семантическое значение.

Примеры

Следующий пример является частью консольного приложения для выбора городов происхождения и назначения для рейса. Приложение распознает такие фразы, как "Я хочу полететь из Майами в Чикаго". Обработчик события SpeechRecognized использует SemanticResultKey для извлечения кода аэропорта, указанного в SemanticResultValue , для городов происхождения и назначения.

using System;
using System.Speech.Recognition;

namespace SampleRecognition
{
  class Program
  {
    static void Main(string[] args)

    // Initialize an in-process speech recognition engine.
    {
      using (SpeechRecognitionEngine recognizer =
         new SpeechRecognitionEngine())
      {

        // Create GrammarBuilder objects and append SemanticResultValue objects
        // that contain cities and airport codes.

        GrammarBuilder chicago = new GrammarBuilder();
        chicago.Append(new SemanticResultValue("Chicago", "ORD"));

        GrammarBuilder boston = new GrammarBuilder();
        boston.Append(new SemanticResultValue("Boston", "BOS"));

        GrammarBuilder miami = new GrammarBuilder();
        miami.Append(new SemanticResultValue("Miami", "MIA"));

        GrammarBuilder dallas = new GrammarBuilder();
        dallas.Append(new SemanticResultValue("Dallas", "DFW"));

        // Create a Choices object and add the cities using implicit conversion from
        // SemanticResultValue to GrammarBuilder.
        Choices cities = new Choices();
        cities.Add(new Choices(new GrammarBuilder[] { chicago, boston, miami, dallas }));

        // Build the phrase and add SemanticResultKeys.
        GrammarBuilder chooseCities = new GrammarBuilder();
        chooseCities.Append("I want to fly from");
        chooseCities.Append(new SemanticResultKey("origin", cities));
        chooseCities.Append("to");
        chooseCities.Append(new SemanticResultKey("destination", cities));

        // Build a Grammar object from the GrammarBuilder.
        Grammar bookFlight = new Grammar(chooseCities);
        bookFlight.Name = "Book Flight";

        // Add a handler for the LoadGrammarCompleted event.
        recognizer.LoadGrammarCompleted +=
          new EventHandler<LoadGrammarCompletedEventArgs>(recognizer_LoadGrammarCompleted);

        // Add a handler for the SpeechRecognized event.
        recognizer.SpeechRecognized +=
          new EventHandler<SpeechRecognizedEventArgs>(recognizer_SpeechRecognized);

        // Configure the input to the recognizer.
        recognizer.SetInputToDefaultAudioDevice();

        // Load the grammar object and start recognition.
        recognizer.LoadGrammarAsync(bookFlight);
        recognizer.RecognizeAsync();

        // Keep the console window open.
        Console.ReadLine();
      }
    }
    // Handle the LoadGrammarCompleted event.
    static void recognizer_LoadGrammarCompleted(object sender, LoadGrammarCompletedEventArgs e)
    {
      Console.WriteLine("Grammar loaded: " + e.Grammar.Name);
      Console.WriteLine();
    }

    // Handle the SpeechRecognized event.
    static void recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
    {
      Console.WriteLine("Speech recognized:  " + e.Result.Text);
      Console.WriteLine();
      Console.WriteLine("Semantic results:");
      Console.WriteLine("  The flight origin is " + e.Result.Semantics["origin"].Value);
      Console.WriteLine("  The flight destination is " + e.Result.Semantics["destination"].Value);
    }
  }
}

Комментарии

value добавляется в конец текущей последовательности элементов.

Важно!

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

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

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

Append(GrammarBuilder)

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

Добавляет элемент грамматики к текущей последовательности элементов грамматики.

public:
 void Append(System::Speech::Recognition::GrammarBuilder ^ builder);
public void Append (System.Speech.Recognition.GrammarBuilder builder);
member this.Append : System.Speech.Recognition.GrammarBuilder -> unit
Public Sub Append (builder As GrammarBuilder)

Параметры

builder
GrammarBuilder

Элемент грамматики для добавления.

Примеры

В следующем примере создается грамматика распознавания речи для таких фраз, как "Позвонить Джеймсу на работе" и "Позвонить Анне по мобильному телефону", где слово "телефон" является необязательным. GrammarBuilder Объекты и Choices используются для построения грамматики. В примере подчеркивается использование Append метода .

public static Grammar CreatePhonePhrase()
{
  // Create alternatives for person names, locations, devices, and pronouns.
  Choices personChoice = new Choices(new string[] {"Anne", "James", "Mary", "Sam"});
  Choices locationChoice = new Choices(new string[] {"home", "work"});
  Choices deviceChoice = new Choices(new string[] {"home", "work", "cell"});
  Choices pronounChoice = new Choices(new string[] {"his", "her"});

  // Create a phrase for the receiving device, which optionally contains the word "phone".
  GrammarBuilder devicePhrase = new GrammarBuilder(pronounChoice);
  devicePhrase.Append(deviceChoice);
  devicePhrase.Append("phone", 0, 1);

  // Create alternatives for phrases specifying a device or a location.
  GrammarBuilder atLocation = new GrammarBuilder("at");
  atLocation.Append(locationChoice);

  GrammarBuilder onDevice = new GrammarBuilder("on");
  onDevice.Append(devicePhrase);

  Choices howChoice = new Choices(new GrammarBuilder[] {atLocation, onDevice});

  // Build the final phrase.
  GrammarBuilder callWho = new GrammarBuilder("Call");
  callWho.Append(personChoice);
  callWho.Append(howChoice);

  // Create the Grammar object.
  Grammar callGrammar = new Grammar(callWho);
  callGrammar.Name = "Call Grammar";

  return callGrammar;
}

Комментарии

builder добавляется в конец текущей последовательности элементов грамматики.

Примечание

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

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

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

Append(Choices)

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

Добавляет набор альтернатив к текущей последовательности элементов грамматики.

public:
 void Append(System::Speech::Recognition::Choices ^ alternateChoices);
public void Append (System.Speech.Recognition.Choices alternateChoices);
member this.Append : System.Speech.Recognition.Choices -> unit
Public Sub Append (alternateChoices As Choices)

Параметры

alternateChoices
Choices

Набор вариантов для добавления.

Примеры

В следующем примере создается грамматика распознавания речи для таких фраз, как "Позвонить Джеймсу на работе" и "Позвонить Анне по мобильному телефону", где слово "телефон" является необязательным. В примере подчеркивается использование Append метода .

public static Grammar CreatePhonePhrase()
{
  // Create alternatives for person names, locations, devices, and pronouns.
  Choices personChoice = new Choices(new string[] {"Anne", "James", "Mary", "Sam"});
  Choices locationChoice = new Choices(new string[] {"home", "work"});
  Choices deviceChoice = new Choices(new string[] {"home", "work", "cell"});
  Choices pronounChoice = new Choices(new string[] {"his", "her"});

  // Create a phrase for the receiving device, which optionally contains the word "phone".
  GrammarBuilder devicePhrase = new GrammarBuilder(pronounChoice);
  devicePhrase.Append(deviceChoice);
  devicePhrase.Append("phone", 0, 1);

  // Create alternatives for phrases specifying a device or a location.
  GrammarBuilder atLocation = new GrammarBuilder("at");
  atLocation.Append(locationChoice);

  GrammarBuilder onDevice = new GrammarBuilder("on");
  onDevice.Append(devicePhrase);

  Choices howChoice = new Choices(new GrammarBuilder[] {atLocation, onDevice});

  // Build the final phrase.
  GrammarBuilder callWho = new GrammarBuilder("Call");
  callWho.Append(personChoice);
  callWho.Append(howChoice);

  // Create the Grammar object.
  Grammar callGrammar = new Grammar(callWho);
  callGrammar.Name = "Call Grammar";

  return callGrammar;
}

Комментарии

alternateChoices добавляется в конец текущей последовательности элементов.

Важно!

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

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