本文整理汇总了C++中ISpVoice类的典型用法代码示例。如果您正苦于以下问题:C++ ISpVoice类的具体用法?C++ ISpVoice怎么用?C++ ISpVoice使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了ISpVoice类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CoCreateInstance
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();
}
示例2: CoInitialize
//------------------------------------------------------------------------------
bool SpeechApi51::isAvailable()
{
CoInitialize(NULL);
ISpVoice *sapi;
bool ret = true;
if (FAILED(CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, reinterpret_cast<void **>(&sapi))))
{
ret = false;
}
else
{
sapi->Release();
}
return ret;
}
示例3: main
int main(int argc, char* argv[])
{
ISpVoice * pVoice = NULL;
if (FAILED(::CoInitialize(NULL)))
return FALSE;
HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice);
if (SUCCEEDED(hr))
{
hr = pVoice->Speak(L"Здравствуйте", 0, NULL);
// Change pitch
hr = pVoice->Speak(L"Вы меня <pitch middle = '-10'/> слышите?", SPF_IS_XML, NULL);
pVoice->Release();
pVoice = NULL;
}
::CoUninitialize();
return TRUE;
}
示例4: wstr
bool TextToSpeech::say(string wordToSay)
{
//convert string to wstring to use with speech function
wstring wstr(wordToSay.begin(), wordToSay.end());
ISpVoice * pVoice = NULL;
if (FAILED(::CoInitialize(NULL)))
return FALSE;
HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice);
if (SUCCEEDED(hr))
{
long rate = -5;
pVoice->SetRate(rate);
hr = pVoice->Speak(wstr.c_str(), 0, NULL);
pVoice->Release();
pVoice = NULL;
}
::CoUninitialize();
return TRUE;
}
示例5: main
int main(int argc, char* argv[])
{
ISpVoice * pVoice = NULL;
if (FAILED(::CoInitialize(NULL)))
return FALSE;
HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice);
if (SUCCEEDED(hr))
{
//hr = pVoice->Speak(L"Hello Brad <pitch middle = '-10'/> gwaps", SPF_IS_XML, NULL);
hr = pVoice->Speak(L"Myca needs vog", 0, NULL);
//hr = pVoice->Speak(L"cliff golem tashed", 0, NULL);
//hr = pVoice->Speak(L"Invis failing, invis failing", 0, NULL);
//hr = pVoice->Speak(L"charm break, <pitch middle = '-10'/> beat down imminent", SPF_IS_XML, NULL);
hr = pVoice->Speak(L"pet is loose, <pitch middle = '+10'/> pet is loose", 8, NULL);
pVoice->Release();
pVoice = NULL;
}
::CoUninitialize();
return TRUE;
}
示例6: Speak
/**********************************************************************
* CTextRun::Speak *
*-----------------*
* Description:
* Speaks the text associated with this CTextRun using TTS.
*
* Return:
* S_OK
* Return value of ITextRange::GetText()
* Return value of ISpVoice::Speak()
**********************************************************************/
HRESULT CTextRun::Speak( ISpVoice &rVoice )
{
_ASSERTE( m_cpTextRange );
if ( !m_cpTextRange )
{
return E_UNEXPECTED;
}
// Get the text and speak it.
BSTR bstrText;
HRESULT hr = m_cpTextRange->GetText( &bstrText );
if( SUCCEEDED( hr ) )
{
hr = rVoice.Speak( bstrText, SPF_ASYNC, NULL );
::SysFreeString( bstrText );
}
return hr;
} /* CTextRun::Speak */
示例7: main
int main(int argc, char **argv)
{
ISpVoice *pVoice = NULL;
WCHAR line_buffer[LINE_LENGTH];
bool exitflag = FALSE;
int counter = 0;
if (FAILED(::CoInitialize(NULL)))
{
printf("ERROR: Couldn't initialise COM.\n");
return FALSE;
}
HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice);
if( SUCCEEDED( hr ) )
{
// For some reason, if you don't do this, speech cuts out
// (only on first announcement)...
pVoice->Speak(L" ", SPF_IS_NOT_XML, NULL);
// Main loop...
while( ! exitflag )
{
for(counter = 0; counter < LINE_LENGTH; counter++ )
{
// Fill up the buffer...
line_buffer[counter] = getwchar();
// Check for exit condition...
if( line_buffer[counter] == WEOF )
{
line_buffer[counter] = 0;
exitflag = TRUE;
break;
}
// Break at end of line...
if( line_buffer[counter] == L'\n' )
{
line_buffer[counter] = 0;
break;
}
}
counter = 0;
// Should the synth's UI be displayed?
if ( line_buffer == L"DisplayUI" )
{
int supported = 0;
hr = pVoice->IsUISupported(SPDUI_EngineProperties, NULL, NULL, &supported);
if( SUCCEEDED( hr ) && supported )
{
hr = pVoice->DisplayUI(NULL, NULL, SPDUI_EngineProperties, NULL, NULL);
if( ! SUCCEEDED( hr ) )
{
pVoice->Speak(L"There was an error displaying the properties window.\n", SPF_IS_NOT_XML|SPF_ASYNC|SPF_PURGEBEFORESPEAK, NULL);
}
}
else
{
pVoice->Speak(L"Your current voice doesn't support a properties window.\n", SPF_IS_NOT_XML|SPF_ASYNC|SPF_PURGEBEFORESPEAK, NULL);
}
}
// Was the message high-priority?
if( line_buffer[0] == L'!' )
{
line_buffer[0] = L' ';
pVoice->Speak(line_buffer, SPF_IS_NOT_XML|SPF_ASYNC|SPF_PURGEBEFORESPEAK, NULL);
}
else
{
pVoice->Speak(line_buffer, SPF_IS_NOT_XML|SPF_ASYNC, NULL);
}
}
// Allow the user to hear the rest of the speech buffer...
pVoice->Speak(L" ", SPF_IS_NOT_XML, NULL);
pVoice->Release();
pVoice = NULL;
}
else
{
printf("ERROR: Couldn't initialise SAPI 5.1.\n");
}
::CoUninitialize();
return TRUE;
}
示例8: SpFindBestToken
void Sound::test() {
ISpVoice * pVoice = NULL;
ISpObjectToken* pVoiceToken=nullptr;
IEnumSpObjectTokens* pEnum;
ULONG ulCount = 0;
if (FAILED(::CoInitialize(NULL)))
{
return;
}
HRESULT hr = S_OK;
// Find the best matching installed en-us recognizer.
CComPtr<ISpObjectToken> cpRecognizerToken;
if (SUCCEEDED(hr))
{
hr = SpFindBestToken(SPCAT_RECOGNIZERS, L"language=409", NULL, &cpRecognizerToken);
}
// Create the in-process recognizer and immediately set its state to inactive.
CComPtr<ISpRecognizer> cpRecognizer;
if (SUCCEEDED(hr))
{
hr = cpRecognizer.CoCreateInstance(CLSID_SpInprocRecognizer);
}
if (SUCCEEDED(hr))
{
hr = cpRecognizer->SetRecognizer(cpRecognizerToken);
}
if (SUCCEEDED(hr))
{
hr = cpRecognizer->SetRecoState(SPRST_INACTIVE);
}
// Create a new recognition context from the recognizer.
CComPtr<ISpRecoContext> cpContext;
if (SUCCEEDED(hr))
{
hr = cpRecognizer->CreateRecoContext(&cpContext);
}
// Subscribe to the speech recognition event and end stream event.
if (SUCCEEDED(hr))
{
ULONGLONG ullEventInterest = SPFEI(SPEI_RECOGNITION);
hr = cpContext->SetInterest(ullEventInterest, ullEventInterest);
}
// Establish a Win32 event to signal when speech events are available.
HANDLE hSpeechNotifyEvent = INVALID_HANDLE_VALUE;
if (SUCCEEDED(hr))
{
hr = cpContext->SetNotifyWin32Event();
}
if (SUCCEEDED(hr))
{
hSpeechNotifyEvent = cpContext->GetNotifyEventHandle();
if (INVALID_HANDLE_VALUE == hSpeechNotifyEvent)
{
// Notification handle unsupported.
hr = E_NOINTERFACE;
}
}
// Initialize an audio object to use the default audio input of the system and set the recognizer to use it.
CComPtr<ISpAudio> cpAudioIn;
if (SUCCEEDED(hr))
{
hr = cpAudioIn.CoCreateInstance(CLSID_SpMMAudioIn);
}
if (SUCCEEDED(hr))
{
hr = cpRecognizer->SetInput(cpAudioIn, TRUE);
}
// Populate a WAVEFORMATEX struct with our desired output audio format. information.
WAVEFORMATEX* pWfexCoMemRetainedAudioFormat = NULL;
GUID guidRetainedAudioFormat = GUID_NULL;
if (SUCCEEDED(hr))
{
hr = SpConvertStreamFormatEnum(SPSF_16kHz16BitMono, &guidRetainedAudioFormat, &pWfexCoMemRetainedAudioFormat);
}
// Instruct the recognizer to retain the audio from its recognition results.
if (SUCCEEDED(hr))
{
hr = cpContext->SetAudioOptions(SPAO_RETAIN_AUDIO, &guidRetainedAudioFormat, pWfexCoMemRetainedAudioFormat);
}
//.........这里部分代码省略.........
示例9: speak
bool speak(wchar_t * text, wchar_t * pszReqAttribs)
{
ISpVoice * pVoice = NULL;
HRESULT stInitializing = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice);
if (SUCCEEDED(stInitializing))
{
ISpObjectToken* cpToken(NULL);
HRESULT stTokenFinding = SpFindBestToken(SPCAT_VOICES, pszReqAttribs, L"", &cpToken);
if (SUCCEEDED(stTokenFinding))
{
HRESULT stVoiceSetting = pVoice->SetVoice(cpToken);
if (SUCCEEDED(stVoiceSetting))
{
HRESULT stSpoken = pVoice->Speak(text, 0, NULL);
if (SUCCEEDED(stSpoken))
{
cpToken->Release();
cpToken = NULL;
pVoice->Release();
pVoice = NULL;
return true;
}
else
{
cpToken->Release();
cpToken = NULL;
pVoice->Release();
pVoice = NULL;
wcout << "Error, I couldn't play this text " << text << endl;
return false;
}
}
else
{
cpToken->Release();
cpToken = NULL;
pVoice->Release();
pVoice = NULL;
wcout << "Error, I can't set this voice " << pszReqAttribs << endl;
return false;
}
}
else
{
pVoice->Release();
pVoice = NULL;
wcout << "Error, I can't find this voice " << pszReqAttribs << endl;
return false;
}
}
else {
wcout << "Error, I can't create Voice instance" << endl;
return false;
}
}
示例10: main
int main(int argc, char* argv[])
{
Arguments arguments(argc, argv);
//Initialize Pocketsphinx
mic_data_t mic;
continuous_init(arguments, mic);
//Initialize Voice
ISpVoice * pVoice = NULL;
if (FAILED(::CoInitialize(NULL)))
return FALSE;
HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice);
if (SUCCEEDED(hr))
std::cout << "Speech Initialized" << std::endl;
//Initialize Rebecca
AimlFacade aiml;
GraphBuilder &builder = aiml.getGraphBuilder();
myCallBacks callback;
builder.setCallBacks(&callback);
rebecca_init(arguments, builder);
//Main code
try
{
/*
* Send a initial conversation of "connect" to
* annotated alice and get the response.
*/
StringPimpl response = builder.getResponse("connect");
/*
* Get the botName which should be Rebecca since that is
* the name give in the configuration file properties.xml
* which we parsed above.
*/
string botName = builder.getBotPredicate("name").c_str();
//Send the initial opening line of the bot
cout << botName << " says: " << response.c_str() << endl;
hr = pVoice->Speak(s2ws(response.c_str()).c_str(), 0, NULL);
pVoice->WaitUntilDone(15000);
/*
* The main loop to get the input
* from the user until the user types '/exit'
*/
while (true)
{
//getUtterance(mic);
//string input = string(mic.hyp);
string input;
getline(cin, input);
if (input == "/exit" || input == "GOOD NIGHT")
{
/*
* The user wants to exit so break
* out of the while(true) loop
*/
continuous_exit(mic);
pVoice->Release();
pVoice = NULL;
::CoUninitialize();
break;
}
else //The user gave an input to the bot
{
//Here we get some internal Rebecca information.
cout << endl
<< "Internal information:" << endl
<< "=====================" << endl
<< input << " : "
<< builder.getThat().c_str() << " : "
<< builder.getTopic().c_str() << endl;
/*
* Ahhh finally. We give the user input to Rebecca Aiml's loaded
* AIML and get the response back.
*/
StringPimpl response = builder.getResponse(input.c_str());
cout << "=====================" << endl << endl;
//Print out what Rebecca says.
cout << botName << " says: " << response.c_str() << endl;
hr = pVoice->Speak(s2ws(response.c_str()).c_str(), 0, NULL);
pVoice->WaitUntilDone(15000);
}
}
}
catch (Exception &e)
{
cout << "[An unknown exception occured, Terminating program]" << endl;
//.........这里部分代码省略.........
示例11: TogglePause
HRESULT TogglePause() //切换暂停
{
Paused = !Paused;
if (Paused)
return VoiceObj->Pause();
else
return VoiceObj->Resume();
}
示例12: RequireLanguage
//请求指定语言的语音
bool SpBox::RequireLanguage(LPCWSTR langid)
{
IEnumSpObjectTokens* pEnum; //语音总选择
ISpObjectToken* pVoiceToken; //当前语音选择
ULONG ulCount = 0; //选择个数
WCHAR* pVoiceLang; //语音LangId
WCHAR* pVoiceText; //语音说明文字
HRESULT hr = SpEnumTokens(SPCAT_VOICES, NULL, NULL, &pEnum);
if (SUCCEEDED(hr))
{
hr = pEnum->GetCount(&ulCount);
}
while (SUCCEEDED(hr) && ulCount--){
if (SUCCEEDED(hr))
pEnum->Next(1, &pVoiceToken, 0);
if (SUCCEEDED(hr))
hr = SpGetLanguage(pVoiceToken, &pVoiceLang);
if (SUCCEEDED(hr) && !_wcsnicmp(pVoiceLang, langid, 3))
{
Token = pVoiceToken;
VoiceObj->SetVoice(Token);
SpGetDescription(Token, &pVoiceText, 0);
Description = pVoiceText;
return true;
}
}
return false;
}
示例13: UnPause
HRESULT UnPause() //继续朗读
{
if (Paused)
{
Paused = false;
return VoiceObj->Resume();
}
return 0;
}
示例14: Pause
HRESULT Pause() //暂停朗读
{
if (!Paused)
{
Paused = true;
return VoiceObj->Pause();
}
return 0;
}
示例15: Speak
HRESULT Speak() //开始朗读
{
UnPause();
return VoiceObj->Speak(Text.c_str(), Flags, 0);
}