SpeechSynthesizer - 如何播放/保存wav文件?

时间:2009-11-12 03:56:23

标签: c# .net asp.net speech-recognition

我在ASP.NET应用程序(非Silverlight)中有以下代码片段

 string sText = "Test text";
 SpeechSynthesizer ss = new SpeechSynthesizer();
 MemoryStream ms = new MemoryStream();
 ss.SetOutputToWaveStream(ms);
 ss.Speak(sText);
 //Need to send the ms Memory stream to the user for listening/downloadin

我如何:

  1. 在浏览器上播放此文件

  2. 提示用户下载wav文件?

  3. 任何人都可以帮助完成代码吗?

    编辑:感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

这是IHttpHandler的主要功能,可以满足您的需求。将处理程序URL插入bgsound标记或将其传递给浏览器中的任何内容,并为“downloadFile”var或其他内容添加查询字符串检查以有条件地添加Content-Disposition:attachment; filename = whatever.wav标头,如果你想下载。不需要中间文件(尽管如果SetOutputToWaveStream没有在另一个线程上运行,那么它就会出现故障。)

    public void ProcessRequest(HttpContext context)
    { 
        MemoryStream ms = new MemoryStream();

        context.Response.ContentType = "application/wav";

        Thread t = new Thread(() =>
            {
                SpeechSynthesizer ss = new SpeechSynthesizer();
                ss.SetOutputToWaveStream(ms);
                ss.Speak("hi mom");
            });
        t.Start();

        t.Join();
        ms.Position = 0;
        ms.WriteTo(context.Response.OutputStream);
        context.Response.End();
    }