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