C#SpeechSynthesizer使服务无响应

我有以下代码

[WebMethod] public byte[] stringToWav(string text) { SpeechSynthesizer ss = new SpeechSynthesizer(); MemoryStream ms = new MemoryStream(); ss.SetOutputToWaveStream(ms); ss.Speak(text); return ms.ToArray(); } 

并且该服务什么都不返回。 知道为什么会这样吗?

我遇到了与ashx页面相同的问题。

我不明白为什么,但似乎你需要使用一个单独的线程并等待它完成。

以下代码对我有用:

 public byte[] TextToBytes(string textToSpeak) { byte[] byteArr = null; var t = new System.Threading.Thread(() => { SpeechSynthesizer ss = new SpeechSynthesizer(); using (MemoryStream memoryStream = new MemoryStream()) { ss.SetOutputToWaveStream(memoryStream); ss.Speak(textToSpeak); byteArr = memoryStream.ToArray(); } }); t.Start(); t.Join(); return byteArr; } 

你调试并检查了ms.ToArray()的值吗? ms.ToByteArray()可能会更好运。