Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用Unity Web请求进行流式音频。。。我想使用基于云的TTS_C#_Unity3d - Fatal编程技术网

C# 如何使用Unity Web请求进行流式音频。。。我想使用基于云的TTS

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

我正在尝试在我的Unity游戏中使用云TTS

对于较新的版本(我使用的是2019.1),他们已经在API中弃用了WWW而支持UnityWebRequest

我已经试过了,但那对我不起作用

我也尝试过其他线程,它们使用WWW,这在我的Unity版本中是不推荐的

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。你能做到这一点吗?我也一直在尝试获得音频流,但运气不佳。