WinXP系统下边可以运行TTS5.1和语音识别,并且带有多语言。
Vista下边则运行的是TTS5.3和语音识别,据说进步明显,并且在.net framework3.0下边有所支持。
看起来TTS5.3似乎是更好的选择,并且WinXP可能很快就不被支持了,Vista或者Win7将会是以后的主流。
但是(总会有但是),Vista(Home版)所支持的TTS是和安装语言是相关的,他只支持所安装语言的识别和发音将只支持该安装语言。比如,如果安装的是中文版,那么将不能使用英文发音和识别---不像是XP,可以直接安装其他的语言包。除非是,安装vista的其他版本,比如企业版(多花百多美金)。
Vista下的TTS虽然还可以安装其他第三方发音库(比如NeoSpeech),但是语音识别很难安装其他库了。
那么,WinXP下边是不是可以运行TTS5.3呢?非得是Vista才可以用这些功能么?
当然不是,WinXP安装.net framework 3.0之后,也可以运行TTS5.3(其实运行的是5.1,只不过接口是5.3的),这样做的好处是
1:可以使用友好一点的接口
2:多语言支持
缺点是
TTS5.3并没有扩展什么功能,只是提供了接口,5.1不支持的功能,即使安装了.net 3.0也还是不支持。
TTS5.1和TTS5.3的bug
1:TTS5.1的语音识别不能运行在其他thread中,TTS5.3可以。
2:TTS5.3的发音和识别都不能运行在低级别的宿主程序的线程中,因为他的资源不能被释放。
3:TTS5.3的识别功能的SetInputToDefaultAudioDevice不能运行在XP中
TTS5.1中的代码:
_grammar = speechRecEng.CreateGrammar(1);
_grammar.DictationLoad(null, SpeechLib.SpeechLoadOption.SLOStatic);
类似功能在TTS5.3中可以这么实现,
DictationGrammar dg = new DictationGrammar();
speechRecEng.LoadGrammar(dg as Grammar);
不过5.3也提供了更丰富的GrammarBuilder功能,
GrammarBuilder GB = new GrammarBuilder();
GB.Append("测试");
GB.Append(new Choices(new string[] { "一", "二" }));
Grammar G = new Grammar(GB);
