I’m doing a project with a 3D model, that speaks.
So, I’m using SAPI 5.1, and I want to call a function asynchronously when there’s a Viseme event (in order to play the animation related to).
How could I do it?
Thank you very much.
Note: I use : hRes = m_cpVoice->Speak(L”All I want is to solve this problem”, SPF_ASYNC , NULL);
And I know the CspEvent, event.eEventId . All I want is how to call a function when Sapi event happens
First, you need to call m_cpVoice->SetInterest(SPFEI(SPEI_VISEME), SPFEI(SPEI_VISEME)); that will tell SAPI to send an event when a VISEME event fires.
Second, you need to set up an event handler by calling m_cpVoice->SetNotifyCallbackInterface, with your callback. (It must implement ISpNotifyCallback, which is a virtual C++ interface that your object would implement.)
You can look at the SAPI events documentation for more details.
A sample implementation of ISpNotifyCallback would look like this:
TTSHandler.h:
TTSHandler.cpp: