6

我有以下代码

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

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

4

2 回答 2

7

我在 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-04-08T19:35:44.480 回答
0

您是否调试并检查了 的值ms.ToArray()?你可能有更好的运气ms.ToByteArray()

于 2011-01-12T16:27:42.463 回答