语法文件:CmdCtrl.xml
<GRAMMAR LANGID="804">
<DEFINE>
<ID NAME="CMD" VAL="10"/>
</DEFINE>
<RULE NAME="COMMAND" ID="CMD" TOPLEVEL="ACTIVE">
<L>
<P>关闭程序</P>
</L>
</RULE>
</GRAMMAR>
成员函数:
HRESULT CSREngine::LoadCmdGrammarFromFile(CString XMLFileName)
{
HRESULT hr = S_OK ;
if (!m_cpCmdGrammar)
{
hr = m_cpRecoCtxt->CreateGrammar(GID_SRCMD_CN, &m_cpCmdGrammar);
if( FAILED(hr) )
{
MessageBox(NULL,"Error CreateGrammar","Error",MB_OK);
return hr;
}
WCHAR wszXMLFile[20]=L"";
MultiByteToWideChar(CP_ACP, 0, (LPCSTR) XMLFileName , -1, wszXMLFile, 256);
hr = m_cpCmdGrammar->LoadCmdFromFile(wszXMLFile,SPLO_DYNAMIC);
if (FAILED(hr))
{
MessageBox(NULL,"Error LoadCmdFromFile","Error",MB_OK);
return hr;
}
}
return hr;}
****************************************************************************
调用:
hr=m_SREngine.LoadCmdGrammarFromFile("CmdCtrl.xml");
为何会出现下面的错误:
"Error LoadCmdFromFile"我用的是Microsoft Speech SDK5.1!
如果将LANGID改为409,没有错误,可以识别英文.但不知为什么不能识别中文?
<GRAMMAR LANGID="804">
<DEFINE>
<ID NAME="CMD" VAL="10"/>
</DEFINE>
<RULE NAME="COMMAND" ID="CMD" TOPLEVEL="ACTIVE">
<L>
<P>关闭程序</P>
</L>
</RULE>
</GRAMMAR>
成员函数:
HRESULT CSREngine::LoadCmdGrammarFromFile(CString XMLFileName)
{
HRESULT hr = S_OK ;
if (!m_cpCmdGrammar)
{
hr = m_cpRecoCtxt->CreateGrammar(GID_SRCMD_CN, &m_cpCmdGrammar);
if( FAILED(hr) )
{
MessageBox(NULL,"Error CreateGrammar","Error",MB_OK);
return hr;
}
WCHAR wszXMLFile[20]=L"";
MultiByteToWideChar(CP_ACP, 0, (LPCSTR) XMLFileName , -1, wszXMLFile, 256);
hr = m_cpCmdGrammar->LoadCmdFromFile(wszXMLFile,SPLO_DYNAMIC);
if (FAILED(hr))
{
MessageBox(NULL,"Error LoadCmdFromFile","Error",MB_OK);
return hr;
}
}
return hr;}
****************************************************************************
调用:
hr=m_SREngine.LoadCmdGrammarFromFile("CmdCtrl.xml");
为何会出现下面的错误:
"Error LoadCmdFromFile"我用的是Microsoft Speech SDK5.1!
如果将LANGID改为409,没有错误,可以识别英文.但不知为什么不能识别中文?
CComPtr<ISpObjectToken> m_pToken;
hr = SpFindBestToken ( SPCAT_RECOGNIZERS, L"language=804", NULL, &m_pToken );
hr = m_pSREngine->SetRecognizer ( m_pToken ); //设置设别语言
这样就设置成了中文模式了。你也可以在控制面板里把识别的语言直接设成中文。