关于最近写的这个程序,写一个随笔吧,留下足迹,以供以后参考看看;这个程序主要就是实现了文字转换成声音,也可以装换MP3格式的文件。主要是利用DotNetSpeech.dll来实现的,主要发声代码就是:

1 using DotNetSpeech;
2 SpeechVoiceSpeakFlags SVPF = new SpeechVoiceSpeakFlags();
3 SpVoice Voice = new SpVoice();
4 Voice.Rate=2; //设置读的速度
5 Voice.Speak("需要读的文字");

 

转换成MP3文件的代码如下:

 1  using DotNetSpeech;
2 SpeechStreamFileMode SSFM = SpeechStreamFileMode.SSFMCreateForWrite;
3 SpFileStream SFS = new SpFileStream();
4 SpeechVoiceSpeakFlags SVPF = new SpeechVoiceSpeakFlags();
5 SpVoice Voice = new SpVoice();
6 SFS.Open(pathBase + @"\" + FloderName + @"\" + fileName + ".mp3", SSFM, false);
7 Voice.AudioOutputStream = SFS;
8 Voice.Speak(strTxt, SVPF);
9 Voice.WaitUntilDone(System.Threading.Timeout.Infinite);
10 SFS.Close();

其实主要代码就以上两部分,但是我后来我发现当字符串超过1000000后就会出异常,后来我就又写了一个分割字符串的方法:

 1 int strLastLength;  //字符串剩余的长度
2 public List<string> WorkString(string str, int strMaxSize, List<string> list)
3 {
4
5 int i = 0;
6 int count = 0; //循环的次数
7 strLastLength = str.Length; //字符串剩余的长度
8 while (strLastLength > strMaxSize)
9 {
10
11 string temp = str.Substring(i, strMaxSize);
12 list.Add(temp);
13 i = i + strMaxSize;
14 strLastLength = strLastLength - strMaxSize;
15 count++;
16 }
17 if (i == 0)
18 {
19 list.Add(str);
20 return list;
21 }
22 else
23 {
24 string temp = str.Substring(count * strMaxSize, strLastLength);
25 list.Add(temp);
26 return list;
27 }
28
29 }

还有一种方法就是利用vbs脚本,这就个很简单了,几乎就是一句

1 Voice=CreateObject("SAPI.SpVoice")
2 Voice.Speak("需要读的字符串")

这个程序还用了一个backgroundWorker这个控件,可以异步执行,在转成MP3文件时,不会卡死程序。

还有一个想要留给我自己看的就是当使用NotifyIcon这个控件时系统托盘里的图标会延缓消失,在网上看到的方法是这样解决的:

1  protected override void OnClosing(CancelEventArgs e)
2 {
3
4 myNotifyIcon.Visible = false;
5 base.OnClosing(e);
6 }

还在博客园看到了一种把把声音转成文字的方法,但是现在这转换的效果普遍不好,看一下效果就行了,前提是在有网的情况下,并且还得是web-kit内核的浏览器

1 <input type="text" class="text" name="value_2" id="value_2" x-webkit-speech>

只是对这个语音与文字之间的转换挺感兴趣,所以,就根据我写的程序把主要代码拿出来与大家分享一下,也是为以后留给自己看看,只是抛砖引玉罢了,希望大家多提建议多评论。我把我的完整项目上到网上去了,感兴趣的朋友可以去下载,下载地址:http://www.hml330.ys168.com/   刚才看见有朋友说下载不了,是你没习惯这个网盘没找到那就给大家说一下怎么下载吧。打开链接后按图操作

点那里之后选择放弃认证,然后就是

这里了可以下载的。



posted @ 2012-02-10 18:54 itl---小雨 阅读(1190) 评论(2) 编辑

    这几天利用微软的DotNetSpeech.dll做了这个工具,在几年以前我就想有一款软件可以给我读电子书,省得我累眼睛。现在终于有了,自己做的,其实之前我也下过一个工具可以实现读文字,那么我为什么要写这个程序呢?一是因为感兴趣,二是这个比那个多了一个功能就是可以存成MP3格式的文件,可以在手机或者MP3上听,这个还是很方便的。三是用自己写的有那么一点点的成就感,嘿嘿,下面简单介绍一下使用方法:下拉框中的子数是每个MP3文件中包含的字数,进度条是调节速度的,注意:此工具需要在.net Framwork4.0的环境下运行 (因为是vs开发的嘛)执行TTS\TTS\bin\Debug\TTS.exe,基本就是这样了,大家可以给我找bug,还有有过感觉好的要给评论哦,就当是支持一下嘛,下载地址是http://www.hml330.ys168.com/ 对于园子里的人应该有用,因为我们一般我们会看很多资料,看累的时候就可以用它听一会了,希望对大家有用!关于这个程序的代码我会另发一篇博客。

posted @ 2012-02-10 13:25 itl---小雨 阅读(133) 评论(1) 编辑

   想想自学C#已经有一年多了,只和其他队友做过一个网站的后台,真是惭愧!其实也做过几个窗体,只是我自己总是总折腾自己的电脑,重装系统的时候都弄丢了,现在很迷茫,不知道在我的爱好(也就是编程)和学业之间该如何选择,但现在来看,我似乎在爱好和学业之间都没做出成绩啊!唉,不管了反正不能再这样学了,以后对于编程一定要有总结。不能做完之后不了了只,不过还好,还有时间,最近仿着园子里的高手做了做了一个一个音乐播放器,虽然很大一部分都是拿来主义,但是我也学到了一些东西,并且还做了一些改进,这是原来的作者分享的链接:http://www.cnblogs.com/lijiangyanyu/archive/2011/12/08/2280582.html谢谢您的分享,做得真棒非常佩服你,尤其是美化。我认为我的改进只有两点,一是如果播放列表中的歌曲在电脑上不存在时会自动删除列表中的那首歌的信息,二是换了一个进度条的控件,可以实现前后拖拽选择播放时间了,这其中还有些不解,就是按钮属性都一样但是效果却不一样,不知道为什么。到最后我只能把他的控件直接复制过来了。另外在这其中学到了一些操作xml的方法,以后我一定会尽力坚持做笔记的,并且我做的音乐播放器也会和大家分享的,不过要等一段时间。

posted @ 2012-02-06 15:58 itl---小雨 阅读(15) 评论(0) 编辑