当我使用共享识别器来处理先前注册的医学听写主题时,听写语法加载时没有错误,但是当我将识别器更改为Inproc识别器时,它无法加载听写主题。有没有办法在仍然使用proc识别器时加载听写主题?
我的加载语法代码如
CComPtr<ISpObjectToken> cpObjectToken;
CComPtr<ISpAudio> cpAudio;
CComPtr<ISpRecognizer> cpEngine;
CComPtr<ISpRecoContext> cpRecoCtx;
CComPtr<ISpRecoGrammar> cpGram;
hr = cpEngine.CoCreateInstance(CLSID_SpInprocRecognizer);
hr = SpGetDefaultTokenFromCategoryId(SPCAT_AUDIOIN, &cpObjectToken);
hr = cpEngine->SetInput(cpObjectToken, TRUE);
hr = SpCreateDefaultObjectFromCategoryId(SPCAT_AUDIOIN, &cpAudio);
hr = cpEngine->SetInput(cpAudio, TRUE);
hr = cpEngine->CreateRecoContext(&cpRecoCtx);
hr = cpEngine->SetRecognizer(NULL);
hr = cpRecoCtx->CreateGrammar(1, &cpGram);
hr = cpGram->LoadDictation(L"Medical", SPLO_STATIC);
答案 0 :(得分:1)
Inproc识别器没有默认的SR引擎,所以调用
hr = cpEngine->SetRecognizer(NULL);
实际上没有加载引擎。我写了一个简单的函数来加载默认的识别器;代码很长,所以我不会把它内联,但你可以找到here。
此外,在您的other question,中,您的主题名为&#34; Medical&#34;,此处您将其命名为&#34; Medicine&#34 ;;他们确实需要是一样的。