diff --git a/src/libespeak-ng/speech.c b/src/libespeak-ng/speech.c index f181420c..ef26dc48 100644 --- a/src/libespeak-ng/speech.c +++ b/src/libespeak-ng/speech.c @@ -503,7 +503,9 @@ espeak_ng_STATUS sync_espeak_Synth(unsigned int unique_identifier, const void *t espeak_ng_STATUS aStatus = Synthesize(unique_identifier, text, flags); #ifdef HAVE_PCAUDIOLIB_AUDIO_H if ((my_mode & ENOUTPUT_MODE_SPEAK_AUDIO) == ENOUTPUT_MODE_SPEAK_AUDIO) { - int error = audio_object_drain(my_audio); + int error = (aStatus == ENS_SPEECH_STOPPED) + ? audio_object_flush(my_audio) + : audio_object_drain(my_audio); if (error != 0) fprintf(stderr, "error: %s\n", audio_object_strerror(my_audio, error)); }