Browse Source

[1.26.01 Add "options" parameter to espeak_Initialize.

Add callback event: espeakEVENT_PHONEME


git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@39 d46cf337-b52f-0410-862d-fd96e6ae7743
master
jonsd 18 years ago
parent
commit
e35e573490
8 changed files with 30 additions and 15 deletions
  1. 3
    3
      src/espeak.cpp
  2. 6
    2
      src/extras.cpp
  3. 6
    5
      src/speak_lib.cpp
  4. 7
    3
      src/speak_lib.h
  5. 1
    1
      src/synthdata.cpp
  6. 5
    1
      src/synthesize.cpp
  7. 1
    0
      src/translate.cpp
  8. 1
    0
      src/translate.h

+ 3
- 3
src/espeak.cpp View File

break; break;


case 0x104: // --voices case 0x104: // --voices
espeak_Initialize(AUDIO_OUTPUT_SYNCHRONOUS,0,NULL);
espeak_Initialize(AUDIO_OUTPUT_SYNCHRONOUS,0,NULL,0);
DisplayVoices(stdout,optarg); DisplayVoices(stdout,optarg);
exit(0); exit(0);


if(option_waveout || quiet) if(option_waveout || quiet)
{ {
// writing to a file (or no output), we can use synchronous mode // writing to a file (or no output), we can use synchronous mode
samplerate = espeak_Initialize(AUDIO_OUTPUT_SYNCHRONOUS,0,NULL);
samplerate = espeak_Initialize(AUDIO_OUTPUT_SYNCHRONOUS,0,NULL,0);


espeak_SetSynthCallback(SynthCallback); espeak_SetSynthCallback(SynthCallback);
if(option_waveout) if(option_waveout)
else else
{ {
// play the sound output // play the sound output
samplerate = espeak_Initialize(AUDIO_OUTPUT_PLAYBACK,0,NULL);
samplerate = espeak_Initialize(AUDIO_OUTPUT_PLAYBACK,0,NULL,0);
} }



+ 6
- 2
src/extras.cpp View File

{//==================================================================== {//====================================================================
int type; int type;


fprintf(f_events,"--\n");
if(f_wavtest == NULL) return(0); if(f_wavtest == NULL) return(0);


if(wav == NULL) if(wav == NULL)
fprintf(f_events,"%5d %4d (%2d) %d ",events->audio_position,events->text_position,events->length,type); fprintf(f_events,"%5d %4d (%2d) %d ",events->audio_position,events->text_position,events->length,type);
if((type==3) || (type==4)) if((type==3) || (type==4))
fprintf(f_events,"'%s'\n",events->id.name); fprintf(f_events,"'%s'\n",events->id.name);
else
if(type==espeakEVENT_PHONEME)
fprintf(f_events,"[%s]\n",WordToString(events->id.number));
else else
fprintf(f_events,"%d\n",events->id.number); fprintf(f_events,"%d\n",events->id.number);


espeak_VOICE *newvoice; espeak_VOICE *newvoice;
int x; int x;


espeak_Initialize(AUDIO_OUTPUT_SYNCHRONOUS,100,NULL);
espeak_Initialize(AUDIO_OUTPUT_SYNCHRONOUS,100,NULL,0);
memset(&voicespec,0,sizeof(voicespec)); memset(&voicespec,0,sizeof(voicespec));
voicespec.languages = "de"; voicespec.languages = "de";
espeak_SetVoiceByProperties(&voicespec); espeak_SetVoiceByProperties(&voicespec);
f_events = fopen("/home/jsd1/speechdata/text/events","w"); f_events = fopen("/home/jsd1/speechdata/text/events","w");
fprintf(f_events,"Audio Text Length Type Id\n"); fprintf(f_events,"Audio Text Length Type Id\n");


espeak_Initialize(AUDIO_OUTPUT_SYNCH_PLAYBACK,0,NULL);
espeak_Initialize(AUDIO_OUTPUT_RETRIEVAL,0,NULL,1);
espeak_SetSynthCallback(TestSynthCallback); espeak_SetSynthCallback(TestSynthCallback);


unsigned int unique_identifier=0; unsigned int unique_identifier=0;

+ 6
- 5
src/speak_lib.cpp View File

uri_callback = UriCallback; uri_callback = UriCallback;
} }


ESPEAK_API int espeak_Initialize(espeak_AUDIO_OUTPUT output_type, int buf_length, const char *path)
{//================================================================================================
ESPEAK_API int espeak_Initialize(espeak_AUDIO_OUTPUT output_type, int buf_length, const char *path, int options)
{//=============================================================================================================
ENTER("espeak_Initialize"); ENTER("espeak_Initialize");
int param; int param;


if((out_start = outbuf) == NULL) if((out_start = outbuf) == NULL)
return(EE_INTERNAL_ERROR); return(EE_INTERNAL_ERROR);
// allocate space for event list. Allow 500 events per minute
n_event_list = (buf_length*500)/1000;
// allocate space for event list. Allow 200 events per second
n_event_list = (buf_length*200)/1000;
if((event_list = (espeak_EVENT *)realloc(event_list,sizeof(espeak_EVENT) * n_event_list)) == NULL) if((event_list = (espeak_EVENT *)realloc(event_list,sizeof(espeak_EVENT) * n_event_list)) == NULL)
return(EE_INTERNAL_ERROR); return(EE_INTERNAL_ERROR);
option_phonemes = 0; option_phonemes = 0;
option_phoneme_events = (options & 1);

SetVoiceByName("default"); SetVoiceByName("default");
for(param=0; param<N_SPEECH_PARAM; param++) for(param=0; param<N_SPEECH_PARAM; param++)

+ 7
- 3
src/speak_lib.h View File

espeakEVENT_MARK, // Mark espeakEVENT_MARK, // Mark
espeakEVENT_PLAY, // Audio element espeakEVENT_PLAY, // Audio element
espeakEVENT_END, // End of sentence espeakEVENT_END, // End of sentence
espeakEVENT_MSG_TERMINATED // End of message
espeakEVENT_MSG_TERMINATED, // End of message
espeakEVENT_PHONEME // Phoneme, if enabled in espeak_Initialize()
} espeak_EVENT_TYPE; } espeak_EVENT_TYPE;




int sample; // sample id (internal use) int sample; // sample id (internal use)
void* user_data; // pointer supplied by the calling program void* user_data; // pointer supplied by the calling program
union { union {
int number; // used for WORD and SENTENCE events
int number; // used for WORD and SENTENCE events. For PHONEME events this is the phoneme mnemonic.
const char *name; // used for MARK and PLAY events. UTF8 string const char *name; // used for MARK and PLAY events. UTF8 string
} id; } id;
} espeak_EVENT; } espeak_EVENT;
#ifdef __cplusplus #ifdef __cplusplus
extern "C" extern "C"
#endif #endif
int espeak_Initialize(espeak_AUDIO_OUTPUT output, int buflength, const char *path);
int espeak_Initialize(espeak_AUDIO_OUTPUT output, int buflength, const char *path, int options);
/* Must be called before any synthesis functions are called. /* Must be called before any synthesis functions are called.
output: the audio data can either be played by eSpeak or passed back by the SynthCallback function. output: the audio data can either be played by eSpeak or passed back by the SynthCallback function.




path: The directory which contains the espeak-data directory, or NULL for the default location. path: The directory which contains the espeak-data directory, or NULL for the default location.


options: bit 0: 1=allow espeakEVENT_PHONEME events.


Returns: sample rate in Hz, or -1 (EE_INTERNAL_ERROR). Returns: sample rate in Hz, or -1 (EE_INTERNAL_ERROR).
*/ */



