windows - 使用 SAPI 创建个人语音识别系统

标签 windows visual-c++ shared voice-recognition sapi

我正在使用给出的 C++ 代码 here .但是这里使用的共享语音识别运行它自己的命令,例如移动、最小化、删除。我需要在不调用 MS 语音识别程序的情况下创建它。

hr = cpEngine.CoCreateInstance(CLSID_SpSharedRecognizer);

上面这一行创建了共享实例。

我尝试改用 CLSID_SpInprocRecognizer 但无法正确使用。我对此很陌生。 有办法做到这一点吗?

最佳答案

我在这里遇到了同样的问题,并花了很多时间试图找到答案。幸运的是,我按照以下步骤找到了解决方案:

  1. 如果您想摆脱 MS 语音识别程序,请使用进程内识别器

hr = cpRecognizer.CoCreateInstance(CLSID_SpInprocRecognizer);

2.In-process recognizer没有设置默认输入源或识别引擎,你需要设置它们才能让in-process recognizer监听。

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);

3.指定要使用的特定语音识别引擎。如果未指定,它将使用默认值。如果它没有被调用,它仍然使用默认的(我推荐这一行,仍然可以正常工作)。

hr = cpRecognizer->SetRecognizer(NULL);

就是这样!它会打开一个默认的美式英语识别引擎,并很快地接收我的命令。

引用:

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

关于windows - 使用 SAPI 创建个人语音识别系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15064765/

相关文章:

c - 如何检测蓝牙 HID 设备是否断开连接?

windows - 为什么我们需要为连接到总线的单个设备创建两个设备对象(PDO 和 FDO)?

visual-c++ - 除非其中包含 “.h”,否则在VS 2012中不能包含任何文件

linux - Linux 扩展 : upload other projects output 的 Visual C++

excel - Excel VBA中的公共(public)静态变量

c - 共享对象的实际用途

windows - Vala示例编译错误

c++ - 使用模板特化、默认参数和 VS2013 编译错误

Windows Server 上的 Python - 获取用户访问共享文件

windows - Mac 上的 Ionic App Build 无法在 Windows 上构建