Wie kann man die Sprachausgabe in SAPI auf Knopfdruck stoppen?
-
Wie kann man die Sprachausgabe in SAPI auf Knopfdruck stoppen?
ISpVoice * pVoice hr = pVoice->Speak(...) //... hr = pVoice->...() ??? // Welche Funktion stoppt?
-
Du musst den "Speak" Aufruf zuerst mal "Asynchron" machen, sonst kommt die Funktion ja erst zurück, wenn schon alles gesprochen wurde.
Mit "Pause" kannst Du es dann anhalten. Und beim nächsten Speak-Call nimmst Du noch das Flag "SPF_PURGEBEFORESPEAK" dazu (oder auch immer).
-
O.k., nach Pause() kann er nicht mehr sprechen.

-
Du musst Resume() durchführen. Beispiel:
void CSAPI001Dlg::OnButtonSpeak() { m_FlagButton = 0; UpdateData(TRUE); //Edit-Feld -> Member-Variable CString str = m_Edit1; hr = pEnum->Item(ulVoiceNr, &pVoiceToken); hr = pVoice->SetVoice(pVoiceToken); hr = pVoice->SetRate(m_Speed); hr = pVoice->SetVolume(m_Volume+100); hr = pVoice->Resume(); // Pause aufheben hr = pVoice->Speak(str.AllocSysString(), SPF_ASYNC | SPF_PURGEBEFORESPEAK, NULL ); // Asynchron und "putzen" } void CSAPI001Dlg::OnButtonStop() { hr = pVoice->Pause(); // async Voice stoppen }