随心所欲

做个幸福的人
posts - 157, comments - 1627, trackbacks - 28, articles - 0
  博客园 :: 首页 :: 新随笔 ::  :: 订阅 订阅 :: 管理

公告

TTS 5.1和TTS 5.3

Posted on 2009-03-02 12:59 随心所欲 阅读(3764) 评论(4) 编辑 收藏

 

WinXP系统下边可以运行TTS5.1和语音识别,并且带有多语言。

Vista下边则运行的是TTS5.3和语音识别,据说进步明显,并且在.net framework3.0下边有所支持。

看起来TTS5.3似乎是更好的选择,并且WinXP可能很快就不被支持了,Vista或者Win7将会是以后的主流。

 

但是(总会有但是),VistaHome版)所支持的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.1TTS5.3bug

1TTS5.1的语音识别不能运行在其他thread中,TTS5.3可以。

2TTS5.3的发音和识别都不能运行在低级别的宿主程序的线程中,因为他的资源不能被释放。

3TTS5.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);

 

Google