Пример #1
0
 public static async Task <bool> PlayByName(string text = "", string voiceroidName = "", VoiceroidCommand command = null)
 {
     return(await Play(text, GetVoiceroidIdByName(voiceroidName), command));
 }
Пример #2
0
 public static async Task <string> SaveByName(string text = "", string voiceroidName = "", string filePathRequest = null, VoiceroidCommand command = null)
 {
     return(await Save(text, GetVoiceroidIdByName(voiceroidName), filePathRequest, command));
 }
Пример #3
0
        /// <summary>
        /// 再生
        /// </summary>
        /// <param name="text"> 読み上げたいテキスト。無い場合はそのまま再生 </param>
        /// <param name="voiceroidId"> 対象のボイスロイド。無い場合は最初に見つけたやつ </param>
        /// <returns> true/false = 成功/失敗 </returns>
        public static async Task <bool> Play(string text = "", VoiceroidId?voiceroidId = null, VoiceroidCommand command = null)
        {
            await factory.Update();

            foreach (IProcess process in factory.Processes)
            {
                if ((voiceroidId == null || voiceroidId == process.Id) &&
                    (string.IsNullOrWhiteSpace(text) || await SetText(process, text)) &&
                    await process.Play())
                {
                    if (command != null)
                    {
                        command.TalkText = await process.GetTalkText();

                        command.voiceroidName = Enum.GetName(typeof(VoiceroidId), process.Id);
                    }
                    return(true);
                }
            }
            return(false);
        }
Пример #4
0
        /// <summary>
        /// 保存
        /// </summary>
        /// <param name="text"> 読み上げたいテキスト。無い場合はそのまま再生 </param>
        /// <param name="voiceroidId"> 対象のボイスロイド。無い場合は最初に見つけたやつ </param>
        /// <param name="filePathRequest"> 保存に使いたいファイル名。無い場合はデフォルト値 </param>
        /// <returns></returns>
        public static async Task <string> Save(string text = "", VoiceroidId?voiceroidId = null, string filePathRequest = null, VoiceroidCommand command = null)
        {
            await factory.Update();

            foreach (IProcess process in factory.Processes)
            {
                if ((voiceroidId == null || voiceroidId == process.Id) &&
                    process.IsRunning && !process.IsPlaying && !process.IsDialogShowing && !process.IsSaving && !process.IsStartup &&
                    (string.IsNullOrWhiteSpace(text) || await SetText(process, text)))
                {
                    string charaName = await process.GetCharacterName();

                    string talkText = await process.GetTalkText();

                    string filePath = string.IsNullOrWhiteSpace(filePathRequest) ?
                                      GetDefaultFilePath(charaName, talkText) :
                                      filePathRequest;
                    if (!FilePathUtil.IsValidPath(filePath, out string invalidLetter))
                    {
                        break;
                    }
                    var result = await process.Save(filePath);

                    if (result.IsSucceeded)
                    {
                        if (command != null)
                        {
                            command.TalkText = await process.GetTalkText();

                            command.voiceroidName = Enum.GetName(typeof(VoiceroidId), process.Id);
                        }
                        return(result.FilePath);
                    }
                }
            }
            return(null);
        }