diff --git a/mkdictlist b/mkdictlist deleted file mode 100755 index f3d1c358..00000000 --- a/mkdictlist +++ /dev/null @@ -1,141 +0,0 @@ -#!/usr/bin/python -# -# Copyright (C) 2011 Reece H. Dunn -# Licence: GPLv3 -# -# A script for generating the dictionary Makefile rules from the files in dictsource. - -import sys -import os - -voices = set() -dictionaries = {} -phoneme_data = set() -mbrola = set() - -# Map voice names to dictionaries when these do not match. -special_voices = { - 'bs': 'hbs', - 'hr': 'hbs', - 'zh-yue': 'zhy', -} - -# Support for extended dictionaries. -extended_dictionaries = { - 'ru': 'ru_listx', - 'zh': 'zh_listx', - 'zhy': 'zhy_list', -} - -exclude_voices = [] - -def find_voices(path): - for filename in os.listdir(path): - voice_path = os.path.join(path, filename) - if os.path.isdir(voice_path): - if not filename in ['!v', 'mb']: - find_voices(voice_path) - else: - if filename in special_voices.keys(): - voices.add(special_voices[filename]) - elif filename not in exclude_voices: - voices.add(filename) - -def find_phoneme_data(path): - for filename in os.listdir(path): - phondata_path = os.path.join(path, filename) - 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']: - dic, cat = filename.split('_') - if dic in voices: - if not dic in dictionaries.keys(): - dictionaries[dic] = [] - dictionaries[dic].append('dictsource/%s' % filename) - -def write_phoneme_data_rules(f): - f.write('##### phoneme data:\n') - f.write('\n') - f.write('espeak-data/phondata: phsource/phonemes.stamp\n') - f.write('espeak-data/phondata-manifest: phsource/phonemes.stamp\n') - f.write('espeak-data/phonindex: phsource/phonemes.stamp\n') - f.write('espeak-data/phontab: phsource/phonemes.stamp\n') - f.write('espeak-data/intonations: phsource/phonemes.stamp\n') - f.write('\n') - f.write('phsource/phonemes.stamp: \\\n') - for phonfile in sorted(phoneme_data): - f.write('\t%s \\\n' % phonfile) - f.write('\tphsource/phonemes \\\n') - f.write('\tsrc/espeakedit\n') - f.write('\tESPEAK_DATA_PATH=$(PWD) src/espeakedit --compile && touch $@\n') - f.write('\n') - -def write_dictionary_make_rules(f): - f.write('##### dictionaries:\n') - f.write('\n') - f.write('dictionaries: \\\n') - for n, name in enumerate(sorted(dictionaries.keys())): - if not name in ['bo']: # espeak fails to read these voices - if n == len(dictionaries.keys()) - 1: - f.write('\tespeak-data/%s_dict\n' % name) - else: - f.write('\tespeak-data/%s_dict \\\n' % name) - for name, files in sorted(dictionaries.items()): - f.write('\n') - f.write('%s: espeak-data/%s_dict\n' % (name, name)) - f.write('dictsource/%s_extra:\n' % name) - f.write('\ttouch dictsource/%s_extra\n' % name) - if name in extended_dictionaries.keys(): - ext = extended_dictionaries[name] - f.write('dictsource/%s:\n' % ext) - f.write('\tln -svf extra/%s dictsource/\n' % ext) - f.write('if HAVE_%s_EXTENDED_DICTIONARY\n' % name.upper()) - f.write('espeak-data/%s_dict: src/espeak phsource/phonemes.stamp %s dictsource/%s_extra dictsource/%s\n' % (name, ' '.join(sorted(files)), name, ext)) - f.write('else\n') - f.write('espeak-data/%s_dict: src/espeak-ng phsource/phonemes.stamp %s dictsource/%s_extra\n' % (name, ' '.join(sorted(files)), name)) - if name in extended_dictionaries.keys(): - f.write('endif\n') - f.write('\tcd dictsource && ESPEAK_DATA_PATH=$(PWD) LD_LIBRARY_PATH=../src:${LD_LIBRARY_PATH} ../src/espeak-ng --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: - filename = None - -if filename: - with open(filename, 'r') as f: - prelude = f.read().split('##### phoneme data:\n')[0] - with open(filename, 'w') as f: - 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)