Spaces:
Runtime error
Runtime error
import os | |
import argparse | |
import json | |
import sys | |
sys.setrecursionlimit(500000) # Fix the error message of RecursionError: maximum recursion depth exceeded while calling a Python object. You can change the number as you want. | |
if __name__ == "__main__": | |
parser = argparse.ArgumentParser() | |
parser.add_argument("--add_auxiliary_data", type=bool, default="False", help="Whether to add extra data as fine-tuning helper") | |
parser.add_argument("--languages", default="C") | |
args = parser.parse_args() | |
if args.languages == "CJE": | |
langs = ["[ZH]", "[JA]", "[EN]"] | |
elif args.languages == "CJ": | |
langs = ["[ZH]", "[JA]"] | |
elif args.languages == "C": | |
langs = ["[ZH]"] | |
new_annos = [] | |
# Source 1: transcribed short audios | |
if os.path.exists("./filelists/short_character_anno.list"): | |
with open("./filelists/short_character_anno.list", 'r', encoding='utf-8') as f: | |
short_character_anno = f.readlines() | |
new_annos += short_character_anno | |
# Get all speaker names | |
speakers = [] | |
for line in new_annos: | |
path, speaker, text = line.split("|") | |
if speaker not in speakers: | |
speakers.append(speaker) | |
assert (len(speakers) != 0), "No audio file found. Please check your uploaded file structure." | |
if True: | |
# Do not add extra helper data | |
# STEP 1: modify config file | |
with open("./configs/finetune_speaker.json", 'r', encoding='utf-8') as f: | |
hps = json.load(f) | |
# assign ids to new speakers | |
speaker2id = {} | |
for i, speaker in enumerate(speakers): | |
speaker2id[speaker] = i | |
# modify n_speakers | |
hps['data']["n_speakers"] = len(speakers) | |
# overwrite speaker names | |
hps['speakers'] = speaker2id | |
hps['train']['log_interval'] = 10 | |
hps['train']['eval_interval'] = 100 | |
hps['train']['batch_size'] = 16 | |
hps['data']['training_files'] = "final_annotation_train.txt" | |
hps['data']['validation_files'] = "final_annotation_val.txt" | |
# save modified config | |
with open("./configs/modified_finetune_speaker.json", 'w', encoding='utf-8') as f: | |
json.dump(hps, f, indent=2) | |
# STEP 2: clean annotations, replace speaker names with assigned speaker IDs | |
import text | |
cleaned_new_annos = [] | |
for i, line in enumerate(new_annos): | |
path, speaker, txt = line.split("|") | |
if len(txt) > 150: | |
continue | |
cleaned_text = text._clean_text(txt, hps['data']['text_cleaners']).replace("[ZH]", "") | |
cleaned_text += "\n" if not cleaned_text.endswith("\n") else "" | |
cleaned_new_annos.append(path + "|" + cleaned_text) | |
final_annos = cleaned_new_annos | |
# save annotation file | |
with open("./filelists/final_annotation_train.txt", 'w', encoding='utf-8') as f: | |
for line in final_annos: | |
f.write(line) | |
# save annotation file for validation | |
with open("./filelists/final_annotation_val.txt", 'w', encoding='utf-8') as f: | |
for line in cleaned_new_annos: | |
f.write(line) | |
print("finished") | |