writing to csv proactively

master
Malar Kannan 2017-10-26 15:58:25 +05:30
parent 05f36daf7e
commit 7a520b79f4
1 changed files with 47 additions and 14 deletions

View File

@ -35,7 +35,8 @@ def dest_filename(w, v, r, t):
def dest_path(v, r, n):
return dest_dir + v + '/' + str(r) + '/' + n
rel = v + '/' + str(r) + '/' + n
return (dest_dir + rel), rels
def cli_gen_audio(speech_cmd, rate, voice, out_path):
@ -65,7 +66,7 @@ class SynthFile(object):
}
def get_csv(self):
return '{},{},{},{},{}\n'.format(self.word, self.phoneme, self.voice,
return '{},{},{},{},{},{}\n'.format(self.word, self.phoneme, self.voice,
self.rate, self.variant,
self.filename)
@ -111,10 +112,10 @@ class SynthVariant(object):
# else:
# self.synth.startSpeakingString_toURL_(word,d_url)
fname = dest_filename(word, self.name, self.rate, variant)
d_path = dest_path(self.name, self.rate, fname)
d_path, r_path = dest_path(self.name, self.rate, fname)
# d_url = NSURL.fileURLWithPath_(d_path)
cli_gen_audio(phon_cmd, self.rate, self.name, d_path)
return SynthFile(word, phoneme, fname, self.name, self.rate, variant)
return SynthFile(word, phoneme, r_path, self.name, self.rate, variant)
def synth_generator():
@ -154,16 +155,18 @@ def synth_generator():
print('Created ', s)
voice_synths.append(s)
def synth_for_words(words):
all_synths = []
def synth_for_words(words, writer):
# all_synths = []
prog_title = "Synthesizing {} words, current word".format(len(words))
(update, prog) = prog_bar(prog_title)
for w in prog(words):
for s in voice_synths:
for v in ['low', 'medium', 'high']:
update('"{}" with {} variant ({})'.format(w, s, v))
all_synths.append(s.generate_audio(w, v))
return all_synths
synthed = s.generate_audio(w, v)
writer(synthed)
# all_synths.append(synthed)
# return all_synths
return synth_for_words
@ -178,14 +181,44 @@ def write_synths(synth_list, fname, csv=False):
f.close()
def synth_logger(fname, csv=False):
f = open(fname, 'w')
def csv_writer(s):
f.write(s.get_csv())
synth_list = []
def json_writer(s):
synth_list.append(s)
def close_file():
if csv:
f.close()
else:
json.dump([s.get_json() for s in synth_list], f)
f.close()
if csv:
return csv_writer, close_file
else:
return json_writer, close_file
def generate_audio_for_stories():
# 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]
words_audio_synth = synth_generator()
return words_audio_synth(word_list)
(writer, closer) = synth_logger(dest_file, csv=True)
synth_for_words = synth_generator()
try:
synth_for_words(word_list, writer)
except:
import traceback
import sys
traceback.print_exc(file=sys.stdout)
pass
closer()
# words_audio_synth = synth_generator()
# synth = NSSpeechSynthesizer.alloc().init()
@ -200,6 +233,6 @@ def generate_audio_for_stories():
# synths = synth_generator()([OUTPUT_NAME])
synths = generate_audio_for_stories()
write_synths(synths, dest_file, True)
generate_audio_for_stories()
# write_synths(synths, dest_file, True)
# write_synths(synths,'./outputs/synths.json')