2012-06-25 47 views
1

我有一個應用程序,我使用聽寫語法和我定義的識別語音的語法。我需要用戶定義的語法比聽寫語法具有更高的優先級,以便語音識別引擎只會查看聽寫語法,如果該詞在用戶定義的語法中不可用。請給出你可能需要做的任何想法。如何給用戶定義的語法優先於SAPI中的聽寫語法?

回答

1

Grammar類有兩個屬性重量優先。您可以將更高的權重分配給您創建的語法,並降低您使用的聽寫語法的權重。或者,如果您有多個用戶定義的語法,則可以使用priority屬性指示一個語法優先於另一個語法。看下面的例子;

// Create a Grammar for recognizing numeric digits. 
Grammar digitsGrammar = CreateDigitsGrammar(); 
digitsGrammar.Name = "Digits Grammar"; 
digitsGrammar.Priority = 2; 
digitsGrammar.Weight = 0.6f; 

// Create a Grammar for recognizing fractions. 
Grammar fractionsGrammar = CreateFractionsGrammar(); 
fractionsGrammar.Name = "Fractions Grammar"; 
fractionsGrammar.Priority = 1; 
fractionsGrammar.Weight = 1f; 

// Create an in-process speech recognizer. 
SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine(); 

recognizer.SpeechRecognized +=new EventHandler<SpeechRecognizedEventArgs>(
recognizer_SpeechRecognized); 

// Load the digits and fractions Grammar objects. 
recognizer.LoadGrammar(digitsGrammar); 
recognizer.LoadGrammar(fractionsGrammar); 

// Start recognition. 
recognizer.SetInputToDefaultAudioDevice(); 
recognizer.RecognizeAsync(RecognizeMode.Multiple);