我正在将Visual Studio Express 2013用于桌面,并面临女性语音中文本到语音转换的问题。为此,我使用了ISpObjectTokenCategory :: EnumTokens。
我使用hr = pObjectTokenCategory-> SetId(SPCAT_VOICES,false)来执行此操作。但hr失败,值为0x8004503a。 如果我使用其他令牌类别ID,例如SPCAT_RECOGNIZERS,则hr为S_OK。它仅对SPCAT_VOICES类别失败。
以下是我的C ++代码 -
hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_INPROC_SERVER, __uuidof(ISpVoice), (void**)&pSpVoice);
if (FAILED(hr))
{
cout << "Failed to get pSpVoice interface by CoCreateInstance" << endl;
return hr;
}
hr = CoCreateInstance(CLSID_SpObjectTokenCategory, NULL, CLSCTX_INPROC_SERVER, __uuidof(ISpObjectTokenCategory), (void**)&pObjectTokenCategory);
if (FAILED(hr))
{
cout << "Failed to get ObjectTokenCategory by cocreateInstance" << endl;
return hr;
}
hr = pObjectTokenCategory->SetId(SPCAT_VOICES, false);
if (FAILED(hr))
{
cout << "Failed to set Voice Category" << endl;
return hr;
}
hr = pObjectTokenCategory->EnumTokens(L"Language=409,Gender=Female;", NULL, &pSpEnumTokens);
if (FAILED(hr))
{
cout << "Failed to get EnumTokens" << endl;
return hr;
}
如何解决SP_VOICES类别?
答案 0 :(得分:0)
0x8004503a
是SPERR_NOT_FOUND
(您可以在sperror.h中找到SAPI错误定义)。
这表示找不到SPCAT_VOICES
注册表项;你确定你安装了TTS声音(任何类型)吗?