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
|