测试 Windows 语音识别时出错 API (SAPI)

Error when testing Windows Speech Recognition API (SAPI)

我正在尝试测试以下示例:Test of Speech Recognition using Windows SAPI

代码编译良好但在执行时崩溃。

返回的指向 ISpRecognizer 对象的指针采用 NULL 值,如以下代码所示:

// This function exits when the word passed as parameter is said by the user
int start_listening(const std::string& word)
{
.....

HRESULT hr;

ISpRecognizer* recognizer;
hr = CoCreateInstance(CLSID_SpSharedRecognizer,
    nullptr, CLSCTX_ALL, IID_ISpRecognizer,
    reinterpret_cast<void**>(&recognizer)); <<<<<ERROR: recognizer =NULL


<<< hr = REGDB_E_CLASSNOTREG<< MEAN "class not registered"

check_result(hr); 

ISpRecoContext* recoContext;
hr = recognizer->CreateRecoContext(&recoContext);<<<<CRASH: TRY TO ACCESS TO 
                                                 <<<<  A NULL  POINTER
...
...
...

我在 windows 8.1 上使用 visual studio 2015,目标是 x64 平台。

您知道为什么指向 ISPRecognizer 的指针为 NULL 以及为什么我得到 HRESULT=REGDB_E_CLASSNOTREG 吗?

我认为您没有事先调用 ::CoInitialize(),也没有正确初始化您的 ISpReognizer。我有一个完整的示例来回答 here 上的另一个问题。