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 事件時:

若要變更共用辨識器是否在處理 SpeechRecognized 事件時暫停辨識作業,請使用 PauseRecognizerOnRecognition 屬性。

RequestRecognizerUpdate(Object, TimeSpan)

來源:
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 起將要求延遲的位移。

備註

辨識器在辨識器等於目前的 AudioPosition 加上 參數的值 audioPositionAheadToRaiseUpdate 之前,不會起始辨識器 RecognizerAudioPosition 更新要求。

當辨識器產生事件時 RecognizerUpdateReachedUserTokenRecognizerUpdateReachedEventArgs 屬性會包含 參數的值 userToken

另請參閱

適用於

RequestRecognizerUpdate(Object)

來源:
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

使用者定義的資訊,包含該作業的資訊。

備註

當辨識器產生事件時 RecognizerUpdateReachedUserTokenRecognizerUpdateReachedEventArgs 屬性會包含 參數的值 userToken

若要指定音訊位置位移,請使用 RequestRecognizerUpdate 方法。

另請參閱

適用於

RequestRecognizerUpdate()

來源:
SpeechRecognizer.cs
來源:
SpeechRecognizer.cs
來源:
SpeechRecognizer.cs

要求共用辨識器暫停並更新其狀態。

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

備註

當辨識器產生事件時 RecognizerUpdateReachedUserTokenRecognizerUpdateReachedEventArgs 屬性為 null

若要提供使用者權杖,請使用 RequestRecognizerUpdateRequestRecognizerUpdate 方法。 若要指定音訊位置位移,請使用 RequestRecognizerUpdate 方法。

另請參閱

適用於