diff --git a/tts_samplegen.py b/tts_samplegen.py index e555553..8dbb9e0 100644 --- a/tts_samplegen.py +++ b/tts_samplegen.py @@ -11,7 +11,7 @@ import progressbar from generate_similar import similar_phoneme,similar_word -OUTPUT_NAME = 'story_words' +OUTPUT_NAME = 'rand_edu' dest_dir = os.path.abspath('.') + '/outputs/' + OUTPUT_NAME + '/' dest_file = './outputs/' + OUTPUT_NAME + '.csv' @@ -95,8 +95,7 @@ class SynthVariant(object): self.name = voice self.lang = lang self.phoneme_capable = self.is_phoneme_capable() - if self.phoneme_capable: - create_dir(dest_dir + self.name + '/' + str(self.rate)) + def __repr__(self): return 'Synthesizer[{} - {}]'.format(self.name, self.rate) @@ -128,6 +127,10 @@ class SynthVariant(object): cli_gen_audio(phon_cmd, self.rate, self.name, d_path) return SynthFile(word, phoneme, r_path, self.name, self.lang, self.rate, variant) + def create_synth_dirs(self): + if self.phoneme_capable: + create_dir(dest_dir + self.name + '/' + str(self.rate)) + @staticmethod def voices_for_lang(lang): voices_installed = NSSpeechSynthesizer.availableVoices() @@ -168,9 +171,10 @@ def synth_generator(): def synth_for_words(words, writer): prog_title = "Synthesizing {} words : ".format(len(words)) - (update, prog) = prog_bar(prog_title) for s in voice_synths: + s.create_synth_dirs() for v in ['low', 'medium', 'high']: + (update, prog) = prog_bar(prog_title) for w in prog(words): update('"{}" with {} variant ({})'.format(w, s, v)) synthed = s.generate_audio(w, v) @@ -209,13 +213,24 @@ def synth_logger(fname, csv=False): else: return json_writer, close_file +def generate_audio_for_text_list(text_list): + (writer, closer) = synth_logger(dest_file, csv=True) + synth_for_words = synth_generator() + try: + synth_for_words(text_list, writer) + except: + import traceback + import sys + traceback.print_exc(file=sys.stdout) + pass + closer() def generate_audio_for_stories(): - story_file = './inputs/all_stories_hs.json' - # story_file = './inputs/all_stories.json' + # story_file = './inputs/all_stories_hs.json' + story_file = './inputs/all_stories.json' stories_data = json.load(open(story_file)) - word_list = [t[0] for i in stories_data.values() for t in i] - # word_list = [i for g in stories_data.values() for i in g] + # word_list = [t[0] for i in stories_data.values() for t in i] + word_list = [i for g in stories_data.values() for i in g] (writer, closer) = synth_logger(dest_file, csv=True) synth_for_words = synth_generator() try: @@ -228,4 +243,5 @@ def generate_audio_for_stories(): closer() if __name__ == '__main__': - generate_audio_for_stories() + generate_audio_for_text_list(['random','education']) + # generate_audio_for_stories()