2017-05-19 88 views
0

我想添加文字到我的項目在Unity 5.4.4f的語音,我使用的API,允許我進入什麼說在網址欄然後它返回一個音頻文件,我下載並播放。來自網址的音頻沒有完全播放

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

[This Post](http://stackoverflow.com/questions/34042928/how-to-stream-downloadplay-an-audio-from-url)可能會有用。 –

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