+ 1
- 1
src/synthdata.cpp View File

#include "translate.h" #include "translate.h"
#include "wave.h" #include "wave.h"


const char *version_string = "1.26 09.Jun.07";
const char *version_string = "1.26.01 09.Jun.07";
const int version_phdata = 0x012601; const int version_phdata = 0x012601;


int option_device_number = -1; int option_device_number = -1;

+ 5
- 1
src/synthesize.cpp View File

if(p->prepause > 0) if(p->prepause > 0)
DoPause(p->prepause); DoPause(p->prepause);


// printf("phoneme [%s]\n",WordToString(p->ph->mnemonic));
if(option_phoneme_events)
{
DoMarker(espeakEVENT_PHONEME, (p->sourceix & 0x7ff) + clause_start_char, 0, p->ph->mnemonic);
}

switch(p->type) switch(p->type)
{ {
case phPAUSE: case phPAUSE:

+ 1
- 0
src/translate.cpp View File

int option_tone1 = 0; int option_tone1 = 0;
int option_tone2 = 0; int option_tone2 = 0;
int option_phonemes = 0; int option_phonemes = 0;
int option_phoneme_events = 0;
int option_quiet = 0; int option_quiet = 0;
int option_endpause = 0; // suppress pause after end of text int option_endpause = 0; // suppress pause after end of text
int option_capitals = 0; int option_capitals = 0;

+ 1
- 0
src/translate.h View File

extern int option_waveout; extern int option_waveout;
extern int option_quiet; extern int option_quiet;
extern int option_phonemes; extern int option_phonemes;
extern int option_phoneme_events;
extern int option_linelength; // treat lines shorter than this as end-of-clause extern int option_linelength; // treat lines shorter than this as end-of-clause
extern int option_harmonic1; extern int option_harmonic1;
extern int option_multibyte; extern int option_multibyte;

Loading…
Cancel
Save