asp.net 实现 tts(半成品)

之前用WinForm实现tts已经成功,就调用了下系统的类库。但我把相同的代码搬到asp.net上时却碰到了许多问题,查了好多网站、试过了很多方法,到现在算是做出了一部分吧。

之前调用微软的TTS是用的这个代码

1 SpeechSynthesizer speech = new SpeechSynthesizer();
2 public void Speak(string text, int rate)
3 {
4     speech.Rate = rate;
5     speech.Speak(text);
6     speech.Dispose();
7 }

在网页上,我把这个方法赋给了button的click事件。按第一次是有声音的,但声音播放完后后网页却仍在不停的载入,再按button也没反应了。跟着调试过了一遍,也发现事件明明都结束了。感觉很凌乱,然后想用Ajax让它后台自己执行并生成音频文件,第一次点击按钮时生成很顺利,但点击第二时就出现问题了,它过了好久才生成出来,就像卡住了,一小伙伴也遇到了同样的问题。先上Ajax代码:

 1     <script type="text/javascript">
 2         $(document).ready(function() {
 3             $("#bt_read").click(function () {
 4                 var url = window.location.href + "/TextSpeak";
 5                 $.ajax({
 6                     type: "POST",
 7                     url: url,
 8                     data: "{‘text‘:‘hello‘}",
 9                     contentType: "application/json;charset=utf-8",
10                     dataType: "json",
11                     error: function() {
12                         alert("error");
13                     }
14                 });
15             });
16         })
17     </script>

这是后台的代码:

1     [WebMethod]
2     public static void TextSpeak(string text)
3     {
4         TextToSpeak ttSpeak = new TextToSpeak();
5         string x = DateTime.Now.ToString("yyyyMMddHHmmss");
6         ttSpeak.SaveWaveFile("d:/" + x + ".wav", text, 1, "male");
7     }

(类TextToSpeak的代码在上一篇里)

希望有大神能看到帮我解决这个问题(若大神看不到,就只能自己慢慢纠结了>_<)-----如果想看解决方法的小伙伴,可以忽略上面的代码。。

尝试了好多方法,就这个能行(还要添加一个DotNetSpeech.dll类库):

    /// <summary>
    /// 网页上使用TTS
    /// </summary>
    /// <param name="path">路径</param>
    /// <param name="text">文本</param>
    /// <param name="rate">语速</param>
    /// <param name="gender">性别</param>
    public void SaveWaveFile(string path,string text,int rate,string gender)
    {
        Type type = Type.GetTypeFromProgID("SAPI.SpVoice");
        dynamic spVoice = Activator.CreateInstance(type);//主要是用了这个来调用DotNetSpeech
        var obj = spVoice.GetVoices();
        if (gender.ToLower()=="male")
        {
            for (int i = 0; i < obj.Count; i++)
            {
                string desc = obj.Item(i).GetDescription();
                if (desc.Contains("Paul"))
                {
                    spVoice.Voice = obj.Item(i);
                }

            }
        }
        else if(gender.ToLower()=="female")
        {
             for (int i = 0; i < obj.Count; i++)
            {
                string desc = obj.Item(i).GetDescription();
                if (desc.Contains("Kate"))
                {
                    spVoice.Voice = obj.Item(i);
                }

            }
        }
        spVoice.Rate = rate;
        SpeechStreamFileMode spfFileMode = SpeechStreamFileMode.SSFMCreateForWrite;
        SpFileStream spFileStream = new SpFileStreamClass();
        spFileStream.Open(path, spfFileMode, false);
        spVoice.AudioOutputStream = spFileStream;
        spVoice.Speak(text);
        spVoice.WaitUntilDone(1000);
        spFileStream.Close();

    }

为啥我没写speak的方法呢。。要在网页客户端上播放音频,让服务器speak有啥用。服务器喊哑了,客户端也是听不到的哦~~只能生成音频文件传到网页上用插件播放。为啥我说是半成品呢,因为我试过很多方法了,总找不到合适的插件解决播放的问题.

突然才发现原来它可以直接生成.MP3,网上都说要生成wav格式的,自己也没试试,直到看到小伙伴直接把路径写成*.MP3,并且能生成出来才知道原来是可以直接输出MP3哇。。那这样问题就不大了,找个插件把路径附进去就行啦~~

插件要满足这两个条件:

1.能动态添加链接。

2.能播放.wav格式。

我试过用自定义控件编写的mediaPlayer插件来播放 参考:http://www.cnblogs.com/insus/archive/2009/05/03/1448097.html

其实这个能把问题都解决了。。就是只有在ie上有效果,其他浏览器上都不行。。看了网页代码,音频链接都读取到了但就是不能播放~~

还有一个结果方法,就是让swf播放器能播放tts生成的wav文件,或者把wav转换成MP3。。这个我还没能实现。

先到这了,我还在慢慢调试,等搞出来了,立马发出来。。也希望有大神帮我解决下哇~~

