我有下面的代码
[WebMethod]
public byte[] stringToWav(string text)
{
SpeechSynthesizer ss = new SpeechSynthesizer();
MemoryStream ms = new MemoryStream();
ss.SetOutputToWaveStream(ms);
ss.Speak(text);
return ms.ToArray();
}并且该服务不返回任何内容。知道为什么会这样吗?
发布于 2011-04-09 03:35:44
我在一个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;
}发布于 2011-01-13 00:27:42
您是否调试并检查了ms.ToArray()的值?使用ms.ToByteArray()可能会有更好的运气。
https://stackoverflow.com/questions/4671158
复制相似问题