共用方式為


SpeechRecognizer.RequestRecognizerUpdate 方法

定義

請求共享識別器暫停並更新其狀態。

多載

名稱 Description
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 事件來同步你的應用程式行為與識別器的狀態。

當此方法被呼叫時,識別器會暫停或完成非同步操作並產生事件 RecognizerUpdateReachedRecognizerUpdateReached事件處理器可在辨識操作間修改識別器的狀態。

當此方法被呼叫時:

  • 若識別器未處理輸入,識別器會立即產生事件 RecognizerUpdateReached

  • 若識別器處理的是靜音或背景雜訊的輸入,識別器會暫停識別操作並產生事件 RecognizerUpdateReached

  • 如果辨識器處理的輸入不包含靜默或背景雜訊,則會完成辨識操作,然後產生事件 RecognizerUpdateReached

當識別器處理 RecognizerUpdateReached 事件時:

若要改變共享識別器是否在應用程式處理 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 事件時, UserTokenRecognizerUpdateReachedEventArgs 屬性包含參數 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 事件時, UserTokenRecognizerUpdateReachedEventArgs 屬性包含參數 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 事件時, UserTokenRecognizerUpdateReachedEventArgs 屬性為 null

要提供使用者代幣,請使用 RequestRecognizerUpdate 或方法 RequestRecognizerUpdate 。 要指定音訊位置偏移,請使用以下 RequestRecognizerUpdate 方法。

另請參閱

適用於