を呼び出して、ASP.NET アプリで音声を生成できるようにしたいと考えていますspeak.aspx?text=Hello%20world
。これにより、形式で応答が得られ.wav
ます。
これまでのところ、コードの背後にある空白のページがあります。
protected void Page_PreRender(object sender, EventArgs e)
{
using (var ss = new SpeechSynthesizer()) {
MemoryStream str = new MemoryStream();
ss.SetOutputToWaveStream(str);
ss.Speak(Server.UrlDecode(Request.QueryString["text"]));
Response.AddHeader("Content-Type", "audio/wav");
str.WriteTo(Response.OutputStream);
str.Close();
}
}
ただし、これは次のメッセージで失敗します。
InvalidOperationException : このコンテキストでは非同期操作は許可されていません。非同期操作を開始するページでは、Async 属性を true に設定する必要があり、非同期操作は PreRenderComplete イベントの前のページでのみ開始できます。
ディレクティブに追加Async="true"
すると@Page
、コードは実行されますが、ページのリクエストが無期限にハングします。何が問題なのか教えてください。使用する正しいコード/アプローチを示してください。
Google テキスト読み上げ API は 100 文字以下の文字列しか使用できないため、この API だけを使用することはできません。
ありがとうございました。