supported auxiliary data for CJ model

This commit is contained in:
Plachta
2023-03-06 21:00:40 +08:00
parent bbe2638855
commit 5093ba0b9a
2 changed files with 32 additions and 8 deletions
+1 -1
View File
@@ -79,7 +79,7 @@ def run(rank, n_gpus, hps):
rank=rank,
shuffle=True)
collate_fn = TextAudioSpeakerCollate()
train_loader = DataLoader(train_dataset, num_workers=2, shuffle=False, pin_memory=True,
train_loader = DataLoader(train_dataset, num_workers=8, shuffle=False, pin_memory=True,
collate_fn=collate_fn, batch_sampler=train_sampler)
# train_loader = DataLoader(train_dataset, batch_size=hps.train.batch_size, num_workers=2, shuffle=False, pin_memory=True,
# collate_fn=collate_fn)
+31 -7
View File
@@ -4,8 +4,14 @@ import json
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--add_auxiliary_data", type=bool, help="Whether to add extra data as fine-tuning helper")
parser.add_argument("--languages", default="CJE")
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("short_character_anno.txt"):
@@ -29,6 +35,17 @@ if __name__ == "__main__":
if args.add_auxiliary_data:
with open("sampled_audio4ft.txt", 'r', encoding='utf-8') as f:
old_annos = f.readlines()
# filter old_annos according to supported languages
filtered_old_annos = []
for line in old_annos:
for lang in langs:
if lang in line:
filtered_old_annos.append(line)
old_annos = filtered_old_annos
for line in old_annos:
path, speaker, text = line.split("|")
if speaker not in speakers:
speakers.append(speaker)
num_old_voices = len(old_annos)
num_new_voices = len(new_annos)
# STEP 1: balance number of new & old voices
@@ -44,12 +61,11 @@ if __name__ == "__main__":
# assign ids to new speakers
speaker2id = {}
for i, speaker in enumerate(speakers):
speaker2id[speaker] = hps['data']["n_speakers"] + i
speaker2id[speaker] = i
# modify n_speakers
hps['data']["n_speakers"] = hps['data']["n_speakers"] + len(speakers)
# add speaker names
for speaker in speakers:
hps['speakers'][speaker] = speaker2id[speaker]
hps['data']["n_speakers"] = len(speakers)
# overwrite speaker names
hps['speakers'] = speaker2id
hps['train']['log_interval'] = 100
hps['train']['eval_interval'] = 1000
hps['train']['batch_size'] = 16
@@ -69,8 +85,16 @@ if __name__ == "__main__":
cleaned_text = text._clean_text(txt, hps['data']['text_cleaners'])
cleaned_text += "\n" if not cleaned_text.endswith("\n") else ""
cleaned_new_annos.append(path + "|" + str(speaker2id[speaker]) + "|" + cleaned_text)
cleaned_old_annos = []
for i, line in enumerate(old_annos):
path, speaker, txt = line.split("|")
if len(txt) > 150:
continue
cleaned_text = text._clean_text(txt, hps['data']['text_cleaners'])
cleaned_text += "\n" if not cleaned_text.endswith("\n") else ""
cleaned_old_annos.append(path + "|" + str(speaker2id[speaker]) + "|" + cleaned_text)
# merge with old annotation
final_annos = old_annos + cc_duplicate * cleaned_new_annos
final_annos = cleaned_old_annos + cc_duplicate * cleaned_new_annos
# save annotation file
with open("final_annotation_train.txt", 'w', encoding='utf-8') as f:
for line in final_annos: