C# IBM文本到语音转换无法在统一中工作

C# IBM文本到语音转换无法在统一中工作,c#,unity3d,ibm-cloud,text-to-speech,ibm-watson,C#,Unity3d,Ibm Cloud,Text To Speech,Ibm Watson,在Unity 2019.4.9f1中,我学习了IBM Watson Assistant使用文本到语音的教程。问题是没有将文本翻译成语音,我做了一些日志记录,看看它是否收到了来自助手的结果,它收到了,但它没有转换成语音。我刚接触Unity和IBM Watson,所以我不明白问题出在哪里。我试图在网上查找错误,但找不到任何解决方法。任何帮助都将不胜感激 我的控制台中显示的3个错误如下: [09/10/2020 20:44:58][RESTConnector.ProcessRequestQueue()

在Unity 2019.4.9f1中,我学习了IBM Watson Assistant使用文本到语音的教程。问题是没有将文本翻译成语音,我做了一些日志记录,看看它是否收到了来自助手的结果,它收到了,但它没有转换成语音。我刚接触Unity和IBM Watson,所以我不明白问题出在哪里。我试图在网上查找错误,但找不到任何解决方法。任何帮助都将不胜感激

我的控制台中显示的3个错误如下:

[09/10/2020 20:44:58][RESTConnector.ProcessRequestQueue()][ERROR]URL:https://api.eu-gb.text-to-speech.watson.cloud.ibm.com/v1/synthesize?voice=en-GB_KateVoice,错误代码:400,错误:HTTP/1.1 400错误请求,响应:{ “错误”:“输入包含不匹配的打开SSML标记”, “代码”:400, “代码描述”:“错误请求” } 调试:日志错误(对象) DebugReactor:ProcessLog(LogRecord)(位于Assets/IBMSDKCore/Debug/DebugReactor.cs:60) LogSystem:ProcessLog(LogRecord)(位于Assets/IBMSDKCore/Logging/Logger.cs:207) IBM.Cloud.SDK.Log:Error(String,String,Object[])(位于Assets/IBMSDKCore/Logging/Logger.cs:280) IBM.Cloud.SDK.Connection.d_u33:MoveNext()(位于Assets/IBMSDKCore/Connection/RESTConnector.cs:606) 例程:MoveNext()(位于Assets/IBMSDKCore/Utilities/Runnable.cs:131) SetupCoroutine:InvokeMoveNext(IEnumerator,IntPtr)

[09/10/2020 20:44:58][Unity][CRITICAL]Unity异常ArgumentNullException:缓冲区不能为空。 参数名称:缓冲区:System.IO.MemoryStream..ctor(System.Byte[]缓冲区,System.Boolean可写)(at:0) (带检查的包装器远程处理调用)System.IO.MemoryStream..ctor(字节[],bool) IBM.Cloud.SDK.Utilities.WaveFile.ParseWAV(System.String clipName,System.Byte[]数据)(位于Assets/IBMSDKCore/Utilities/WaveFile.cs:115) TextToSpeech+c_uuu显示类18_0.b_uuu0(IBM.Cloud.SDK.DetailedResponse`1[T]响应,IBM.Cloud.SDK.IBMError错误)(位于Assets/Script/TextToSpeech.cs:218) IBM.Watson.TextToSpeech.V1.TextToSpeechService.OnSynthesizeResponse(IBM.Cloud.SDK.Connection.RESTConnector+Request-req,IBM.Cloud.SDK.Connection.RESTConnector+Response-resp)(位于Assets/Watson/Scripts/Services/TextToSpeech/V1/TextToSpeechService.cs:357) IBM.Cloud.SDK.Connection.RESTConnector+d_u33.MoveNext()(位于Assets/IBMSDKCore/Connection/RESTConnector.cs:646) IBM.Cloud.SDK.Utilities.Runnable+Routine.MoveNext()(位于Assets/IBMSDKCore/Utilities/Runnable.cs:131) UnityEngine.SetupCoroutine.InvokeMoveNext(System.Collections.IEnumerator枚举器,System.IntPtr returnValueAddress)(位于:0) 调试:日志错误(对象) DebugReactor:ProcessLog(LogRecord)(位于Assets/IBMSDKCore/Debug/DebugReactor.cs:60) LogSystem:ProcessLog(LogRecord)(位于Assets/IBMSDKCore/Logging/Logger.cs:207) IBM.Cloud.SDK.Log:Critical(String,String,Object[])(位于Assets/IBMSDKCore/Logging/Logger.cs:295) LogSystem:UnityLogCallback(String,String,LogType)(位于Assets/IBMSDKCore/Logging/Logger.cs:168) 应用程序:CallLogCallback(String,String,LogType,Boolean)

ArgumentNullException:缓冲区不能为null。 参数名称:缓冲区 System.IO.MemoryStream..ctor(System.Byte[]缓冲区,System.Boolean可写)(at:0) (带检查的包装器远程处理调用)System.IO.MemoryStream..ctor(字节[],bool) IBM.Cloud.SDK.Utilities.WaveFile.ParseWAV(System.String clipName,System.Byte[]数据)(位于Assets/IBMSDKCore/Utilities/WaveFile.cs:115) TextToSpeech+c_uuu显示类18_0.b_uuu0(IBM.Cloud.SDK.DetailedResponse`1[T]响应,IBM.Cloud.SDK.IBMError错误)(位于Assets/Script/TextToSpeech.cs:218) IBM.Watson.TextToSpeech.V1.TextToSpeechService.OnSynthesizeResponse(IBM.Cloud.SDK.Connection.RESTConnector+Request-req,IBM.Cloud.SDK.Connection.RESTConnector+Response-resp)(位于Assets/Watson/Scripts/Services/TextToSpeech/V1/TextToSpeechService.cs:357) IBM.Cloud.SDK.Connection.RESTConnector+d_u33.MoveNext()(位于Assets/IBMSDKCore/Connection/RESTConnector.cs:646) IBM.Cloud.SDK.Utilities.Runnable+Routine.MoveNext()(位于Assets/IBMSDKCore/Utilities/Runnable.cs:131) UnityEngine.SetupCoroutine.InvokeMoveNext(System.Collections.IEnumerator枚举器,System.IntPtr returnValueAddress)(位于:0)


如果你有固定/不变的行,你想被翻译成语音,最好的办法是将它们制作成音频文件,然后导入unity。 你也可以自己做演讲并导入

这也很有帮助,因为这样您就可以在与其他对象/点发生碰撞时触发音频。例如,在教程级别中

另一个解决方案是检查你的控制台,我看到3个错误,其余的看起来就像警告,如果你修复了错误,警告就会消失

第一个似乎是您对服务器的请求不正确,请尝试另一个sml标记并检查它是否有效。
第二个和第三个是缓冲区,应该在代码中配置。所以,如果你解决了这个问题,你就解决了所有的问题

如果你有固定/不变的行,你想被翻译成语音,最好的办法是将它们制作成音频文件,然后导入unity。 你也可以自己做演讲并导入

这也很有帮助,因为这样您就可以在与其他对象/点发生碰撞时触发音频。例如,在教程级别中

另一个解决方案是检查你的控制台,我看到3个错误,其余的看起来就像警告,如果你修复了错误,警告就会消失

第一个似乎是您对服务器的请求不正确,请尝试另一个sml标记并检查它是否有效。 第二个和第三个是缓冲区,应该在代码中配置。所以,如果你解决了这个问题,你就解决了所有的问题