Microsoft Speech SDK孤立词语音识别.doc_第1页
Microsoft Speech SDK孤立词语音识别.doc_第2页
Microsoft Speech SDK孤立词语音识别.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于Microsoft Speech SDK实现用户孤立词识别的过程如下:1、初始化COM端口:在CWinApp的子类中,调用CoInitializeEx函数进行COM初始化::CoInitializeEx(NULL,COINIT_APARTMENTTHREADED);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型,必须使用 ISpRecognizer:SetInput 设置输入:CComPtr cpAudioToken; hr = SpGetDefaultTokenFromCategoryId(SPCAT_AUDIOIN, &cpAudioToken); if (SUCCEEDED(hr) hr = m_cpRecognizer-SetInput(cpAudioToken, TRUE); 或者:CComPtr cpAudio; hr = SpCreateDefaultObjectFromCategoryId(SPCAT_AUDIOIN, &cpAudio);hr = m_cpRecoEngine-SetInput(cpAudio, TRUE);3、创建识别上下文接口:调用 ISpRecognizer:CreateRecoContext 创建识别上下文接口:hr = m_cpRecoEngine-CreateRecoContext( &m_cpRecoCtxt ); 4、设置识别消息:调用 SetNotifyWindowMessage 告诉Windows哪个是我们的识别消息,需要进行处理: hr = m_cpRecoCtxt-SetNotifyWindowMessage(m_hWnd, WM_RECOEVENT, 0, 0); 5、设置事件:最重要的事件是“SPEI_RECOGNITION”:const ULONGLONG ullInterest = SPFEI(SPEI_SOUND_START) | SPFEI(SPEI_SOUND_END) | SPFEI(SPEI_RECOGNITION) ; hr = m_cpRecoCtxt-SetInterest(ullInterest, ullInterest); 6、创建语法规则:语法规则分为两种,一种是听说式(dictation),一种是命令式(command and control-C&C)。首先 利用ISpRecoContext:CreateGrammar 创建语法对象,然后加载不同的语法规则: /dictation hr = m_cpRecoCtxt-CreateGrammar( GIDDICTATION, &m_cpDictationGrammar ); if (SUCCEEDED(hr) hr = m_cpDictationGrammar-LoadDictation(NULL, SPLO_STATIC); /C&C hr = m_cpRecoCtxt-CreateGrammar( GIDCMDCTRL, &m_cpCmdGrammar); 然后用ISpRecoGrammar:LoadCmdxxx 加载语法: WCHAR wszXMLFile20=L; MultiByteToWideChar(CP_ACP, 0, (LPCSTR)CmdCtrl.xml , -1, wszXMLFile, 256); hr = m_cpCmdGrammar-LoadCmdFromFile(wszXMLFile,SPLO_DYNAMIC); 7、激活语法进行识别:hr = m_cpDictationGrammar-SetDictationState( SPRS_ACTIVE );/dictation hr = m_cpCmdGrammar-SetRuleState( NULL,NULL,SPRS_ACTIVE );/C&C 8、获取识别消息,进行处理:截获识别消息(WM_RECOEVENT),然后处理。识别的结果放在CSpEvent的ISpRecoResult 中: USES_CONVERSION; 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 ,&dstrText, NULL) dstrText = wszUnrecognized; BSTR SRout; dstrText.CopyToBSTR(&SRout); CString Recstring; Recstring.Empty();

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论