展会信息港展会大全

关于语音识别的问题
来源:互联网   发布日期:2011-09-29 16:09:52   浏览:17885次  

导读:m_bGotReco FALSE m_bInSound FALSE HRESULT hr S_OK hr cpRecoEngine CoCreateInstance CLSID_SpInprocRecognizer 创建识别引擎COM实例 if SUCCEEDED hr hr cpR...

m_bGotReco=FALSE; 
  m_bInSound=FALSE; 
  HRESULT hr = S_OK;  
  hr = cpRecoEngine.CoCreateInstance(CLSID_SpInprocRecognizer); 
//创建识别引擎COM实例  
  if( SUCCEEDED( hr ) ) 
  { 
  hr = cpRecoEngine->CreateRecoContext( &m_cpRecoCtxt );  
//创建识别上下文对象 
  } 
  else 
  MessageBox("error1"); 
  // Set recognition notification for dictation 
  if (SUCCEEDED(hr)) 
  { 
  hr = m_cpRecoCtxt->SetNotifyWindowMessage( m_hWnd, WM_RECOEVENT, 0, 0 );//设置消息机制 
  } 
  else 
  MessageBox("error2"); 
  if (SUCCEEDED(hr)) 
  { 
  const ULONGLONG ullInterest = SPFEI(SPEI_RECOGNITION); //我们关心的事件 
  hr = m_cpRecoCtxt->SetInterest(ullInterest, ullInterest); 
  } 
  else 
  MessageBox("error3"); 
  // create default audio object 
  CComPtr <ISpAudio> cpAudio; 
  hr = SpCreateDefaultObjectFromCategoryId(SPCAT_AUDIOIN, &cpAudio);//建立默认的音频输入对象 
  //设置识别引擎输入源 
  hr = cpRecoEngine->SetInput(cpAudio, TRUE); 
  b_initSR = TRUE; 
  //创建听写模式的语法对象 
  hr = m_cpRecoCtxt->CreateGrammar( GID_DICTATION, &m_cpDictationGrammar ); 
  if (SUCCEEDED(hr)) 
  { 
  //加载词典 
  hr = m_cpDictationGrammar->LoadDictation(NULL, SPLO_STATIC); 
  } 
  else 
  MessageBox("error4"); 
  if (FAILED(hr)) 
  { 
  m_cpDictationGrammar.Release(); 
  MessageBox("start SR error"); 
  } 
  //创建命令模式的语法对象 
  hr = m_cpRecoCtxt->CreateGrammar( GID_CMD_GR, &m_cpCmdGrammar); 
  if( FAILED(hr) ) 
  { 
  MessageBox("Error CreateGrammar","Error",MB_OK);  
  }  
//***************************** 
  WCHAR wszXMLFile[20]=L""; 
  //ANSI转UNINCODE 
  MultiByteToWideChar(CP_ACP, 0, (LPCSTR)"Cmd.xml" , -1, wszXMLFile, 256); 
  //从文件中读取语法词典 
  hr = m_cpCmdGrammar->LoadCmdFromFile(wszXMLFile,SPLO_DYNAMIC); 
  if (FAILED(hr)) 
  { 
  MessageBox("Error LoadCmdFromFile","Error",MB_OK); 
  } 
//******************************* 
以上是我在网上看到得一段代码,可我编的时候总是出现Error LoadCmdFromFile;郁闷的不行,还望指点指点
我的语法文件为 
<GRAMMAR LANGID="804">  
  <DEFINE>  
  <ID NAME="CMD" VAL="10"/>  
  </DEFINE>  
  <RULE NAME="COMMAND" ID="CMD" TOPLEVEL="ACTIVE">  
  <L> 
  <p>你 </p> 
  <p>我 </p> 
  <P>关闭程序 </P>  
  </L>  
  </RULE>  
  </GRAMMAR> 
文件放在与程序的其他文件放在一起,不知道有没错?

赞助本站

人工智能实验室
AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港