Ensure you have satisfied building dependencies
To use eSpeak NG as a C library, create file
test-espeak.c
with following content:
#include <espeak-ng/speak_lib.h>
espeak_AUDIO_OUTPUT output = AUDIO_OUTPUT_SYNCH_PLAYBACK;
char *path = NULL;
void* user_data;
unsigned int *identifier;
int main(int argc, char* argv[]) {
char voicename[] = {"English"}; // Set voice by its name
char text[] = {"Hello world!"};
int buflength = 500, options = 0;
unsigned int position = 0, position_type = 0, end_position = 0, flags = espeakCHARS_AUTO;
espeak_Initialize(output, buflength, path, options);
espeak_SetVoiceByName(voicename);
printf("Saying '%s'...\n", text);
espeak_Synth(text, buflength, position, position_type, end_position, flags, identifier, user_data);
printf("Done\n");
return 0;
}
Compile created file with command:
gcc test-espeak.c -lespeak-ng -o test-espeak
Run created binary with the command:
./test-espeak
If, during compilation, you get error like
espeak-ng/speak_lib.h: No such file or directory
, you may
try to replace line:
#include <espeak-ng/speak_lib.h>
with
#include "/your/path/to/speak_lib.h"
where /your/path/to/
is actual path, where header file
is located.
Code above set library using just voice name with related language to it. Code below shows, how to set more detailed properties of the voice (e.g. language, variant and gender):
#include <string.h>
#include <malloc.h>
#include <espeak-ng/speak_lib.h>
espeak_AUDIO_OUTPUT output = AUDIO_OUTPUT_SYNCH_PLAYBACK;
char *path = NULL;
void* user_data;
unsigned int *identifier;
int main(int argc, char* argv[] ) {
char text[] = {"Hello world!"};
int buflength = 500, options = 0;
unsigned int position = 0, position_type = 0, end_position = 0, flags = espeakCHARS_AUTO;
espeak_Initialize(output, buflength, path, options );
espeak_VOICE voice;
memset(&voice, 0, sizeof(espeak_VOICE)); // Zero out the voice first
const char *langNativeString = "en"; // Set voice by properties
voice.languages = langNativeString;
voice.name = "US";
voice.variant = 2;
voice.gender = 2;
espeak_SetVoiceByProperties(&voice);
printf("Saying '%s'...\n", text);
espeak_Synth(text, buflength, position, position_type, end_position, flags, identifier, user_data);
printf("Done\n");
return 0;
}
Look for details at espeak_ng.h and speak_lib.h files.