我正在尝试在Unity 5.4.4f中为我的项目添加文本到语音,我正在使用一个API,允许我输入在url栏中说什么然后它返回一个音频文件,我下载并且玩。
Regex rgx = new Regex("\\s+");
string result = rgx.Replace(timeLeft + " minutes left", "+");
string url = "http://api.voicerss.org/?key=MY_API_KEY&hl=en-us&src=" + result;
Debug.Log(url);
WWW audioWWW = new WWW(url);
yield return audioWWW;
AudioClip audClip = audioWWW.GetAudioClip(false, false, AudioType.MPEG);
audSrc.clip = audClip;
audSrc.Play();
它播放音频1秒然后停止。
答案 0 :(得分:1)
您使用的服务器生成 .mp3 文件,该文件似乎已压缩。无法完成播放音频或只播放一秒钟的问题只发生在此文件中。
修复方法是使用GetAudioClipCompressed
,但似乎尚未记录。只需将GetAudioClip
替换为GetAudioClipCompressed
,然后将2个参数传递给它。
public static AudioClip GetAudioClipCompressed(this WWW www, bool threeD, AudioType audioType);
完成此操作后,音频能够播放。这是完整代码的样子。请注意,我删除了API密钥。你可以把它放在自己的身上。
IEnumerator Start()
{
Regex rgx = new Regex("\\s+");
string result = rgx.Replace(timeLeft + " minutes left", "+");
string url = "http://api.voicerss.org/?key=MY_API_KEY&hl=en-us&src=" + result;
Debug.Log(url);
WWW audioWWW = new WWW(url);
yield return audioWWW;
AudioClip audClip = audioWWW.GetAudioClipCompressed(false, AudioType.MPEG);
audSrc.clip = audClip;
audSrc.Play();
}