|
|
|
|
|
|
|
|
static espeak_ng_OUTPUT_MODE my_mode = ENOUTPUT_MODE_SYNCHRONOUS; |
|
|
static espeak_ng_OUTPUT_MODE my_mode = ENOUTPUT_MODE_SYNCHRONOUS; |
|
|
static int out_samplerate = 0; |
|
|
static int out_samplerate = 0; |
|
|
static int voice_samplerate = 22050; |
|
|
static int voice_samplerate = 22050; |
|
|
|
|
|
static int min_buffer_length = 60; // minimum buffer length in ms |
|
|
static espeak_ng_STATUS err = ENS_OK; |
|
|
static espeak_ng_STATUS err = ENS_OK; |
|
|
|
|
|
|
|
|
t_espeak_callback *synth_callback = NULL; |
|
|
t_espeak_callback *synth_callback = NULL; |
|
|
|
|
|
|
|
|
my_audio = create_audio_device_object(device, "eSpeak", "Text-to-Speech"); |
|
|
my_audio = create_audio_device_object(device, "eSpeak", "Text-to-Speech"); |
|
|
#endif |
|
|
#endif |
|
|
|
|
|
|
|
|
// buffer_length is in mS, allocate 2 bytes per sample |
|
|
|
|
|
if (buffer_length == 0) |
|
|
|
|
|
buffer_length = 60; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Don't allow buffer be smaller than safe minimum |
|
|
|
|
|
if (buffer_length < min_buffer_length) |
|
|
|
|
|
buffer_length = min_buffer_length; |
|
|
|
|
|
|
|
|
|
|
|
// allocate 2 bytes per sample |
|
|
outbuf_size = (buffer_length * samplerate)/500; |
|
|
outbuf_size = (buffer_length * samplerate)/500; |
|
|
out_start = (unsigned char *)realloc(outbuf, outbuf_size); |
|
|
out_start = (unsigned char *)realloc(outbuf, outbuf_size); |
|
|
if (out_start == NULL) |
|
|
if (out_start == NULL) |