using Crosstales.RTVoice.Tool; using System; using System.Collections; using System.Collections.Generic; using System.IO; using UnityEngine; using UnityEngine.Networking; using ZXK.Framework; using ZXK.ZPS; /******************************************************************************** *Create By CG *Function 文字转语音调用类 *********************************************************************************/ namespace ZXK.UTility { public class SpeakManager : MonoSingleton { private AudioSource _curAudSrc = null; [SerializeField] private List _wqbAudioClips = new List(); //private Dictionary _wqbAudioClips = new Dictionary(); [SerializeField] private List _dhbAudioClips = new List(); //private Dictionary _dhbAudioClips = new Dictionary(); void Start() { _curAudSrc = transform.GetComponent(); //_wqbAudioClips.Clear(); //string wqbfilePath = System.IO.Path.Combine(Application.streamingAssetsPath, ConstCtrl.AUDIO_WQB_PATH); //string[] wqbfiles = Directory.GetFiles(wqbfilePath, "*.mp3"); // 假设我们只加载mp3格式的音频 //foreach (string file in wqbfiles) //{ // StartCoroutine(ReadAudioDataWeb(file, WqbCallback)); //} //_dhbAudioClips.Clear(); //string dhbfilePath = System.IO.Path.Combine(Application.streamingAssetsPath, ConstCtrl.AUDIO_DHB_PATH); //string[] dhbfiles = Directory.GetFiles(dhbfilePath, "*.mp3"); // 假设我们只加载mp3格式的音频 //foreach (string file in dhbfiles) //{ // StartCoroutine(ReadAudioDataWeb(file, DhbCallback)); //} } //private void WqbCallback(UnityEngine.Object wqbClip) //{ // _wqbAudioClips.Add(wqbClip.name,(AudioClip)wqbClip); //} //private void DhbCallback(UnityEngine.Object wqbClip) //{ // _dhbAudioClips.Add(wqbClip.name,(AudioClip)wqbClip); //} /// /// 播放语音 /// /// 第二工序名字对应语音名字 /// 1代表是提示语音,2代表说明语音 public void StartSpeak(string secondProcessName, int index) { AudioClip clip = null; if (GameRoot.Instance._CurType == EnumCtrl.Type.WQB) { string wqbfile = secondProcessName + index; for (int i = 0; i < _wqbAudioClips.Count; i++) { if (_wqbAudioClips[i].name.Equals(wqbfile)) { clip = _wqbAudioClips[i]; } } } else { string dhbfile = secondProcessName + index; for (int i = 0; i < _dhbAudioClips.Count; i++) { if (_dhbAudioClips[i].name.Equals(dhbfile)) { clip = _dhbAudioClips[i]; } } } _curAudSrc.clip = clip; _curAudSrc.Play(); } /// /// 关闭语音 /// public void StopSpaek() { _curAudSrc.Stop(); } //private IEnumerator ReadAudioDataWeb(string filePath) //{ // using (UnityWebRequest request = UnityWebRequestMultimedia.GetAudioClip(filePath, AudioType.MPEG)) // { // yield return request.SendWebRequest(); // AudioClip clip = DownloadHandlerAudioClip.GetContent(request); // clip.name = Path.GetFileNameWithoutExtension(filePath); // _curAudSrc.clip = clip; // _curAudSrc.Play(); // } // yield return null; //} } }