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 に答える