public SpeechToTextService() { try { if (_Stt == null) { _Stt = new SttClient(); _Stt.StateChanged += _Stt_StateChanged; _Stt.DefaultLanguageChanged += _Stt_DefaultLanguageChanged; _Stt.EngineChanged += _Stt_EngineChanged; _Stt.ErrorOccurred += _Stt_ErrorOccurred; _Stt.RecognitionResult += _Stt_RecognitionResult; // Expected State : Created CurrentSttLanguage = _Stt.DefaultLanguage; _Stt.Prepare(); Console.WriteLine("DefaultLanguage ..." + _Stt.DefaultLanguage + ", Engine : " + _Stt.Engine); } } catch (Exception e) { Console.WriteLine("SttClient Exception: " + e.Message); if (e is NotSupportedException) { Console.WriteLine("SttClient is not supported..."); } else if (e is UnauthorizedAccessException) { Console.WriteLine("UnauthorizedAccessException..."); } } }
IObservable <string> Listen(RecognitionType type, SilenceDetection?silence = null) => Observable.Create <string>(ob => { var handler = new EventHandler <RecognitionResultEventArgs>((sender, args) => { //args.Result == ResultEvent.ResultEvent.FinalResult //args.Result == ResultEvent.PartialResult }); var client = new SttClient(); client.RecognitionResult += handler; client.Start("en-US", type); if (silence != null) { client.SetSilenceDetection(silence.Value); } return(() => { client.Stop(); client.RecognitionResult -= handler; }); });
/// <summary> /// Dispose Speech-to-Text service /// </summary> public void Dispose() { Console.WriteLine("SpeechToTextService.Dispose()"); try { if (_Stt == null) { return; } _Stt.DefaultLanguageChanged -= _Stt_DefaultLanguageChanged; _Stt.EngineChanged -= _Stt_EngineChanged; _Stt.ErrorOccurred -= _Stt_ErrorOccurred; _Stt.RecognitionResult -= _Stt_RecognitionResult; _Stt.StateChanged -= _Stt_StateChanged; _Stt.Unprepare(); _Stt.Dispose(); _Stt = null; } catch (Exception e) { Console.WriteLine("SpeechToTextService.Dispose() : Error - " + e.Message); // Invalid Parameters Provided } }