/// <summary> /// 開放する /// </summary> public void Free() { FFXIVWatcher.Default.SpeakDelegate = null; SpeechController.Default.Free(); SpeechController.ttsType = string.Empty; SpeechController.instance = null; }
public static void SpeakWithDelay( this ISpeechController speechController, string text, double delay, PlayDevices playDevice = PlayDevices.Both, VoicePalettes voicePalette = VoicePalettes.Default, bool isSync = false, float?volume = null) { if (delay == 0d) { speechController.Speak(text, playDevice, isSync, volume); return; } var timer = new Timer(new TimerCallback((state) => { speechController.Speak(text, playDevice, isSync); (state as Timer).Dispose(); })); timer.Change( TimeSpan.FromSeconds(delay), TimeSpan.Zero); }
/// <summary> /// キャッシュファイル用の衝突しない名前を生成する /// </summary> /// <param name="ctrl"></param> /// <param name="ttsType"></param> /// <param name="tts"></param> /// <param name="parameter"></param> /// <returns> /// キャッシュファイル名</returns> public static string GetCacheFileName( this ISpeechController ctrl, string ttsType, string tts, string parameter, bool isMp3 = false) { var ext = !isMp3 ? "wav" : "mp3"; var hash = parameter.GetHashCode().ToString("X4"); var cacheName = $"{ttsType}.{tts}.{hash}.{ext}"; // ファイル名に使用できない文字を除去する cacheName = string.Concat(cacheName.Where(c => !InvalidCars.Contains(c))); var fileName = Path.Combine( CacheDirectory, cacheName); if (!Directory.Exists(Path.GetDirectoryName(fileName))) { Directory.CreateDirectory(Path.GetDirectoryName(fileName)); } return(fileName); }
public static void SpeakWithDelay( this ISpeechController speechController, string text, double delay, PlayDevices playDevice = PlayDevices.Both, bool isSync = false, float?volume = null) => SpeakWithDelay(speechController, text, delay, playDevice, VoicePalettes.Default, isSync, volume);
public BotLogicController(ISpeechController speechController, IModuleController moduleController, IApplicationService applicationService, IDateTimeService dateTimeService, IInternetService internetService, IWeatherService weatherService) { _moduleController = moduleController; _speechController = speechController; _applicationService = applicationService; _dateTimeService = dateTimeService; _internetService = internetService; _weatherService = weatherService; }
public static void CreateWaveWrapper( this ISpeechController speechController, string wave, Action action) { if (!File.Exists(wave)) { lock (speechController) { if (!File.Exists(wave)) { action?.Invoke(); } } } }
public RecogntionController(INaturalLanguageProcessor naturalLanguageProcessor, ISpeechController speechController, IModuleController moduleController, IBotLogicController logicController) { _naturalLanguageProcessor = naturalLanguageProcessor; _speechController = speechController; _moduleController = moduleController; _logicController = logicController; ReadGrammarFiles(); // engine.UpdateRecognizerSetting("CFGConfidenceRejectionThreshold", 70); engine.LoadGrammarCompleted += _LoadGrammarCompleted; engine.LoadGrammarAsync(shellCommads); engine.LoadGrammarAsync(grammar); engine.SetInputToDefaultAudioDevice(); // engine.SpeechRecognitionRejected += _recognizer_SpeechRecognitionRejected; StartUp(); }
private static void OneShotPlayMode(string libraryName, string engineName, string text, EngineParameters ep) { var engines = SpeechController.GetAllSpeechEngine(); ISpeechController engine = engineName == "" ? SpeechController.GetInstance(libraryName) : SpeechController.GetInstance(libraryName, engineName); if (engine == null) { Console.WriteLine($"<= {libraryName} [{engineName}] が見つかりません。x86/x64は区別されます。"); return; } Console.WriteLine($"<= {libraryName} [{engine.Info.EngineName}]: {text}"); if (engine == null) { Console.WriteLine($"{libraryName} を起動できませんでした。"); return; } engine.Activate(); engine.Finished += (s, a) => { engine.Dispose(); }; if (ep.Volume > 0) { engine.SetVolume(ep.Volume); } if (ep.Speed > 0) { engine.SetSpeed(ep.Speed); } if (ep.Pitch > 0) { engine.SetPitch(ep.Pitch); } if (ep.PitchRange > 0) { engine.SetPitchRange(ep.PitchRange); } engine.Play(text); }
public static void SpeakWithDelay( this ISpeechController speechController, string text, int delay) { if (delay == 0) { speechController.Speak(text); return; } var timer = new Timer(new TimerCallback((state) => { speechController.Speak(text); (state as Timer).Dispose(); })); timer.Change( delay * 1000, 0); }
public static void SpeakWithDelay( this ISpeechController speechController, string text, int delay, PlayDevices playDevice = PlayDevices.Both, bool isSync = false) { if (delay == 0) { speechController.Speak(text, playDevice, isSync); return; } var timer = new Timer(new TimerCallback((state) => { speechController.Speak(text, playDevice, isSync); (state as Timer).Dispose(); })); timer.Change( delay * 1000, 0); }
public static Logger GetLogger( this ISpeechController ctrl) => Logger;