You are reading help file online using chmlib.com
|
ISpVoice::SetVoice sets the identity of the voice used for text synthesis. ISpVoice normally uses the default voice, which is set through Speech properties in Control Panel.
HRESULT SetVoice(
ISpObjectToken *pToken
);
Value | Description |
---|---|
S_OK | Function completed successfully. |
E_INVALIDARG | One or more parameters are invalid. |
Changing the voice selection will preserve the same volume and rate levels for an ISpVoice object.
The following is an example to enumerate all the available voices registered under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices.
HRESULT hr = S_OK; CComPtr<ISpObjectToken> cpVoiceToken; CComPtr<IEnumSpObjectTokens> cpEnum; CComPtr<ISpVoice> cpVoice; ULONG ulCount = 0; // Create the SAPI voice if(SUCCEEDED(hr)) hr = cpVoice.CoCreateInstance( CLSID_SpVoice ); //Enumerate the available voices if(SUCCEEDED(hr)) hr = SpEnumTokens(SPCAT_VOICES, NULL, NULL, &cpEnum); //Get the number of voices if(SUCCEEDED(hr)) hr = cpEnum->GetCount(&ulCount); // Obtain a list of available voice tokens, set the voice to the token, and call Speak while (SUCCEEDED(hr) && ulCount -- ) { cpVoiceToken.Release(); if(SUCCEEDED(hr)) hr = cpEnum->Next( 1, &cpVoiceToken, NULL ); if(SUCCEEDED(hr)) hr = cpVoice->SetVoice(cpVoiceToken); if(SUCCEEDED(hr)) hr = cpVoice->Speak( L"How are you?", SPF_DEFAULT, NULL); }
You are reading help file online using chmlib.com
|