语音编程之Speech SDK概述(4)

来源:互联网 发布:突厥 唐太宗 知乎 编辑:程序博客网 时间:2024/05/29 14:36
2.语音识别API

正如IspVoice是主要的语音合成接口一样,IspRecoContext是语音识别的主要接口。与IspVoice一样,它也是一种ISpEventSource接口,提供了为请求的语音识别事件接收通知消息的基本载体。

有两种不同的语音识别引擎(ISpRecognizer),即共享语音识别引擎(shared speech recognition engine)和进程内语音识别引擎(InProc speech recognition engine)。应用程序可以选择其中的一种。

一般推荐使用共享语音识别引擎,这种引擎能被多个应用程序共享。创建共享IspRecognizerIspRecoContext接口很简单,应用程序只需指定参数为组件的CLSID_SpSharedRecoContext并调用COMCoCreateInstance函数即可。这时,SAPI将设置音频输入流为SAPI的默认音频输入流。

对于单独运行于一个系统中的大型服务器应用程序,其运行效率是很重要的。这时使用进程内语音识别引擎更合适。使用进程内语音识别引擎有3个步骤:首先,应用程序需指定参数为组件的CLSID_ SpInprocRecoInstance并调用COMCoCreateInstance函数来创建其自己的进程内语音识别IspRecognizer;其次,应用程序需调用ISpRecognizer::SetInput方法(参见IspObjectToken接口的说明)来设置音频输入流;最后,应用程序可调用ISpRecognizer::CreateRecoContext来获取IspRecoContext接口。

下一步需要为应用程序感兴趣的事件设置通知消息。IspRecognizer也是一种IspEventSource接口,自然是一种IspNotifySource接口,因此,应用程序能够从其IspRecoContext接口中调用IspNotifySource的方法来指定IspRecoContext所需的消息应通知到何处。调用ISpEventSource::SetInterest方法可以设定什么样的事件需要被通知。最重要的事件是SPEI_RECOGNITION,它标识了IspRecognizer已从IspRecoContext中识别了一些语音。Speech SDK文档中SPEVENTENUM的说明提供了其他语音识别事件的详细说明。

最后需要说明的是,应用程序必须创建、装载并激活一个IspRecoGrammar接口。该接口从本质上说明了什么语音类型,即口述或命令和控制语法。应用程序首先应调用ISpRecoContext::CreateGrammar方法创建一个IspRecoGrammar接口。然后装载合适的语法,调用ISpRecoGrammar::LoadDictation方法可装载口述语法,调用ISpRecoGrammar::LoadCmdxxx方法可装载命令和控制语法。最后,为了激活语法并启动识别,应用程序应该调用ISpRecoGrammar::SetDictationState方法设置口述状态,或者调用ISpRecoGrammar::SetRuleState方法或 ISpRecoGrammar::SetRuleIdState方法设置命令和控制状态。

当应用程序通过请求的通知机制得到通知消息时,SPEVENT结构的lParam成员包含了一个IspRecoResult接口,应用程序能从中确定用IspRecoContext中的哪个IspRecoGrammar接口已识别了什么语音。

无论共享的还是进程内的IspRecognizer接口都能拥有多个与其关联的IspRecoContexts接口,并且每一个接口都能通过自己的事件通知方式得到相应的消息。可以从一个IspRecoContext接口中创建多个IspRecoGrammars接口,不同的接口可用于识别不同的语音类型。

11.1.3  安装Speech SDK

进行Text-To-Speech编程之前,必须先下载Miscrosoft Speech SDK,并将它安装到你的系统中。

Miscrosoft Speech SDK的下载网址是http://www.microsoft.com/speech。至笔者编写本章时为止,最新的Speech SDK版本是5.1版。下载的speechsdk51.exe是一个可执行的文件包压缩文件。运行它,将安装文件释放到一个临时目录中,执行其中的Microsoft Speech SDK 5.1.msi,将Speech SDK安装到相应的目录中。一般选用默认的安装目录(C:/Program Files/Microsoft Speech SDK 5.1)。

Speech SDK支持的默认语言是英语,即安装Speech SDK后,系统还只能支持英语的语音。要使系统支持中文和日文语音,还需要下载安装相应的语言包。从相同的网址中下载语言包speechsdk51LangPack.exe。运行它,将安装文件释放到一个临时目录中,执行其中的Microsoft Speech SDK 5.1 Language Pack.msi,将中、日文支持安装到系统中。

安装好Speech SDK后,语音控制程序将被添加到系统的控制面板中。利用该控制程序可以设置语音识别和文字-语音转换的各项属性,包括语言/语音、语速和输入设备等,如图11-2所示。

 

原创粉丝点击