微软语音辨认SDK总结:
CComPtr<ISpRecognizer> m_pSREngine;// 语音辨认引擎(recognition)的接口。
CComPtr<ISpRecoContext> m_pSRContext;// 辨认引擎上下文(context)的接口。
CComPtr<ISpRecoGrammar> m_pSRGrammar;// 辨认文法(grammar)的接口。
CComPtr<ISpStream> m_pInputStream;// 流()的接口。
CComPtr<ISpObjectToken> m_pToken;// 语音特征的(token)接口。
CComPtr<ISpAudio> m_pAudio;// 音频(Audio)的接口。(用来保存原来默许的输入流)
ULONGLONG ullGrammerID ;
CoInitialize(NULL);
m_pSREngine.CoCreateInstance ( CLSID_SpInprocRecognizer );
m_pSREngine->CreateRecoContext ( &m_pSRContext );//建立上下文
//这里是设置事情
HWND hwnd = GetSafeHwnd();
hr = m_pSRContext->SetNotifyWindowMessage(hwnd,WM_RECORD,0,0);
hr=m_pSRContext->SetInterest(SPFEI(SPEI_RECOGNITION),SPFEI(SPEI_RECOGNITION));
//这里是设置默许的音频输入
hr = SpCreateDefaultObjectFromCategoryId(SPCAT_AUDIOIN, &m_pAudio);
m_pSREngine->SetInput(m_pAudio,true);
//这里是加载默许的语法规则
ullGrammerID = 1000;
hr=m_pSRContext->CreateGrammar(ullGrammerID,&m_pSRGrammar);
WCHAR wszXMLFile[20]=L"";
MultiByteToWideChar(CP_ACP, 0,(LPCSTR)"cmd.xml" , -1, wszXMLFile, 256); //这里修正XML的目录
hr=m_pSRGrammar->LoadCmdFromFile(wszXMLFile,SPLO_DYNAMIC);
//开启语音辨认
m_pSRGrammar->SetRuleState( NULL,NULL,SPRS_ACTIVE );
hr=m_pSREngine->SetRecoState(SPRST_ACTIVE);
|