Бөлісу құралы:


SpeechRecognizer.RequestRecognizerUpdate Метод

Определение

Запрашивает, чтобы общий распознаватель приостанавливал и обновлял его состояние.

Перегрузки

Имя Описание
RequestRecognizerUpdate(Object, TimeSpan)

Запрашивает приостановку и обновление состояния общего распознавателя и предоставляет смещение и маркер пользователя для связанного события.

RequestRecognizerUpdate(Object)

Запрашивает приостановку и обновление состояния общего распознавателя и предоставляет маркер пользователя для связанного события.

RequestRecognizerUpdate()

Запрашивает, чтобы общий распознаватель приостанавливал и обновлял его состояние.

Примеры

В следующем примере показан консольное приложение, которое загружает и выгружает Grammar объекты. Приложение использует RequestRecognizerUpdate метод для запроса обработчика распознавания речи для приостановки, чтобы он смог получить обновление. Затем приложение загружает или выгружает Grammar объект.

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

using System;
using System.Speech.Recognition;
using System.Collections.Generic;
using System.Threading;

namespace SampleRecognition
{
  class Program
  {
    private static SpeechRecognizer recognizer;
    public static void Main(string[] args)
    {

      // Initialize an in-process speech recognition engine and configure its input.
      recognizer = new SpeechRecognizer();

      // Create the first grammar - Farm.
      Choices animals = new Choices(new string[] { "cow", "pig", "goat" });
      GrammarBuilder farm = new GrammarBuilder(animals);
      Grammar farmAnimals = new Grammar(farm);
      farmAnimals.Name = "Farm";

      // Create the second grammar - Fruit.
      Choices fruit = new Choices(new string[] { "apples", "peaches", "oranges" });
      GrammarBuilder favorite = new GrammarBuilder(fruit);
      Grammar favoriteFruit = new Grammar(favorite);
      favoriteFruit.Name = "Fruit";

      // Attach event handlers.
      recognizer.SpeechRecognized +=
        new EventHandler<SpeechRecognizedEventArgs>(recognizer_SpeechRecognized);
      recognizer.RecognizerUpdateReached +=
        new EventHandler<RecognizerUpdateReachedEventArgs>(recognizer_RecognizerUpdateReached);

      // Check to see if recognizer is loaded, wait if it is not loaded.
      if (recognizer.State != RecognizerState.Listening)
      {
        Thread.Sleep(5000);

        // Put recognizer in listening state.
        recognizer.EmulateRecognizeAsync("Start listening");
      }

      // Load the Farm grammar.
      recognizer.LoadGrammar(farmAnimals);
      Console.WriteLine("Grammar Farm is loaded");

      // Pause to recognize farm animals.
      Thread.Sleep(7000);
      Console.WriteLine();

      // Request an update and load the Fruit grammar.
      recognizer.RequestRecognizerUpdate();
      recognizer.LoadGrammarAsync(favoriteFruit);
      Thread.Sleep(5000);

      // Request an update and unload the Farm grammar.
      recognizer.RequestRecognizerUpdate();
      recognizer.UnloadGrammar(farmAnimals);
      Thread.Sleep(5000);

      // Keep the console window open.
      Console.WriteLine();
      Console.WriteLine("Press any key to exit...");
      Console.ReadKey();
    }

    public static void recognizer_RecognizerUpdateReached(object sender, RecognizerUpdateReachedEventArgs e)
    {
      // At the update, get the names and enabled status of the currently loaded grammars.
      Console.WriteLine();
      Console.WriteLine("Update reached:");
      Thread.Sleep(1000);
      string qualifier;
      List<Grammar> grammars = new List<Grammar>(recognizer.Grammars);
      foreach (Grammar g in grammars)
      {
        qualifier = (g.Enabled) ? "enabled" : "disabled";
        Console.WriteLine("  Grammar {0} is loaded and is {1}.",
        g.Name, qualifier);
      }
    }

