Browse Source

Expose the CompileMbrola function via a new espeak_ng.h API.

master
Reece H. Dunn 9 years ago
parent
commit
b8378c2667
4 changed files with 68 additions and 12 deletions
  1. 3
    3
      .gitignore
  2. 4
    3
      src/espeakedit.cpp
  3. 53
    0
      src/include/espeak-ng/espeak_ng.h
  4. 8
    6
      src/libespeak-ng/compiledata.c

+ 3
- 3
.gitignore View File

# programs # programs


platforms/*/espeak-phoneme-data platforms/*/espeak-phoneme-data
espeak-ng
espeakedit
speak-ng
src/espeak-ng
src/espeakedit
src/speak-ng


# Linux/Source distribution files # Linux/Source distribution files



+ 4
- 3
src/espeakedit.cpp View File

#include <locale.h> #include <locale.h>


#include "speak_lib.h" #include "speak_lib.h"
#include "espeak_ng.h"

#include "main.h" #include "main.h"
#include "speech.h" #include "speech.h"
#include "options.h" #include "options.h"
extern void init_z(); extern void init_z();
extern void CompilePhonemeData(void); extern void CompilePhonemeData(void);
extern void CompileSampleRate(void); extern void CompileSampleRate(void);
extern "C" void CompileMbrola(const char *mbrola_file);
extern void CompileIntonation(); extern void CompileIntonation();
extern void InitSpectrumDisplay(); extern void InitSpectrumDisplay();
extern void InitProsodyDisplay(); extern void InitProsodyDisplay();
fprintf(stderr, "Failed to load default voice\n"); fprintf(stderr, "Failed to load default voice\n");
exit(1); exit(1);
} }
CompileMbrola(argv[2]);
espeak_ng_CompileMbrolaVoice(argv[2], stdout);
} }
exit(0); exit(0);
} }
case MENU_COMPILE_MBROLA: case MENU_COMPILE_MBROLA:
{ {
wxString filepath = wxFileSelector(_T("Read Mbrola phonemes file"),path_phsource+_T("/mbrola"),_T(""),_T(""),_T("*"),wxOPEN); wxString filepath = wxFileSelector(_T("Read Mbrola phonemes file"),path_phsource+_T("/mbrola"),_T(""),_T(""),_T("*"),wxOPEN);
CompileMbrola(filepath.mb_str(wxConvLocal));
espeak_ng_CompileMbrolaVoice(filepath.mb_str(wxConvLocal), stdout);
} }
break; break;



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

/* eSpeak NG API.
*
* Copyright (C) 2015 Reece H. Dunn
*
* This file is part of espeak-ng.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

#ifndef ESPEAK_NG_H
#define ESPEAK_NG_H

#ifdef __cplusplus
extern "C"
{
#endif

#ifdef __WIN32__
#define ESPEAK_NG_API __declspec(dllexport)
#else
#define ESPEAK_NG_API
#endif

typedef enum {
/* Success Codes (>= 0) */

ENS_OK = 0,

/* Error Codes (< 0) */

ENE_NOT_FOUND = -1,
ENE_WRITE_FAILED = -2,
} espeak_ng_STATUS;

ESPEAK_NG_API espeak_ng_STATUS
espeak_ng_CompileMbrolaVoice(const char *path, FILE *log);

#ifdef __cplusplus
}
#endif

#endif

+ 8
- 6
src/libespeak-ng/compiledata.c View File

#include <unistd.h> #include <unistd.h>


#include "speak_lib.h" #include "speak_lib.h"
#include "espeak_ng.h"


#include "phoneme.h" #include "phoneme.h"
#include "speech.h" #include "speech.h"
return(word); return(word);
} }


void CompileMbrola(const char *filepath)
espeak_ng_STATUS espeak_ng_CompileMbrolaVoice(const char *filepath, FILE *log)
{ {
char *p; char *p;
FILE *f_in; FILE *f_in;
strcpy(buf,filepath); strcpy(buf,filepath);
if((f_in = fopen(buf,"r")) == NULL) if((f_in = fopen(buf,"r")) == NULL)
{ {
fprintf(stderr, "Can't read: %s\n", filepath);
return;
fprintf(log, "Can't read: %s\n", filepath);
return ENE_NOT_FOUND;
} }


while(fgets(buf,sizeof(phoneme),f_in) != NULL) while(fgets(buf,sizeof(phoneme),f_in) != NULL)
sprintf(buf,"%s/mbrola_ph/%s_phtrans",path_home,mbrola_voice); sprintf(buf,"%s/mbrola_ph/%s_phtrans",path_home,mbrola_voice);
if((f_out = fopen(buf,"wb")) == NULL) if((f_out = fopen(buf,"wb")) == NULL)
{ {
fprintf(stderr, "Can't write to: %s\n", buf);
return;
fprintf(log, "Can't write to: %s\n", buf);
return ENE_WRITE_FAILED;
} }


data[count].name = 0; // list terminator data[count].name = 0; // list terminator
Write4Bytes(f_out, *pw); Write4Bytes(f_out, *pw);
} }
fclose(f_out); fclose(f_out);
fprintf(stdout, "Mbrola translation file: %d phonemes", count);
fprintf(log, "Mbrola translation file: %s -- %d phonemes\n", buf, count);
return ENS_OK;
} }

Loading…
Cancel
Save