/// <summary>
        /// テキストを読み上げる
        /// </summary>
        /// <param name="text">読み上げるテキスト</param>
        public async void Speak(
            string text,
            PlayDevices playDevice     = PlayDevices.Both,
            VoicePalettes voicePalette = VoicePalettes.Default,
            bool isSync  = false,
            float?volume = null)
        {
            if (string.IsNullOrWhiteSpace(text))
            {
                return;
            }

            // 起動していなければ起動させる
            var err = await this.StartAsync();

            if (!string.IsNullOrEmpty(err))
            {
                this.GetLogger().Error($"VOICEROID Speeak error text={text}, err={err}");
                return;
            }

            var process = this.Config.GetSelected()?.InnerProcess;

            if (process == null)
            {
                return;
            }

            // アクティブにさせないようにする
            this.SetNotActiveWindow(process.MainWindowHandle);

            if (this.Config.DirectSpeak)
            {
                // 直接再生する
                if (await process.SetTalkText(text))
                {
                    if (!await process.Play())
                    {
                        this.GetLogger().Error($"VOICEROID Speeak error text={text}");
                        return;
                    }
                }

                return;
            }

            // 現在の条件をハッシュ化してWAVEファイル名を作る
            var wave = this.GetCacheFileName(
                Settings.Default.TTS,
                text,
                this.Config.ToString());

            if (!File.Exists(wave))
            {
                // 音声waveファイルを生成する
                if (await process.SetTalkText(text))
                {
                    var result = await process.Save(wave);

                    if (!result.IsSucceeded)
                    {
                        this.GetLogger().Error($"VOICEROID Speeak error text={text}, err={result.Error}, extra={result.ExtraMessage}");
                        return;
                    }
                }
            }

            // 再生する
            SoundPlayerWrapper.Play(wave, playDevice, isSync, volume);
        }