/// <summary> /// Loads the grammar in to the recognition engine. /// </summary> protected virtual void LoadGrammar(string pathToGrammar, AerHandler handler) { AerDebug.Log("Loading Grammar..."); Grammar grammar = new Grammar(pathToGrammar + @"Default.xml"); RecognitionEngine.LoadGrammarCompleted += handler.ReadyToSpeak_Handler; RecognitionEngine.LoadGrammarAsync(grammar); }
public AerInput(AerHandler handler, string pathToGrammar = @"Grammars\") { RecognitionEngine = new SpeechRecognitionEngine(new CultureInfo("en-US")); RecognitionEngine.SetInputToDefaultAudioDevice(); LoadGrammar(pathToGrammar, handler); RecognitionEngine.SpeechRecognized += this.SpeechRecognized_Handler; RecognitionEngine.UpdateRecognizerSetting("ResponseSpeed", 750); NewInput = false; RecognitionEngine.RecognizeAsync(RecognizeMode.Multiple); }
static void Main(string[] args) { Console.WriteLine("Welcome to the A.E.R. Interface Console"); AerDB data = new AerDB(@"json\"); AerTalk talk = new AerTalk(); Personality person = new Personality(talk, data); _AerHandler = new AerHandler(data, person); //I know this is bad, but there's no good way to get the delegate surfaced out of AerInput in to AerTalk yet. // This could be solved with a service registry, but I haven't thought that through yet _AerInput = new AerInput(@"Grammars\", person.GrammarLoaded_Handler); HandleInput(); }
public static void ExecuteThread() { AerTalk talk = new AerTalk(); AerDB data = new AerDB(AppDomain.CurrentDomain.BaseDirectory + @"\Apps\AER\json\"); Personality person = new Personality(talk, data); _AerHandler = new AerHandler(data, person); _AerInput = new AerInput(AppDomain.CurrentDomain.BaseDirectory + @"\Apps\AER\Grammars\", person.GrammarLoaded_Handler); while(_RunWorker) { if (_AerInput.NewInput) { _AerInput.NewInput = false; _AerHandler.InputHandler(_AerInput.LastResult); } } }
public void ExecuteThread() { AerDB data = new AerDB(@"json\"); AerTalk talk = new AerTalk(); Personality person = new Personality(talk, data); AerHandler handler = new AerHandler(data, person); //I know this is bad, but there's no good way to get the delegate surfaced out of AerInput in to AerTalk yet. // This could be solved with a service registry, but I haven't thought that through yet AerInput input = new AerInput(@"Grammars\", person.GrammarLoaded_Handler); while (_RunWorker) { if (input.NewInput) { input.NewInput = false; handler.InputHandler(input.LastResult); } Thread.Sleep(10); //Keep CPU usage down until we handle responses async } }