收藏 分享(赏)

微软Speech SDK 5.1开发语音识别系统主要步骤.doc

上传人:hwpkd79526 文档编号:4684510 上传时间:2019-01-07 格式:DOC 页数:4 大小:36.50KB
下载 相关 举报
微软Speech SDK 5.1开发语音识别系统主要步骤.doc_第1页
第1页 / 共4页
微软Speech SDK 5.1开发语音识别系统主要步骤.doc_第2页
第2页 / 共4页
微软Speech SDK 5.1开发语音识别系统主要步骤.doc_第3页
第3页 / 共4页
微软Speech SDK 5.1开发语音识别系统主要步骤.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、利用微软 Speech SDK 5.1 开发语音识别系统主要步骤 微软语音识别分两种模式:文本识别模式和命令识别模式 .此两种模式的主要区别,主要在于识别过程中使用的匹配字典不同.前者使用的是通用字典,特点是内容多,覆盖的词汇量大,字典由 sdk 提供.适用于没有预定目标的随机听写之类的应用 .同时因为词汇量大直接导致识别的精度降低,识别速度较慢 .后者的字典需要 开发者自己编写,就是你们所说的 xml 文件.xml 文件作为一种数据存储的方式,有一定的格式, 定义了 sdk 需要确定的一些标签, 和用以匹配的词汇.这种方式由开发者定义词汇的数量 ,大大降低匹配过程中需要检索的词汇量 ,提高了

2、识别速度.同时因为侯选项极少 ,所以一般不会识别错误 .其缺点也是明显的:词汇量小,只有预先输入字典的词汇可以被识别出来,所以一般用来作为常用命令的识别, 方便用户操作,代替菜单命令等. 利用微软 Speech SDK 5.1 在 MFC 中进行语音识别开发时的主要步骤,以 Speech API 5.1+VC6 为例: 注意:要在工程设置(project settings)添加 sapi.lib 文件和一些头文件。1、初始化 COM 端口 一般在 CWinApp 的子类中,调用 CoInitializeEx 函数进行 COM 初始化,代码如下: :CoInitializeEx(NULL,COI

3、NIT_APARTMENTTHREADED); / 初始化 COM 2、创建识别引擎 微软 Speech SDK 5.1 支持两种模式的:共享(Share)和独享(InProc )。一般情况下可以使用共享型,大的服务型程序使用 InProc。如下: hr = m_cpRecognizer.CoCreateInstance(CLSID_SpSharedRecognizer);/Share hr = m_cpRecognizer.CoCreateInstance(CLSID_SpInprocRecognizer);/InProc 如果是 Share 型,可直接进到步骤 3;如果是 InProc 型

4、,必须使用 ISpRecognizer:SetInput 设置语音输入。如下: CComPtr cpAudioToken; /定义一个 token hr = SpGetDefaultTokenFromCategoryId(SPCAT_AUDIOIN, /建立默认的音频输入对象 if (SUCCEEDED(hr) hr = m_cpRecognizer-SetInput(cpAudioToken, TRUE); 或者: CComPtr cpAudio; /定义一个音频对象 hr = SpCreateDefaultObjectFromCategoryId(SPCAT_AUDIOIN, /建立默认的

5、音频输入对象 hr = m_cpRecoEngine-SetInput(cpAudio, TRUE);/设置识别引擎输入源 3、创建识别上下文接口 调用 ISpRecognizer:CreateRecoContext 创建识别上下文接口( ISpRecoContext),如下: hr = m_cpRecoEngine-CreateRecoContext( 4、设置识别消息 调用 SetNotifyWindowMessage 告诉 Windows 哪个是我们的识别消息,需要进行处理。如下: hr = m_cpRecoCtxt-SetNotifyWindowMessage(m_hWnd, WM_R

6、ECOEVENT, 0, 0); SetNotifyWindowMessage 定义在 ISpNotifySource 中。 5、设置我们感兴趣的事件 其中最重要的事件是”SPEI_RECOGNITION“。参照 SPEVENTENUM。代码如下: const ULONGLONG ullInterest = SPFEI(SPEI_SOUND_START) | SPFEI(SPEI_SOUND_END) | SPFEI(SPEI_RECOGNITION) ; hr = m_cpRecoCtxt-SetInterest(ullInterest, ullInterest); 6、创建语法规则 语法规

7、则是识别的灵魂,必须要设置。分为两种,一种是听说式(dictation),一种是命令式(command and control-C if (SUCCEEDED(hr) hr = m_cpDictationGrammar-LoadDictation(NULL, SPLO_STATIC);/加载词典 /C 然后利用 ISpRecoGrammar:LoadCmdxxx 加载语法,例如从 CmdCtrl.xml 中加载: WCHAR wszXMLFile20=L“; MultiByteToWideChar(CP_ACP, 0, (LPCSTR)“CmdCtrl.xml“ , -1, wszXMLFil

8、e, 256);/ANSI 转 UNINCODE hr = m_cpCmdGrammar-LoadCmdFromFile(wszXMLFile,SPLO_DYNAMIC); 注意:C/dictation hr = m_cpCmdGrammar-SetRuleState( NULL,NULL,SPRS_ACTIVE );/C CSpEvent event; switch (event.eEventId) case SPEI_RECOGNITION: /识别出了语音输入 m_bGotReco = TRUE; static const WCHAR wszUnrecognized = L“; CSpDynamicString dstrText; /取得识别结果 if (FAILED(event.RecoResult()-GetText(SP_GETWHOLEPHRASE, SP_GETWHOLEPHRASE, TRUE , BSTR SRout; dstrText.CopyToBSTR( CString Recstring; Recstring.Empty(); Recstring = SRout; /进一步处理 break; 9、释放创建的引擎、识别上下文对象、语法等。调用相应的 Release 函数即可。 至此最简单的识别就完成了。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教育教学 > 微软认证

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报