C#SpeechSynthesizer使服务无响应

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)

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

And*_*tos 6

我遇到了与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)


Dav*_*sky 0

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