2011-10-06 39 views
2

我希望能够通过调用speak.aspx?text=Hello%20world在ASP.NET应用程序中生成语音。这会给出.wav格式的回应。ASP.NET中的语音合成器 - 异步错误

到目前为止,我有一个空白页与后面的代码:

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个字符或更少的字符串。

谢谢。

回答