C# 如何使用Unity Web请求进行流式音频。。。我想使用基于云的TTS
我正在尝试在我的Unity游戏中使用云TTS 对于较新的版本(我使用的是2019.1),他们已经在API中弃用了WWW而支持UnityWebRequest 我已经试过了,但那对我不起作用 我也尝试过其他线程,它们使用WWW,这在我的Unity版本中是不推荐的C# 如何使用Unity Web请求进行流式音频。。。我想使用基于云的TTS,c#,unity3d,C#,Unity3d,我正在尝试在我的Unity游戏中使用云TTS 对于较新的版本(我使用的是2019.1),他们已经在API中弃用了WWW而支持UnityWebRequest 我已经试过了,但那对我不起作用 我也尝试过其他线程,它们使用WWW,这在我的Unity版本中是不推荐的 void Start() { 开始例行程序(PlayTTS()); } IEnumerator PlayTTS() { 使用(UnityWebRequestMultimedia wr=new UnityWebRequestMultimedi
void Start()
{
开始例行程序(PlayTTS());
}
IEnumerator PlayTTS()
{
使用(UnityWebRequestMultimedia wr=new UnityWebRequestMultimedia.GetAudioClip(
"https://example.com/tts?text=Sample%20Text&voice=Male",
AudioType.OGGVORBIS)
)
{
返回wr.Send();
if(wr.isNetworkError)
{
调试日志警告(wr错误);
}
其他的
{
//AudioClip ttsClip=下载HandlerAudioClip.GetContent(wr);
}
}
}
浏览器中的URL(我使用Firefox)成功加载了音频剪辑,允许我播放
我想让它做的是玩TTS当游戏中发生一些事情时,它已经在“void Start”内完成了测试
我哪里做错了
提前谢谢
Josh自动添加具有属性的默认值 将此设置为true并添加检查,以便在开始播放之前延迟播放 差不多
public AudioSource source;
IEnumerator PlayTTS()
{
using (var wr = new UnityWebRequestMultimedia.GetAudioClip(
"https://example.com/tts?text=Sample%20Text&voice=Male",
AudioType.OGGVORBIS)
)
{
((DownloadHandlerAudioClip)wr.downloadHandler).streamAudio = true;
wr.Send();
while(!wr.isNetworkError && wr.downloadedBytes <= someThreshold)
{
yield return null;
}
if (wr.isNetworkError)
{
Debug.LogWarning(wr.error);
}
else
{
// Here I'm not sure if you would use
source.PlayOneShot(DownloadHandlerAudioClip.GetContent(wr));
// or rather
source.PlayOneShot((DownloadHandlerAudioClip)wr.downloadHandler).audioClip);
}
}
}
公共音频源;
IEnumerator PlayTTS()
{
使用(var wr=new UnityWebRequestMultimedia.GetAudioClip(
"https://example.com/tts?text=Sample%20Text&voice=Male",
AudioType.OGGVORBIS)
)
{
((DownloadHandlerAudioClip)wr.downloadHandler).streamAudio=true;
wr.Send();
虽然(!wr.isNetworkError&&wr.downloadedBytes)这不起作用,但我得到了红色的sqwiggleys和其他。等等……我只是从你的示例中得到了它……你使用的是什么Unity版本?我使用的是Unity 2019.1。你能做到这一点吗?我也一直在尝试获得音频流,但运气不佳。