espeak basic usage example
//speech synth
//using espeak
//Written by Bill Heaster
/*
* This is the most minimalistic approach to getting espeak running with the C api
*
*
* compile with gcc -W -o myEspeak myEspeak.c -lespeak
*
* This was tested in ubuntu 15.10 I had to download the following packages.
* espeak-data
* libespeak-dev
*
* */
#include <stdio.h>
#include <string.h>
#include <espeak/speak_lib.h>
/* Must be called before any synthesis functions are called.
This specifies a function in the calling program which is called when a buffer of
speech sound data has been produced.
The callback function is of the form:
int SynthCallback(short *wav, int numsamples, espeak_EVENT *events);
wav: is the speech sound data which has been produced.
NULL indicates that the synthesis has been completed.
numsamples: is the number of entries in wav. This number may vary, may be less than
the value implied by the buflength parameter given in espeak_Initialize, and may
sometimes be zero (which does NOT indicate end of synthesis).
events: an array of espeak_EVENT items which indicate word and sentence events, and
also the occurance if <mark> and <audio> elements within the text. The list of
events is terminated by an event of type = 0.
Callback returns: 0=continue synthesis, 1=abort synthesis.
*/
//don't delete this callback function.
int SynthCallback(short *wav, int numsamples, espeak_EVENT *events)
{
return 0;
}
int main(void)
{
espeak_ERROR speakErr;
//must be called before any other functions
//espeak initialize
if(espeak_Initialize(AUDIO_OUTPUT_SYNCH_PLAYBACK,0,NULL,espeakINITIALIZE_PHONEME_EVENTS) <0)
{
puts("could not initialize espeak\n");
return -1;
}
espeak_SetSynthCallback(SynthCallback);
//make some text to spit out
char textBuff[255]={0};
strcpy(textBuff, "hello, hello, hello world");
if((speakErr=espeak_Synth(textBuff, strlen(textBuff), 0,0,0,espeakCHARS_AUTO,NULL,NULL))!= EE_OK)
{
puts("error on synth creation\n");
}
return 0;
}