    // Write the text of the recognized phrase to the console.
    static void recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
    {
      Console.WriteLine("  Speech recognized: " + e.Result.Text);
    }
  }
}

Комментарии

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

При вызове этого метода распознаватель приостанавливает или завершает асинхронные операции и создает RecognizerUpdateReached событие. Затем RecognizerUpdateReached обработчик событий может изменить состояние распознавателя между операциями распознавания.

При вызове этого метода:

  • Если распознаватель не обрабатывает входные данные, распознаватель немедленно создает RecognizerUpdateReached событие.

  • Если распознаватель обрабатывает входные данные, состоящие из молчания или фонового шума, распознаватель приостанавливает RecognizerUpdateReached операцию распознавания и создает событие.

  • Если распознаватель обрабатывает входные данные, не состоящие из молчания или фонового шума, распознаватель завершает операцию распознавания, а затем создает RecognizerUpdateReached событие.

Хотя распознаватель обрабатывает RecognizerUpdateReached событие:

  • Распознаватель не обрабатывает входные данные, а значение RecognizerAudioPosition свойства остается неизменным.

  • Распознаватель продолжает собирать входные данные, и значение AudioPosition свойства может измениться.

Чтобы изменить, приостанавливает ли общий распознаватель операции распознавания во время обработки SpeechRecognized события приложением, используйте PauseRecognizerOnRecognition это свойство.

RequestRecognizerUpdate(Object, TimeSpan)

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

Запрашивает приостановку и обновление состояния общего распознавателя и предоставляет смещение и маркер пользователя для связанного события.

public:
 void RequestRecognizerUpdate(System::Object ^ userToken, TimeSpan audioPositionAheadToRaiseUpdate);
public void RequestRecognizerUpdate(object userToken, TimeSpan audioPositionAheadToRaiseUpdate);
member this.RequestRecognizerUpdate : obj * TimeSpan -> unit
Public Sub RequestRecognizerUpdate (userToken As Object, audioPositionAheadToRaiseUpdate As TimeSpan)

Параметры

userToken
Object

Определяемые пользователем сведения, содержащие сведения для операции.

audioPositionAheadToRaiseUpdate
TimeSpan

Смещение от текущего AudioPosition , чтобы отложить запрос.

Комментарии

Распознаватель не инициирует запрос на обновление распознавателя, пока распознаватель RecognizerAudioPosition не равен текущему AudioPosition плюсу значения audioPositionAheadToRaiseUpdate параметра.

Когда распознаватель создает RecognizerUpdateReached событие, UserToken свойство RecognizerUpdateReachedEventArgs содержит значение userToken параметра.

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

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

RequestRecognizerUpdate(Object)

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

Запрашивает приостановку и обновление состояния общего распознавателя и предоставляет маркер пользователя для связанного события.

public:
 void RequestRecognizerUpdate(System::Object ^ userToken);
public void RequestRecognizerUpdate(object userToken);
member this.RequestRecognizerUpdate : obj -> unit
Public Sub RequestRecognizerUpdate (userToken As Object)

Параметры

userToken
Object

Определяемые пользователем сведения, содержащие сведения для операции.

Комментарии

Когда распознаватель создает RecognizerUpdateReached событие, UserToken свойство RecognizerUpdateReachedEventArgs содержит значение userToken параметра.

Чтобы указать смещение положения звука, используйте RequestRecognizerUpdate этот метод.

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

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

RequestRecognizerUpdate()

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

Запрашивает, чтобы общий распознаватель приостанавливал и обновлял его состояние.

public:
 void RequestRecognizerUpdate();
public void RequestRecognizerUpdate();
member this.RequestRecognizerUpdate : unit -> unit
Public Sub RequestRecognizerUpdate ()

Комментарии

Когда распознаватель создает RecognizerUpdateReached событие, UserToken свойство RecognizerUpdateReachedEventArgs is null.

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

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

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