Alp*_*olf 1 windows shared sapi visual-c++ voice-recognition
我正在使用此处给出的 C++ 代码。但这里使用的共享语音识别运行它自己的命令,例如移动、最小化、删除。我需要在不调用 MS 语音识别程序的情况下创建它。
hr = cpEngine.CoCreateInstance(CLSID_SpSharedRecognizer);
Run Code Online (Sandbox Code Playgroud)
上面的这一行创建共享实例。
我尝试使用CLSID_SpInprocRecognizer代替,但无法正确执行。我对此很陌生。有没有办法做到这一点?
我在这里遇到了同样的问题,并花了很多时间试图找到答案。幸运的是,我按照以下步骤找到了解决方案:
hr = cpRecognizer.CoCreateInstance(CLSID_SpInprocRecognizer);
2.进程内识别器没有设置默认的输入源或识别引擎,您需要对其进行设置才能让进程内识别器进行监听。
CComPtr<ISpObjectToken> cpObjectToken;
CComPtr<ISpAudio> cpAudio;
// Get the default audio input token.
hr = SpGetDefaultTokenFromCategoryId(SPCAT_AUDIOIN, &cpObjectToken);
// Set the audio input to our token.
hr = cpRecognizer->SetInput(cpObjectToken, TRUE);
// Set up the inproc recognizer audio input with an audio input object.
// Create the default audio input object.
hr = SpCreateDefaultObjectFromCategoryId(SPCAT_AUDIOIN, &cpAudio);
// Set the audio input to our object.
hr = cpRecognizer->SetInput(cpAudio, TRUE);
Run Code Online (Sandbox Code Playgroud)
3.指定要使用的特定语音识别引擎。如果不指定,则使用默认值。如果没有调用它,它仍然使用默认的(我推荐这一行,仍然工作正常)。
hr = cpRecognizer->SetRecognizer(NULL);
Run Code Online (Sandbox Code Playgroud)
就是这样!它会打开默认的美国英语识别引擎,并很快地接受我的命令。
参考:
http://stackoverflow.com/questions/18448394/inproc-speech-recognition-engine-in-python
http://msdn.microsoft.com/en-us/library/ms718864%28v=vs.85%29.aspx
http://msdn.microsoft.com/en-us/library/ms718866%28v=vs.85%29.aspx
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
904 次 |
| 最近记录: |