Browse Source

Make LoadMbrolaTable return espeak_ng_STATUS.

master
Reece H. Dunn 9 years ago
parent
commit
e69f0f41f0

+ 2
- 0
src/include/espeak-ng/espeak_ng.h View File

ENS_NOT_INITIALIZED = 0x100004FF, ENS_NOT_INITIALIZED = 0x100004FF,
ENS_AUDIO_ERROR = 0x100005FF, ENS_AUDIO_ERROR = 0x100005FF,
ENS_VOICE_NOT_FOUND = 0x100006FF, ENS_VOICE_NOT_FOUND = 0x100006FF,
ENS_MBROLA_NOT_FOUND = 0x100007FF,
ENS_MBROLA_VOICE_NOT_FOUND = 0x100008FF,
} espeak_ng_STATUS; } espeak_ng_STATUS;


typedef enum { typedef enum {

+ 9
- 7
src/libespeak-ng/synth_mbrola.c View File



#include "config.h" #include "config.h"


#include <errno.h>
#include <stdio.h> #include <stdio.h>
#include <ctype.h> #include <ctype.h>
#include <wctype.h> #include <wctype.h>
static int mbrola_control = 0; static int mbrola_control = 0;
static int mbr_name_prefix = 0; static int mbr_name_prefix = 0;


espeak_ERROR LoadMbrolaTable(const char *mbrola_voice, const char *phtrans, int *srate)
espeak_ng_STATUS LoadMbrolaTable(const char *mbrola_voice, const char *phtrans, int *srate)
{ {
// Load a phoneme name translation table from espeak-data/mbrola // Load a phoneme name translation table from espeak-data/mbrola


if (mbrola_voice == NULL) { if (mbrola_voice == NULL) {
samplerate = samplerate_native; samplerate = samplerate_native;
SetParameter(espeakVOICETYPE, 0, 0); SetParameter(espeakVOICETYPE, 0, 0);
return EE_OK;
return ENS_OK;
} }


sprintf(path, "%s/mbrola/%s", path_home, mbrola_voice); sprintf(path, "%s/mbrola/%s", path_home, mbrola_voice);
#ifdef PLATFORM_WINDOWS #ifdef PLATFORM_WINDOWS
if (load_MBR() == FALSE) { // load mbrola.dll if (load_MBR() == FALSE) { // load mbrola.dll
fprintf(stderr, "Can't load mbrola.dll\n"); fprintf(stderr, "Can't load mbrola.dll\n");
return EE_INTERNAL_ERROR;
return ENS_MBROLA_NOT_FOUND;
} }
#endif #endif


if (init_MBR(path) != 0) // initialise the required mbrola voice if (init_MBR(path) != 0) // initialise the required mbrola voice
return EE_NOT_FOUND;
return ENS_MBROLA_VOICE_NOT_FOUND;


setNoError_MBR(1); // don't stop on phoneme errors setNoError_MBR(1); // don't stop on phoneme errors


sprintf(path, "%s/mbrola_ph/%s", path_home, phtrans); sprintf(path, "%s/mbrola_ph/%s", path_home, phtrans);
size = GetFileLength(path); size = GetFileLength(path);
if ((f_in = fopen(path, "rb")) == NULL) { if ((f_in = fopen(path, "rb")) == NULL) {
int error = errno;
close_MBR(); close_MBR();
return EE_NOT_FOUND;
return error;
} }


if ((mbrola_tab = (MBROLA_TAB *)realloc(mbrola_tab, size)) == NULL) { if ((mbrola_tab = (MBROLA_TAB *)realloc(mbrola_tab, size)) == NULL) {
fclose(f_in); fclose(f_in);
close_MBR(); close_MBR();
return EE_INTERNAL_ERROR;
return ENOMEM;
} }


mbrola_control = Read4Bytes(f_in); mbrola_control = Read4Bytes(f_in);
SetParameter(espeakVOICETYPE, 1, 0); SetParameter(espeakVOICETYPE, 1, 0);
strcpy(mbrola_name, mbrola_voice); strcpy(mbrola_name, mbrola_voice);
mbrola_delay = 1000; // improve synchronization of events mbrola_delay = 1000; // improve synchronization of events
return EE_OK;
return ENS_OK;
} }


static int GetMbrName(PHONEME_LIST *plist, PHONEME_TAB *ph, PHONEME_TAB *ph_prev, PHONEME_TAB *ph_next, int *name2, int *split, int *control) static int GetMbrName(PHONEME_LIST *plist, PHONEME_TAB *ph, PHONEME_TAB *ph_prev, PHONEME_TAB *ph_next, int *name2, int *split, int *control)

+ 1
- 1
src/libespeak-ng/synthesize.h View File

extern int n_soundicon_tab; extern int n_soundicon_tab;
extern SOUND_ICON soundicon_tab[N_SOUNDICON_TAB]; extern SOUND_ICON soundicon_tab[N_SOUNDICON_TAB];


espeak_ERROR LoadMbrolaTable(const char *mbrola_voice, const char *phtrans, int *srate);
espeak_ng_STATUS LoadMbrolaTable(const char *mbrola_voice, const char *phtrans, int *srate);
espeak_ng_STATUS SetParameter(int parameter, int value, int relative); espeak_ng_STATUS SetParameter(int parameter, int value, int relative);
int MbrolaTranslate(PHONEME_LIST *plist, int n_phonemes, int resume, FILE *f_mbrola); int MbrolaTranslate(PHONEME_LIST *plist, int n_phonemes, int resume, FILE *f_mbrola);
int MbrolaGenerate(PHONEME_LIST *phoneme_list, int *n_ph, int resume); int MbrolaGenerate(PHONEME_LIST *phoneme_list, int *n_ph, int resume);

+ 1
- 1
src/libespeak-ng/voices.c View File



name2[0] = 0; name2[0] = 0;
sscanf(p, "%s %s %d", name1, name2, &srate); sscanf(p, "%s %s %d", name1, name2, &srate);
if (LoadMbrolaTable(name1, name2, &srate) != EE_OK)
if (LoadMbrolaTable(name1, name2, &srate) != ENS_OK)
fprintf(stderr, "mbrola voice not found\n"); fprintf(stderr, "mbrola voice not found\n");
voice->samplerate = srate; voice->samplerate = srate;
} }

Loading…
Cancel
Save