mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-10-31 05:35:35 +00:00
Fix the USE_ASYNC and wave_* API usage logic.
This commit is contained in:
+12
-14
@@ -378,7 +378,7 @@ static espeak_ng_STATUS Synthesize(unsigned int unique_identifier, const void *t
|
||||
|
||||
count_samples = 0;
|
||||
|
||||
if (my_mode == ENOUTPUT_MODE_SPEAK_AUDIO)
|
||||
if ((my_mode & ENOUTPUT_MODE_SPEAK_AUDIO) == ENOUTPUT_MODE_SPEAK_AUDIO)
|
||||
a_write_pos = wave_get_write_position(my_audio);
|
||||
|
||||
if (translator == NULL)
|
||||
@@ -420,11 +420,9 @@ static espeak_ng_STATUS Synthesize(unsigned int unique_identifier, const void *t
|
||||
event_list[0].user_data = my_user_data;
|
||||
|
||||
if (SpeakNextClause(NULL, NULL, 1) == 0) {
|
||||
if (my_mode == ENOUTPUT_MODE_SPEAK_AUDIO) {
|
||||
#ifdef USE_ASYNC
|
||||
if ((my_mode & ENOUTPUT_MODE_SPEAK_AUDIO) == ENOUTPUT_MODE_SPEAK_AUDIO) {
|
||||
if (dispatch_audio(NULL, 0, NULL) < 0)
|
||||
return ENS_AUDIO_ERROR;
|
||||
#endif
|
||||
} else if (synth_callback)
|
||||
synth_callback(NULL, 0, event_list); // NULL buffer ptr indicates end of data
|
||||
break;
|
||||
@@ -496,9 +494,8 @@ espeak_ng_STATUS sync_espeak_Synth(unsigned int unique_identifier, const void *t
|
||||
end_character_position = end_position;
|
||||
|
||||
espeak_ng_STATUS aStatus = Synthesize(unique_identifier, text, flags);
|
||||
#ifdef USE_ASYNC
|
||||
wave_flush(my_audio);
|
||||
#endif
|
||||
if ((my_mode & ENOUTPUT_MODE_SPEAK_AUDIO) == ENOUTPUT_MODE_SPEAK_AUDIO)
|
||||
wave_flush(my_audio);
|
||||
|
||||
return aStatus;
|
||||
}
|
||||
@@ -799,10 +796,10 @@ ESPEAK_NG_API espeak_ng_STATUS espeak_ng_Cancel(void)
|
||||
#ifdef USE_ASYNC
|
||||
fifo_stop();
|
||||
event_clear_all();
|
||||
|
||||
if (my_mode == ENOUTPUT_MODE_SPEAK_AUDIO)
|
||||
wave_close(my_audio);
|
||||
#endif
|
||||
|
||||
if ((my_mode & ENOUTPUT_MODE_SPEAK_AUDIO) == ENOUTPUT_MODE_SPEAK_AUDIO)
|
||||
wave_close(my_audio);
|
||||
embedded_value[EMBED_T] = 0; // reset echo for pronunciation announcements
|
||||
|
||||
for (int i = 0; i < N_SPEECH_PARAM; i++)
|
||||
@@ -813,10 +810,10 @@ ESPEAK_NG_API espeak_ng_STATUS espeak_ng_Cancel(void)
|
||||
|
||||
ESPEAK_API int espeak_IsPlaying(void)
|
||||
{
|
||||
#ifdef USE_ASYNC
|
||||
if ((my_mode == ENOUTPUT_MODE_SPEAK_AUDIO) && wave_is_busy(my_audio))
|
||||
if (((my_mode & ENOUTPUT_MODE_SPEAK_AUDIO) == ENOUTPUT_MODE_SPEAK_AUDIO) && wave_is_busy(my_audio))
|
||||
return 1;
|
||||
|
||||
#ifdef USE_ASYNC
|
||||
return fifo_is_busy();
|
||||
#else
|
||||
return 0;
|
||||
@@ -843,13 +840,14 @@ ESPEAK_NG_API espeak_ng_STATUS espeak_ng_Terminate(void)
|
||||
fifo_stop();
|
||||
fifo_terminate();
|
||||
event_terminate();
|
||||
#endif
|
||||
|
||||
if (my_mode == ENOUTPUT_MODE_SPEAK_AUDIO) {
|
||||
if ((my_mode & ENOUTPUT_MODE_SPEAK_AUDIO) == ENOUTPUT_MODE_SPEAK_AUDIO) {
|
||||
wave_close(my_audio);
|
||||
wave_terminate();
|
||||
out_samplerate = 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
free(event_list);
|
||||
event_list = NULL;
|
||||
free(outbuf);
|
||||
|
||||
Reference in New Issue
Block a user