我希望能够通过调用在我的 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 个字符或更少的字符串。
谢谢你。