Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Microsoft Speech API 5.4
ISpRecoResult::SpeakAudio
ISpRecoResult::SpeakAudio retrieves and speaks the specified audio. This combines two other methods; first calling ISpRecoResult::GetAudio and then calling ISpVoice::SpeakStream on the parent recognition context.
HRESULT SpeakAudio(
ULONG ulStartElement,
ULONG cElements,
DWORD dwFlags,
ULONG *pulStreamNumber
);
Parameters
- ulStartElement
[in] Value specifying with which element to start. - cElements
[in] Value specifying the number of elements contained in the stream. A value of zero speaks all elements. - dwFlags
[in] Value indicating the attributes of the text stream. These values are contained in the SPEAKFLAGS enumeration. - pulStreamNumber
[optional, out] Address of a variable containing the stream number information. If NULL, the stream number will not be retrieved.
Return values
Value |
S_OK |
SPERR_NO_AUDIO_DATA |
E_POINTER |
FAILED(hr) |
Return values may also be those from ISpVoice::SpeakStream.
Remarks
Even if there are no elements, that is, ulStartElement = 0 and cElements = 0, the audio will still be spoken. These are unrecognized results that have no elements, but do have audio.
If the application did not activate retained audio (see ISpRecoContext::SetAudioOptions), or make a previous call to ISpPhrase::Discard and eliminate the retained audio, ::SpeakAudio will fail with SPERR_NO_AUDIO_DATA.
Example
The following code snippet illustrates the use of ISpRecoResult::SpeakAudio.
// Declare local identifiers:
HRESULT hr = S_OK;
CComPtr<ISpRecoResult> cpRecoResult;
ULONG ulStreamNum = 1;
// ... Get a recognition result object from the SR engine ...
// Replay the user's spoken audio to the user.
hr = cpRecoResult->SpeakAudio(0, 0, 0, &ulStreamNum;);
if (SUCCEEDED(hr))
{
// Do stuff here.
}