asp.net 实现 tts(半成品)

时间: 2024-11-15 07:01:14

asp.net 实现 tts(半成品)的相关文章

大家好

http://www.yugaopian.com/people/259723 http://www.yugaopian.com/people/259744 http://www.yugaopian.com/people/259783 http://www.yugaopian.com/people/259824 http://www.yugaopian.com/people/259839 http://www.yugaopian.com/people/259933 http://www.yugao

阿哥吗卡怪每次哦阿哥看啦过啦嘎开吃麻辣个啊蓝光

http://www.xx186.com/web/web_kpic.asp?id=156613http://www.xx186.com/web/web_kpic.asp?id=156608http://www.xx186.com/web/web_kpic.asp?id=156605http://www.xx186.com/web/web_kpic.asp?id=156602http://www.xx186.com/web/web_kpic.asp?id=156600http://www.xx18

风格更家霍建华

http://www.9ku.com/fuyin/daogaoo.asp?dgid=119864http://www.9ku.com/fuyin/daogaoo.asp?dgid=119867http://www.9ku.com/fuyin/daogaoo.asp?dgid=119876http://www.9ku.com/fuyin/daogaoo.asp?dgid=119879http://www.9ku.com/fuyin/daogaoo.asp?dgid=119883http://www

,了可美军以本合同个v分

http://shike.gaotie.cn/zhan.asp?zhan=%A1%FE%CE%F7%B0%B2%B8%B4%B7%BD%B5%D8%B7%D2%C5%B5%F5%A5%C6%AC%C4%C4%C0%EF%C2%F2Q%A3%BA%A3%B1%A3%B1%A3%B2%A3%B7%A3%B4%A3%B0%A3%B1%A3%B1%A3%B7%A3%B5%A1%F4 http://shike.gaotie.cn/zhan.asp?zhan=%A8%7D%CD%AD%B4%A8%B8%B4

UCML 2.0 For ASP.NET开发平台简介

互联网时代,我们能跟上网络变革的步伐吗?我们的产品领先于竞争对手吗?我们能够满足日益个性化的客户需求吗? 采用新的软件开发方法是我们的首要选择. 第一个全面支持ASP.NET的应用框架开发平台诞生了-UCML 2.0 For ASP.NET. UCML(Universal Component Modeling Logic),通用组件建模逻辑.是一个面向WEB的应用框架开发工具,它涵盖了一个应用系统业务开发的全过程,包括数据层定义(O/R映射及GUID技 术).业务组件.界面逻辑及报表设计.业务规

微软TTS尝试系列之开篇杂谈(仅思路)

第一次写博客,不知道如何下手,思路也乱,就先聊聊怎么进的园子吧,但愿不会浪费大家太多的宝贵时间>_<. 与博客园结缘应该是大三刚开始的时候.当时学校教务处想开发一个教务安排系统,为了省钱就从系里找人,于是我和另外两个同学就接了下来.Money什么的就不说了,接着了解需求.确定方案和分配任务(第一次做一个整体的小项目,比较乱).我们三个从大二开始学习C#,因此开发使用的是C#和ASP.NET.当时对我们来说有两个棘手的问题:一是这个系统需要将录入的内容生成教务处给定格式的Word文档,二是需要根

ASP.NET多线程下使用HttpContext.Current为null解决方案

多线程或者异步调用中如何访问HttpContext? 前面我还提到在APM模式下的异步完成回调时,访问HttpContext.Current也会返回null,那么此时该怎么办呢? 答案有二种:1. 在类型中添加一个字段来保存HttpContext的引用(异步开始前).2. 将HttpContext赋值给BeginXXX方法的最后一个参数(object state) 建议优先选择第二种方法,因为可以防止以后他人维护时数据成员被意外使用. 引用: 不错的文章:http://www.cnblogs.c

蛋疼的HTML5 半成品VIDEO

故事有点长 喜欢搞HTML5 有耐心的童鞋可以看看 做过或者接触过HTML5技术的同学们可能都清楚  HTML5这2年貌似很火的样子     很多技术企业都纷纷像HTML5技术转型  或者 希望用HTML5某些技术特点去解决生产中的一些功能  比如 WEB存储  canvas 画布  拖放drag     一些新颖的CSS3元素 audio/video  等等 有些东西还是挺好玩的 接下来我想说说我们的故事   由于我们要搞视频网站   主推的是视频的播放   当然公司领导看重了HTML5的 v

ASP.NET MVC搭建项目后台UI框架—5、Demo演示Controller和View的交互

目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NET MVC搭建项目后台UI框架—4.tab多页签支持 ASP.NET MVC搭建项目后台UI框架—5.演示Controller和View的交互 这一节,我将用一个Demo来演示在此UI框架中,控制器和视图的交互.以渠道管理为例.效果图如下: 这里我使用了基于jquery的模态窗体组件lhgdialo