来自网址的音频不能完全播放

时间:2017-05-19 19:30:00

标签: c# audio unity3d

我正在尝试在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秒然后停止。

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();
}