|
|
@@ -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(); |
|
|
|
#endif |
|
|
|
|
|
|
|
if (my_mode == ENOUTPUT_MODE_SPEAK_AUDIO) |
|
|
|
if ((my_mode & ENOUTPUT_MODE_SPEAK_AUDIO) == ENOUTPUT_MODE_SPEAK_AUDIO) |
|
|
|
wave_close(my_audio); |
|
|
|
#endif |
|
|
|
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); |