关于最近写的这个程序,写一个随笔吧,留下足迹,以供以后参考看看;这个程序主要就是实现了文字转换成声音,也可以装换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/ 刚才看见有朋友说下载不了,是你没习惯这个网盘没找到那就给大家说一下怎么下载吧。打开链接后按图操作
点那里之后选择放弃认证,然后就是
这里了可以下载的。