.Net Framework 3.0 中增加了一个命名空间:System.Speech 使用这个空间的类和方法,我们可以很方便的2行代码就可以让一段文本被读出来。
演示代码如下:
using System.Speech.Synthesis;
SpeechSynthesizer synth = new SpeechSynthesizer();
synth.Speak("Hello, world!你好么?");
但是需要注意的事情是:
WinXP 系统自带的底层Speech API 版本是:Microsoft Speech API 5.1
Vista 系统自带的底层Speech API 版本是:Microsoft Speech API 5.3
目前还没有看到可以在 WinXP 使用的 Microsoft Speech API 5.3。
而 Microsoft Speech API 5.1 只支持英文文本的读,而Microsoft Speech API 5.3 出了支持英文文本的读外,还支持中文文本的读。
Microsoft Speech API 5.3 并不会因为你装了 .Net FrameWork 3.0 或者 3.5 就会也把 Microsoft Speech API 5.3 装上去。
这样,我们在装了 .Net FrameWork 3.0 的 WinXP 电脑上运行上述两行代码,只要你的声卡设置正常,可以播放声音,你听到的Hello, world!这一句英文,听不到你好么这个中文。
同时上述代码并不会报任何错误以及抛异常。
如果你是在 Vista 电脑上运行上述代码,只要你的声卡设置正常,你则可以正常听到中文和英文。
参考资料:
All the Cool Developers use Speech APIs
MSDN 关于Microsoft Speech API 5.3 的帮助
打印 | 张贴于 2007-05-10 13:10:00 | Tag:.net 编程心得 .net 3.0 Vista 相关
留言反馈
我第一次 按键时 能听到声音,但是第二次按键时,没反应。网页一直在 loading. 是什么原因?
SpeechSynthesizer synth = new SpeechSynthesizer();
synth.SelectVoice("Microsoft Lili"); //可以中英文
synth.SelectVoice("Microsoft Anna"); //只能英文
synth.Speak("Hello, world!你好么?");
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm3.aspx.cs" Inherits="FortuneWeb.temp.WebForm3" Async="true" %>
这时在后台怎么写
异常为
此上下文中不允许异步操作。启动异步操作的页必须将 Async 属性设置为 true,并且异步操作只能在 PreRenderComplete 事件之前的页上启动。
能不能测试下asp.net中的,单个wiinform测试意义不大哦,做一个演示代码for asp.net
{
//SpeechSynthesizer synth = new SpeechSynthesizer();
//synth.Speak("Hello, world!你好么?");
}
如何用女声?
如何用女声?