ISpVoice::SetVoice (Windows CE 5.0)
This method sets the identity of the voice used for text synthesis. ISpVoice typically uses the default voice, which is set through the Speech Control Panel.
HRESULT SetVoice( ISpObjectToken* pToken);
Parameters
- pToken
[in] Pointer to an ISpObjectToken implementation representing the token that describes the requested voice. If pToken is NULL, the system default voice is used.
Return Values
The following table shows the possible return values.
Value | Description |
---|---|
S_OK | Function completed successfully. |
E_INVALIDARG | One or more arguments are invalid. |
Remarks
Changing the voice selection will preserve the same volume and rate levels for a ISpVoice object.
Example
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);
}
Requirements
OS Versions: Windows CE .NET 4.1 and later.
Header: Sapi.h, Sapi.idl.
Link Library: Sapilib.lib.
See Also
Send Feedback on this topic to the authors