/// <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);
Esempio n. 5
0
 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();
             }
         }
     }
 }
Esempio n. 7
0
 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();
 }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
        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;