关于文字与声音之间转换的事

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

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

这里了可以下载的。



转载于:https://www.cnblogs.com/im0330/archive/2012/02/10/2345970.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值