Bla*_*erl 6 c# web-services speechsynthesizer
我有以下代码
[WebMethod]
public byte[] stringToWav(string text)
{
SpeechSynthesizer ss = new SpeechSynthesizer();
MemoryStream ms = new MemoryStream();
ss.SetOutputToWaveStream(ms);
ss.Speak(text);
return ms.ToArray();
}
Run Code Online (Sandbox Code Playgroud)
并且该服务什么都不返回.知道为什么会这样吗?
我遇到了与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;
}
Run Code Online (Sandbox Code Playgroud)