autotools: support building the mbrola phtrans files

This commit is contained in:
Reece H. Dunn
2014-08-14 10:44:18 +01:00
parent 560b214623
commit 55b2e01a6c
43 changed files with 233 additions and 5 deletions
+1
View File
@@ -76,6 +76,7 @@ espeak-data/config
espeak-data/dictsource
espeak-data/phsource
espeak-data/*_dict
espeak-data/mbrola_ph/*_phtrans
espeak-data/intonations
espeak-data/phondata
espeak-data/phondata-manifest
+186 -1
View File
@@ -33,7 +33,8 @@ EXTRA_DIST += ChangeLog
all-local: \
espeak-data/phontab \
docs/speak_lib.h \
dictionaries
dictionaries \
mbrola
uninstall-hook:
rm -rf $(DESTDIR)$(DATADIR)
@@ -797,3 +798,187 @@ else
espeak-data/zhy_dict: src/espeak phsource/phonemes.stamp dictsource/zhy_rules dictsource/zhy_extra
endif
cd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=zhy && cd ..
##### mbrola:
mbrola: \
espeak-data/mbrola_ph/af1_phtrans \
espeak-data/mbrola_ph/cr1_phtrans \
espeak-data/mbrola_ph/cs_phtrans \
espeak-data/mbrola_ph/de2_phtrans \
espeak-data/mbrola_ph/de4_phtrans \
espeak-data/mbrola_ph/de6_phtrans \
espeak-data/mbrola_ph/ee1_phtrans \
espeak-data/mbrola_ph/en1_phtrans \
espeak-data/mbrola_ph/es_phtrans \
espeak-data/mbrola_ph/fr1_phtrans \
espeak-data/mbrola_ph/gr2_phtrans \
espeak-data/mbrola_ph/grc-de6_phtrans \
espeak-data/mbrola_ph/hn1_phtrans \
espeak-data/mbrola_ph/hu1_phtrans \
espeak-data/mbrola_ph/ic1_phtrans \
espeak-data/mbrola_ph/id1_phtrans \
espeak-data/mbrola_ph/in1_phtrans \
espeak-data/mbrola_ph/ir1_phtrans \
espeak-data/mbrola_ph/it3_phtrans \
espeak-data/mbrola_ph/la1_phtrans \
espeak-data/mbrola_ph/lt1_phtrans \
espeak-data/mbrola_ph/lt2_phtrans \
espeak-data/mbrola_ph/mx1_phtrans \
espeak-data/mbrola_ph/mx2_phtrans \
espeak-data/mbrola_ph/nl_phtrans \
espeak-data/mbrola_ph/pl1_phtrans \
espeak-data/mbrola_ph/pt1_phtrans \
espeak-data/mbrola_ph/ptbr_phtrans \
espeak-data/mbrola_ph/ptbr4_phtrans \
espeak-data/mbrola_ph/ro1_phtrans \
espeak-data/mbrola_ph/sv_phtrans \
espeak-data/mbrola_ph/sv2_phtrans \
espeak-data/mbrola_ph/tr1_phtrans \
espeak-data/mbrola_ph/us_phtrans \
espeak-data/mbrola_ph/us3_phtrans \
espeak-data/mbrola_ph/vz_phtrans
espeak-data/mbrola_ph/af1_phtrans: phsource/mbrola/af1 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<
espeak-data/mbrola_ph/cr1_phtrans: phsource/mbrola/cr1 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<
espeak-data/mbrola_ph/cs_phtrans: phsource/mbrola/cs src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<
espeak-data/mbrola_ph/de2_phtrans: phsource/mbrola/de2 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<
espeak-data/mbrola_ph/de4_phtrans: phsource/mbrola/de4 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<
espeak-data/mbrola_ph/de6_phtrans: phsource/mbrola/de6 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<
espeak-data/mbrola_ph/ee1_phtrans: phsource/mbrola/ee1 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<
espeak-data/mbrola_ph/en1_phtrans: phsource/mbrola/en1 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<
espeak-data/mbrola_ph/es_phtrans: phsource/mbrola/es src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<
espeak-data/mbrola_ph/fr1_phtrans: phsource/mbrola/fr1 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<
espeak-data/mbrola_ph/gr2_phtrans: phsource/mbrola/gr2 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<
espeak-data/mbrola_ph/grc-de6_phtrans: phsource/mbrola/grc-de6 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<
espeak-data/mbrola_ph/hn1_phtrans: phsource/mbrola/hn1 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<
espeak-data/mbrola_ph/hu1_phtrans: phsource/mbrola/hu1 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<
espeak-data/mbrola_ph/ic1_phtrans: phsource/mbrola/ic1 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<
espeak-data/mbrola_ph/id1_phtrans: phsource/mbrola/id1 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<
espeak-data/mbrola_ph/in1_phtrans: phsource/mbrola/in1 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<
espeak-data/mbrola_ph/ir1_phtrans: phsource/mbrola/ir1 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<
espeak-data/mbrola_ph/it3_phtrans: phsource/mbrola/it3 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<
espeak-data/mbrola_ph/la1_phtrans: phsource/mbrola/la1 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<
espeak-data/mbrola_ph/lt1_phtrans: phsource/mbrola/lt1 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<
espeak-data/mbrola_ph/lt2_phtrans: phsource/mbrola/lt2 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<
espeak-data/mbrola_ph/mx1_phtrans: phsource/mbrola/mx1 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<
espeak-data/mbrola_ph/mx2_phtrans: phsource/mbrola/mx2 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<
espeak-data/mbrola_ph/nl_phtrans: phsource/mbrola/nl src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<
espeak-data/mbrola_ph/pl1_phtrans: phsource/mbrola/pl1 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<
espeak-data/mbrola_ph/pt1_phtrans: phsource/mbrola/pt1 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<
espeak-data/mbrola_ph/ptbr_phtrans: phsource/mbrola/ptbr src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<
espeak-data/mbrola_ph/ptbr4_phtrans: phsource/mbrola/ptbr4 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<
espeak-data/mbrola_ph/ro1_phtrans: phsource/mbrola/ro1 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<
espeak-data/mbrola_ph/sv_phtrans: phsource/mbrola/sv src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<
espeak-data/mbrola_ph/sv2_phtrans: phsource/mbrola/sv2 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<
espeak-data/mbrola_ph/tr1_phtrans: phsource/mbrola/tr1 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<
espeak-data/mbrola_ph/us_phtrans: phsource/mbrola/us src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<
espeak-data/mbrola_ph/us3_phtrans: phsource/mbrola/us3 src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<
espeak-data/mbrola_ph/vz_phtrans: phsource/mbrola/vz src/espeakedit
mkdir -p espeak-data/mbrola_ph
ESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+23
View File
@@ -11,6 +11,7 @@ import os
voices = set()
dictionaries = {}
phoneme_data = set()
mbrola = set()
# Map voice names to dictionaries when these do not match.
special_voices = {
@@ -46,8 +47,13 @@ def find_phoneme_data(path):
if filename.startswith('ph_'):
phoneme_data.add(phondata_path)
def find_mbrola_voices(path):
for filename in os.listdir(path):
mbrola.add(filename)
find_voices('espeak-data/voices')
find_phoneme_data('phsource')
find_mbrola_voices('phsource/mbrola')
for filename in os.listdir('dictsource'):
if filename.endswith('_rules') or filename.endswith('_list') or filename in ['bg_listx', 'it_listx']:
@@ -101,6 +107,21 @@ def write_dictionary_make_rules(f):
f.write('endif\n')
f.write('\tcd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak --compile=%s && cd ..\n' % name)
def write_mbrola_make_rules(f):
f.write('\n##### mbrola:\n')
f.write('\n')
f.write('mbrola: \\\n')
for n, name in enumerate(sorted(mbrola)):
if n == len(mbrola) - 1:
f.write('\tespeak-data/mbrola_ph/%s_phtrans\n' % name)
else:
f.write('\tespeak-data/mbrola_ph/%s_phtrans \\\n' % name)
for name in sorted(mbrola):
f.write('\n')
f.write('espeak-data/mbrola_ph/%s_phtrans: phsource/mbrola/%s src/espeakedit\n' % (name, name))
f.write('\tmkdir -p espeak-data/mbrola_ph\n')
f.write('\tESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile-mbrola ${PWD}/$<\n')
try:
filename = sys.argv[1]
except:
@@ -113,6 +134,8 @@ if filename:
f.write(prelude)
write_phoneme_data_rules(f)
write_dictionary_make_rules(f)
write_mbrola_make_rules(f)
else:
write_phoneme_data_rules(sys.stdout)
write_dictionary_make_rules(sys.stdout)
write_mbrola_make_rules(sys.stdout)
+11 -3
View File
@@ -3747,9 +3747,9 @@ fprintf(f_errors,"\nRefs %d, Reused %d\n",count_references,duplicate_references
ReadPhondataManifest();
} // end of CompilePhonemeData
#include <errno.h>
void CompileMbrola()
void CompileMbrola(const char *mbrola_file)
{//=================
char *p;
FILE *f_in;
@@ -3769,7 +3769,15 @@ void CompileMbrola()
int mbrola_ctrl = 20; // volume in 1/16 ths
MBROLA_TAB data[N_PHONEME_TAB];
wxString filepath = wxFileSelector(_T("Read Mbrola phonemes file"),path_phsource+_T("/mbrola"),_T(""),_T(""),_T("*"),wxOPEN);
wxString filepath;
if (mbrola_file == NULL)
{
filepath = wxFileSelector(_T("Read Mbrola phonemes file"),path_phsource+_T("/mbrola"),_T(""),_T(""),_T("*"),wxOPEN);
}
else
{
filepath = mbrola_file;
}
strcpy(buf,filepath.mb_str(wxConvLocal));
if((f_in = fopen(buf,"r")) == NULL)
{
+12 -1
View File
@@ -63,7 +63,7 @@ extern void DictionarySort(const char *dictname);
extern void init_z();
extern void CompilePhonemeData(void);
extern void CompileSampleRate(void);
extern void CompileMbrola();
extern void CompileMbrola(const char *mbrola_file = NULL);
extern void CompileIntonation();
extern void InitSpectrumDisplay();
extern void InitProsodyDisplay();
@@ -148,6 +148,17 @@ if(argc > 1)
CompilePhonemeData();
CompileIntonation();
}
else if(argc > 2 && strcmp(param,"--compile-mbrola")==0)
{
samplerate_native = samplerate = 22050;
LoadPhData(NULL);
if(LoadVoice("", 0) == NULL)
{
fprintf(stderr, "Failed to load default voice\n");
exit(1);
}
CompileMbrola(argv[2]);
}
exit(0);
}