/// <summary> /// 合成语音,并保存语音文件 /// </summary> /// <param name="text">合成文本</param> /// <param name="rule">合成规则</param> /// <param name="savePath">语音文件保存路径</param> /// <param name="timeout">超时时长</param> /// <param name="audioType">音频文件格式</param> /// <param name="speaker">发音人</param> /// <param name="volume">音量</param> /// <param name="speed">音速</param> /// <param name="pitch">音调</param> /// <returns>合成语音的协程</returns> public static Coroutine Synthesis(string text, SynthesisRule rule, string savePath, SynthesisType audioType = SynthesisType.MP3, int timeout = 60000, Speaker speaker = Speaker.DuYaYa, int volume = 15, int speed = 5, int pitch = 5) { if (string.IsNullOrEmpty(text) || text == "" || Encoding.Default.GetByteCount(text) >= 1024) { Log.Error("合成语音失败:文本为空或长度超出了1024字节的限制!"); return(null); } text = rule.Apply(text); return(Main.Current.StartCoroutine(SynthesisCoroutine(text, savePath, audioType, timeout, speaker, volume, speed, pitch))); }
/// <summary> /// 合成语音 /// </summary> /// <param name="text">合成文本</param> /// <param name="rule">合成规则</param> /// <param name="handler">合成完毕后的处理者</param> /// <param name="failHandler">合成失败的处理者</param> /// <param name="timeout">超时时长</param> /// <param name="speaker">发音人</param> /// <param name="volume">音量</param> /// <param name="speed">音速</param> /// <param name="pitch">音调</param> /// <returns>合成语音的协程</returns> public static Coroutine Synthesis(string text, SynthesisRule rule, HTFAction <AudioClip> handler, HTFAction failHandler, int timeout = 60000, Speaker speaker = Speaker.DuYaYa, int volume = 15, int speed = 5, int pitch = 5) { if (string.IsNullOrEmpty(text) || text == "" || Encoding.Default.GetByteCount(text) >= 1024) { GlobalTools.LogError("合成语音失败:文本为空或长度超出了1024字节的限制!"); return(null); } text = rule.Apply(text); return(Main.Current.StartCoroutine(SynthesisCoroutine(text, handler, failHandler, timeout, speaker, volume, speed, pitch))); }
/// <summary> /// 合成语音,并保存语音文件 /// </summary> /// <param name="text">合成文本</param> /// <param name="rule">合成规则</param> /// <param name="savePath">语音文件保存路径</param> /// <param name="timeout">超时时长</param> /// <param name="audioType">音频文件格式</param> /// <param name="speaker">发音人</param> /// <param name="volume">音量</param> /// <param name="speed">音速</param> /// <param name="pitch">音调</param> public static void SynthesisByKEY(string text, SynthesisRule rule, string savePath, SynthesisType audioType = SynthesisType.MP3, int timeout = 60000, Speaker speaker = Speaker.Woman_DuYaYa, int volume = 15, int speed = 5, int pitch = 5) { if (string.IsNullOrEmpty(text) || text == "" || Encoding.Default.GetByteCount(text) >= 1024) { GlobalTools.LogError("合成语音失败:文本为空或长度超出了1024字节的限制!"); return; } if (!Coroutiner) { GameObject obj = new GameObject("Coroutiner"); Coroutiner = obj.AddComponent <SpeechCoroutiner>(); Object.DontDestroyOnLoad(obj); } text = rule.Apply(text); Coroutiner.StartCoroutine(SynthesisByKEYCoroutine(text, savePath, audioType, timeout, speaker, volume, speed, pitch)); }