本文整理汇总了C++中ISpVoice::SetOutput方法的典型用法代码示例。如果您正苦于以下问题:C++ ISpVoice::SetOutput方法的具体用法?C++ ISpVoice::SetOutput怎么用?C++ ISpVoice::SetOutput使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ISpVoice
的用法示例。
在下文中一共展示了ISpVoice::SetOutput方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: speechOutput
void Speech::speechOutput(const char* str) {
ISpVoice* pVoice = NULL;
ISpObjectToken* cpAudioOutToken;
IEnumSpObjectTokens* cpEnum;
ULONG ulCount = 0;
if (FAILED(::CoInitialize(NULL)))
return;
HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice);
if (SUCCEEDED (hr)) {
hr = SpEnumTokens( SPCAT_AUDIOOUT, NULL, NULL, &cpEnum);
}
if (SUCCEEDED (hr)) {
hr = cpEnum->GetCount( &ulCount);
}
while (SUCCEEDED(hr) && ulCount--) {
hr = cpEnum->Next( 1, &cpAudioOutToken, NULL );
wchar_t* deviceId = nullptr;
if(SUCCEEDED(hr)) {
hr = cpAudioOutToken->GetStringValue(L"DeviceId", &deviceId);
if(wcscmp(outputDevice, deviceId) == 0) break;
}
}
if (SUCCEEDED (hr)) {
hr = pVoice->SetOutput( cpAudioOutToken, TRUE );
}
if(SUCCEEDED(hr)) {
const size_t cSize = strlen(str)+1;
wchar_t* wc = new wchar_t[cSize];
size_t ret;
mbstowcs_s (&ret, wc, cSize, str, cSize);
hr = pVoice->Speak(wc, NULL, NULL);
pVoice->Release();
pVoice = NULL;
}
cpEnum->Release();
cpAudioOutToken->Release();
::CoUninitialize();
}