示例#1
0
        /// <summary>
        /// 設定ファイルを読み込む
        /// </summary>
        /// <returns>読み込まれたらtrueを返す</returns>
        public static bool Load()
        {
            bool result;
            SystemSettingModel  system_setting;
            SpeakerSettingModel speaker_setting;

            try
            {
                using (Stream stream = new FileStream(Path, FileMode.Open, FileAccess.Read))
                {
                    var serializer = new DataContractJsonSerializer(typeof(SettingJson));
                    var setting    = (SettingJson)serializer.ReadObject(stream);
                    system_setting  = setting.System;
                    speaker_setting = setting.Speaker;
                }
                result = true;
            }
            catch (Exception)
            {
                // 初期値を返す
                system_setting  = new SystemSettingModel();
                speaker_setting = new SpeakerSettingModel();
                result          = false;
            }
            ApplySystemSetting(system_setting);
            ApplySpeakerSetting(speaker_setting);
            return(result);
        }
        public IActionResult SpeakerSetting(string voice_db)
        {
            SpeakerSettingModel model = Setting.Speaker.Clone();

            model.VoiceDbName = voice_db ?? Setting.Speaker.VoiceDbName;

            // 話者名のリストを取得する
            string[] voice_names = null;
            Setting.Lock();
            try
            {
                if ((model.VoiceDbName != null) && (0 < model.VoiceDbName.Length))
                {
                    AitalkWrapper.LoadVoice(model.VoiceDbName);
                    voice_names = AitalkWrapper.Parameter.VoiceNames;
                }
            }
            catch (Exception) { }
            finally
            {
                Setting.Unlock();
            }

            // 音声ライブラリと話者のリストを作成してビューに渡す
            ViewData["VoiceDbListItems"] = GenerateSelectListItems(AitalkWrapper.VoiceDbList);
            ViewData["SpeakerListItems"] = GenerateSelectListItems(voice_names);
            return(View(model));
        }
 public IActionResult SpeakerSetting(SpeakerSettingModel speaker_setting)
 {
     if (speaker_setting != null)
     {
         string error_message = null;
         bool   saved         = false;
         Setting.Lock();
         try
         {
             error_message = Setting.ApplySpeakerSetting(speaker_setting);
             saved         = Setting.Save();
         }
         finally
         {
             Setting.Unlock();
         }
         if (saved == false)
         {
             ViewData["Alert"] = "設定の保存に失敗しました。";
         }
         else if (error_message != null)
         {
             ViewData["Alert"] = $"設定は保存されましたがエラーが発生しました。{error_message}";
         }
         else
         {
             ViewData["Alert"] = "設定は保存され、設定の有効性が確認されました。";
         }
     }
     return(SpeakerSetting((string)null));
 }
 public IActionResult SpeakerSetting(SpeakerSettingModel speaker_setting)
 {
     if (speaker_setting != null)
     {
         string error_message = null;
         var    saved         = false;
         Setting.Lock();
         try
         {
             error_message = Setting.ApplySpeakerSetting(speaker_setting);
             saved         = Setting.Save();
         }
         finally
         {
             Setting.Unlock();
         }
         if (saved == false)
         {
             return(BadRequest("Failed to save"));
         }
         else if (error_message != null)
         {
             return(BadRequest($"Saved but {error_message}"));
         }
         else
         {
             return(Ok("OK"));
         }
     }
     return(NotFound());
 }
示例#5
0
        /// <summary>
        /// 新しい話者設定値を適用する。
        /// </summary>
        /// <param name="setting">新しい話者設定値</param>
        /// <returns>エラーメッセージ、もしくはnull</returns>
        public static string ApplySpeakerSetting(SpeakerSettingModel setting)
        {
            Speaker = setting;
            try
            {
                // ボイスライブラリを読み込む
                if (0 < Speaker.VoiceDbName.Length)
                {
                    // 指定されたボイスライブラリを読み込む
                    string voice_db_name = Speaker.VoiceDbName;
                    AitalkWrapper.LoadVoice(voice_db_name);

                    // 話者が指定されているときはその話者を選択する
                    if (0 < Speaker.SpeakerName.Length)
                    {
                        AitalkWrapper.Parameter.CurrentSpeakerName = Speaker.SpeakerName;
                    }
                }
                else
                {
                    // 未指定の場合、初めに見つけたものを読み込む
                    string voice_db_name = AitalkWrapper.VoiceDbList.FirstOrDefault() ?? "";
                    AitalkWrapper.LoadVoice(voice_db_name);
                }

                // 話者パラメータの初期値を記憶する
                DefaultSpeakerParameter = new SpeakerModel
                {
                    Volume        = AitalkWrapper.Parameter.VoiceVolume,
                    Speed         = AitalkWrapper.Parameter.VoiceSpeed,
                    Pitch         = AitalkWrapper.Parameter.VoicePitch,
                    Emphasis      = AitalkWrapper.Parameter.VoiceEmphasis,
                    PauseMiddle   = AitalkWrapper.Parameter.PauseMiddle,
                    PauseLong     = AitalkWrapper.Parameter.PauseLong,
                    PauseSentence = AitalkWrapper.Parameter.PauseSentence
                };

                return(null);
            }
            catch (AitalkException ex)
            {
                return(ex.Message);
            }
            catch (Exception ex)
            {
                return(ex.Message);
            }
        }