测试 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 上的另一个问题。
我正在尝试测试以下示例: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 上的另一个问题。