import glob import os import random import torch # HELPER FUNCTIONS def split_dictionary_into_chunks(input_dict, split_n): res = [] new_dict = {} elements_per_dict = (len(input_dict.keys()) // split_n) + 1 for k, v in input_dict.items(): if len(new_dict) < elements_per_dict: new_dict[k] = v else: res.append(new_dict) new_dict = {k: v} res.append(new_dict) return res def limit_to_n(path_to_transcript_dict, n=40000): # deprecated, we now just use the whole thing always, because there's a critical mass of data limited_dict = dict() if len(path_to_transcript_dict.keys()) > n: for key in random.sample(list(path_to_transcript_dict.keys()), n): limited_dict[key] = path_to_transcript_dict[key] return limited_dict else: return path_to_transcript_dict def build_path_to_transcript_dict_multi_ling_librispeech_template(root): """ https://arxiv.org/abs/2012.03411 """ path_to_transcript = dict() with open(os.path.join(root, "transcripts.txt"), "r", encoding="utf8") as file: lookup = file.read() for line in lookup.split("\n"): if line.strip() != "": fields = line.split("\t") wav_folders = fields[0].split("_") wav_path = ( f"{root}/audio/{wav_folders[0]}/{wav_folders[1]}/{fields[0]}.flac" ) path_to_transcript[wav_path] = fields[1] return path_to_transcript def build_path_to_transcript_dict_hui_template(root): """ https://arxiv.org/abs/2106.06309 """ path_to_transcript = dict() for el in os.listdir(root): if os.path.isdir(os.path.join(root, el)): with open( os.path.join(root, el, "metadata.csv"), "r", encoding="utf8" ) as file: lookup = file.read() for line in lookup.split("\n"): if line.strip() != "": norm_transcript = line.split("|")[1] wav_path = os.path.join( root, el, "wavs", line.split("|")[0] + ".wav" ) if os.path.exists(wav_path): path_to_transcript[wav_path] = norm_transcript return path_to_transcript # ENGLISH def build_path_to_transcript_dict_mls_english(re_cache=False): lang = "english" root = f"/mount/resources/speech/corpora/MultiLingLibriSpeech/mls_{lang}/train" cache_path = f"/mount/resources/speech/corpora/MultiLingLibriSpeech/mls_{lang}/train/pttd_cache.pt" if not os.path.exists(cache_path) or re_cache: path_to_transcript = ( build_path_to_transcript_dict_multi_ling_librispeech_template(root=root) ) torch.save(path_to_transcript, cache_path) return torch.load(cache_path) def build_path_to_transcript_dict_gigaspeech(re_cache=False): root = "/mount/resources/speech/corpora/GigaSpeech/" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = dict() with open( os.path.join(root, "transcripts_only_clean_samples.txt"), "r", encoding="utf8", ) as file: lookup = file.read() for line in lookup.split("\n"): if line.strip() != "": fields = line.split("\t") norm_transcript = fields[1] wav_path = fields[0] path_to_transcript[wav_path] = norm_transcript torch.save(path_to_transcript, cache_path) return torch.load(cache_path) def build_path_to_transcript_dict_elizabeth(re_cache=False): root = "/mount/resources/speech/corpora/MAILabs_british_single_speaker_elizabeth" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = dict() for el in os.listdir(root): if os.path.isdir(os.path.join(root, el)): with open( os.path.join(root, el, "metadata.csv"), "r", encoding="utf8" ) as file: lookup = file.read() for line in lookup.split("\n"): if line.strip() != "": norm_transcript = line.split("|")[2] wav_path = os.path.join( root, el, "wavs", line.split("|")[0] + ".wav" ) if os.path.exists(wav_path): path_to_transcript[wav_path] = norm_transcript torch.save(path_to_transcript, cache_path) return torch.load(cache_path) def build_path_to_transcript_dict_nancy(re_cache=False): root = "/mount/resources/speech/corpora/NancyKrebs" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = dict() with open(os.path.join(root, "metadata.csv"), "r", encoding="utf8") as file: lookup = file.read() for line in lookup.split("\n"): if line.strip() != "": norm_transcript = line.split("|")[1] wav_path = os.path.join(root, "wav", line.split("|")[0] + ".wav") if os.path.exists(wav_path): path_to_transcript[wav_path] = norm_transcript torch.save(path_to_transcript, cache_path) return torch.load(cache_path) def build_path_to_transcript_dict_integration_test(re_cache=True): root = "/mount/resources/speech/corpora/NancyKrebs" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = dict() with open(os.path.join(root, "metadata.csv"), "r", encoding="utf8") as file: lookup = file.read() for line in lookup.split("\n")[:500]: if line.strip() != "": norm_transcript = line.split("|")[1] wav_path = os.path.join(root, "wav", line.split("|")[0] + ".wav") if os.path.exists(wav_path): path_to_transcript[wav_path] = norm_transcript torch.save(path_to_transcript, cache_path) return torch.load(cache_path) def build_path_to_transcript_dict_CREMA_D(re_cache=False): root = "/mount/resources/speech/corpora/CREMA_D/" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: identifier_to_sent = { "IEO": "It's eleven o'clock.", "TIE": "That is exactly what happened.", "IOM": "I'm on my way to the meeting.", "IWW": "I wonder what this is about.", "TAI": "The airplane is almost full.", "MTI": "Maybe tomorrow it will be cold.", "IWL": "I would like a new alarm clock.", "ITH": "I think, I have a doctor's appointment.", "DFA": "Don't forget a jacket.", "ITS": "I think, I've seen this before.", "TSI": "The surface is slick.", "WSI": "We'll stop in a couple of minutes.", } path_to_transcript = dict() for file in os.listdir(root): if file.endswith(".wav"): path_to_transcript[root + file] = identifier_to_sent[file.split("_")[1]] torch.save(path_to_transcript, cache_path) return torch.load(cache_path) def build_path_to_transcript_dict_EmoV_DB(re_cache=False): root = "/mount/resources/speech/corpora/EmoV_DB/" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = dict() with open(os.path.join(root, "labels.txt"), "r", encoding="utf8") as file: lookup = file.read() identifier_to_sent = dict() for line in lookup.split("\n"): if line.strip() != "": identifier_to_sent[line.split()[0]] = " ".join(line.split()[1:]) for file in os.listdir(root): if file.endswith(".wav"): path_to_transcript[root + file] = identifier_to_sent[file[-14:-10]] torch.save(path_to_transcript, cache_path) return torch.load(cache_path) def build_path_to_transcript_dict_ryanspeech(re_cache=False): root = "/mount/resources/speech/corpora/RyanSpeech" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript_dict = dict() with open(root + "/metadata.csv", mode="r", encoding="utf8") as f: transcripts = f.read().split("\n") for transcript in transcripts: if transcript.strip() != "": parsed_line = transcript.split("|") audio_file = f"{root}/wavs/{parsed_line[0]}.wav" path_to_transcript_dict[audio_file] = parsed_line[2] torch.save(path_to_transcript_dict, cache_path) return torch.load(cache_path) def build_path_to_transcript_dict_RAVDESS(re_cache=False): root = "/mount/resources/speech/corpora/RAVDESS" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript_dict = dict() for speaker_dir in os.listdir(root): for audio_file in os.listdir(os.path.join(root, speaker_dir)): if audio_file.split("-")[4] == "01": path_to_transcript_dict[ os.path.join(root, speaker_dir, audio_file) ] = "Kids are talking by the door." else: path_to_transcript_dict[ os.path.join(root, speaker_dir, audio_file) ] = "Dogs are sitting by the door." torch.save(path_to_transcript_dict, cache_path) return torch.load(cache_path) def build_path_to_transcript_dict_ESDS(re_cache=False): root = "/mount/resources/speech/corpora/Emotional_Speech_Dataset_Singapore" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript_dict = dict() for speaker_dir in os.listdir(root): if speaker_dir.startswith("00"): if int(speaker_dir) > 10: with open( f"{root}/{speaker_dir}/fixed_unicode.txt", mode="r", encoding="utf8", ) as f: transcripts = f.read() for line in ( transcripts.replace("\n\n", "\n").replace(",", ", ").split("\n") ): if line.strip() != "": filename, text, emo_dir = line.split("\t") filename = speaker_dir + "_" + filename.split("_")[1] path_to_transcript_dict[ f"{root}/{speaker_dir}/{emo_dir}/{filename}.wav" ] = text torch.save(path_to_transcript_dict, cache_path) return torch.load(cache_path) def build_path_to_transcript_dict_nvidia_hifitts(re_cache=False): root = "/mount/resources/speech/corpora/hi_fi_tts_v0" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = dict() transcripts = list() import json for jpath in [ f"{root}/6097_manifest_clean_dev.json", f"{root}/6097_manifest_clean_test.json", f"{root}/6097_manifest_clean_train.json", f"{root}/9017_manifest_clean_dev.json", f"{root}/9017_manifest_clean_test.json", f"{root}/9017_manifest_clean_train.json", f"{root}/92_manifest_clean_dev.json", f"{root}/92_manifest_clean_test.json", f"{root}/92_manifest_clean_train.json", ]: with open(jpath, encoding="utf-8", mode="r") as jfile: for line in jfile.read().split("\n"): if line.strip() != "": transcripts.append(json.loads(line)) for transcript in transcripts: path = transcript["audio_filepath"] norm_text = transcript["text_normalized"] path_to_transcript[f"{root}/{path}"] = norm_text torch.save(path_to_transcript, cache_path) return torch.load(cache_path) def build_path_to_transcript_dict_blizzard_2013(re_cache=False): root = "/mount/resources/speech/corpora/Blizzard2013/train/segmented/" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = dict() with open(root + "prompts.gui", encoding="utf8") as f: transcriptions = f.read() blocks = transcriptions.split("||\n") for block in blocks: trans_lines = block.split("\n") if trans_lines[0].strip() != "": transcript = ( trans_lines[1] .replace("@", "") .replace("#", ",") .replace("|", "") .replace(";", ",") .replace(":", ",") .replace(" 's", "'s") .replace(", ,", ",") .replace(" ", " ") .replace(" ,", ",") .replace(" .", ".") .replace(" ?", "?") .replace(" !", "!") .rstrip(" ,") ) path_to_transcript[root + "wavn/" + trans_lines[0] + ".wav"] = ( transcript ) torch.save(path_to_transcript, cache_path) return torch.load(cache_path) def build_path_to_transcript_dict_vctk(re_cache=False): root = "/mount/resources/speech/corpora/VCTK" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = dict() for transcript_dir in os.listdir("/mount/resources/speech/corpora/VCTK/txt"): for transcript_file in os.listdir( f"/mount/resources/speech/corpora/VCTK/txt/{transcript_dir}" ): if transcript_file.endswith(".txt"): with open( f"/mount/resources/speech/corpora/VCTK/txt/{transcript_dir}/" + transcript_file, "r", encoding="utf8", ) as tf: transcript = tf.read() wav_path = ( f"/mount/resources/speech/corpora/VCTK/wav48_silence_trimmed/{transcript_dir}/" + transcript_file.rstrip(".txt") + "_mic2.flac" ) if os.path.exists(wav_path): path_to_transcript[wav_path] = transcript torch.save(path_to_transcript, cache_path) return torch.load(cache_path) def build_path_to_transcript_dict_libritts_all_clean(re_cache=False): root = "/mount/resources/speech/corpora/LibriTTS_R/" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_train = "/mount/resources/speech/corpora/LibriTTS_R/" # using all files from the "clean" subsets from LibriTTS-R https://arxiv.org/abs/2305.18802 path_to_transcript = dict() for speaker in os.listdir(path_train): for chapter in os.listdir(os.path.join(path_train, speaker)): for file in os.listdir(os.path.join(path_train, speaker, chapter)): if file.endswith("normalized.txt"): with open( os.path.join(path_train, speaker, chapter, file), "r", encoding="utf8", ) as tf: transcript = tf.read() wav_file = file.split(".")[0] + ".wav" path_to_transcript[ os.path.join(path_train, speaker, chapter, wav_file) ] = transcript torch.save(path_to_transcript, cache_path) return torch.load(cache_path) def build_path_to_transcript_dict_libritts_other500(re_cache=False): root = "/mount/resources/asr-data/LibriTTS/train-other-500" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_train = "/mount/resources/asr-data/LibriTTS/train-other-500" path_to_transcript = dict() for speaker in os.listdir(path_train): for chapter in os.listdir(os.path.join(path_train, speaker)): for file in os.listdir(os.path.join(path_train, speaker, chapter)): if file.endswith("normalized.txt"): with open( os.path.join(path_train, speaker, chapter, file), "r", encoding="utf8", ) as tf: transcript = tf.read() wav_file = file.split(".")[0] + ".wav" path_to_transcript[ os.path.join(path_train, speaker, chapter, wav_file) ] = transcript torch.save(path_to_transcript, cache_path) return torch.load(cache_path) def build_path_to_transcript_dict_ljspeech(re_cache=False): root = "/mount/resources/speech/corpora/LJSpeech/" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = dict() for transcript_file in os.listdir( "/mount/resources/speech/corpora/LJSpeech/16kHz/txt" ): with open( "/mount/resources/speech/corpora/LJSpeech/16kHz/txt/" + transcript_file, "r", encoding="utf8", ) as tf: transcript = tf.read() wav_path = ( "/mount/resources/speech/corpora/LJSpeech/16kHz/wav/" + transcript_file.rstrip(".txt") + ".wav" ) path_to_transcript[wav_path] = transcript torch.save(path_to_transcript, cache_path) return torch.load(cache_path) def build_path_to_transcript_dict_jenny(re_cache=False): """ https://www.kaggle.com/datasets/noml4u/jenny-tts-dataset https://github.com/dioco-group/jenny-tts-dataset Dataset of Speaker Jenny (Dioco) with an Irish accent """ root = "/mount/resources/speech/corpora/Jenny/" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = dict() with open( "/mount/resources/speech/corpora/Jenny/metadata.csv", encoding="utf8" ) as f: transcriptions = f.read() trans_lines = transcriptions.split("\n") for line in trans_lines: if line.strip() != "": path_to_transcript[ "/mount/resources/speech/corpora/Jenny/" + line.split("|")[0] + "_silence.flac" ] = line.split("|")[1] torch.save(path_to_transcript, cache_path) return torch.load(cache_path) # GERMAN def build_path_to_transcript_dict_mls_german(re_cache=False): lang = "german" root = f"/mount/resources/speech/corpora/MultiLingLibriSpeech/mls_{lang}/train" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = ( build_path_to_transcript_dict_multi_ling_librispeech_template(root=root) ) torch.save(path_to_transcript, cache_path) return torch.load(cache_path) def build_path_to_transcript_dict_karlsson(re_cache=False): root = "/mount/resources/speech/corpora/HUI_German/Karlsson" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = build_path_to_transcript_dict_hui_template(root=root) torch.save(path_to_transcript, cache_path) return torch.load(cache_path) def build_path_to_transcript_dict_eva(re_cache=False): root = "/mount/resources/speech/corpora/HUI_German/Eva" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = build_path_to_transcript_dict_hui_template(root=root) torch.save(path_to_transcript, cache_path) return torch.load(cache_path) def build_path_to_transcript_dict_bernd(re_cache=False): root = "/mount/resources/speech/corpora/HUI_German/Bernd" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = build_path_to_transcript_dict_hui_template(root=root) torch.save(path_to_transcript, cache_path) return torch.load(cache_path) def build_path_to_transcript_dict_friedrich(re_cache=False): root = "/mount/resources/speech/corpora/HUI_German/Friedrich" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = build_path_to_transcript_dict_hui_template(root=root) torch.save(path_to_transcript, cache_path) return torch.load(cache_path) def build_path_to_transcript_dict_hokus(re_cache=False): root = "/mount/resources/speech/corpora/HUI_German/Hokus" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = build_path_to_transcript_dict_hui_template(root=root) torch.save(path_to_transcript, cache_path) return torch.load(cache_path) def build_path_to_transcript_dict_hui_others(re_cache=False): root = "/mount/resources/speech/corpora/HUI_German/others" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: pttd = dict() for speaker in os.listdir(root): pttd.update( build_path_to_transcript_dict_hui_template(root=f"{root}/{speaker}") ) torch.save(pttd, cache_path) return torch.load(cache_path) def build_path_to_transcript_dict_thorsten_neutral(re_cache=False): root = "/mount/resources/speech/corpora/ThorstenDatasets/thorsten-de_v03" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = dict() with open(root + "/metadata_train.csv", encoding="utf8") as f: transcriptions = f.read() with open(root + "/metadata_val.csv", encoding="utf8") as f: transcriptions += "\n" + f.read() trans_lines = transcriptions.split("\n") for line in trans_lines: if line.strip() != "": path_to_transcript[root + "/wavs/" + line.split("|")[0] + ".wav"] = ( line.split("|")[1] ) torch.save(path_to_transcript, cache_path) return torch.load(cache_path) def build_path_to_transcript_dict_thorsten_2022_10(re_cache=False): root = ( "/mount/resources/speech/corpora/ThorstenDatasets/ThorstenVoice-Dataset_2022.10" ) cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = dict() with open(root + "/metadata_train.csv", encoding="utf8") as f: transcriptions = f.read() with open(root + "/metadata_dev.csv", encoding="utf8") as f: transcriptions += "\n" + f.read() with open(root + "/metadata_test.csv", encoding="utf8") as f: transcriptions += "\n" + f.read() trans_lines = transcriptions.split("\n") for line in trans_lines: if line.strip() != "": path_to_transcript[root + "/wavs/" + line.split("|")[0] + ".wav"] = ( line.split("|")[1] ) torch.save(path_to_transcript, cache_path) return torch.load(cache_path) def build_path_to_transcript_dict_thorsten_emotional(re_cache=False): root = "/mount/resources/speech/corpora/ThorstenDatasets/thorsten-emotional_v02" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = dict() with open(root + "/thorsten-emotional-metadata.csv", encoding="utf8") as f: transcriptions = f.read() trans_lines = transcriptions.split("\n") for line in trans_lines: if line.strip() != "": path_to_transcript[root + "/amused/" + line.split("|")[0] + ".wav"] = ( line.split("|")[1] ) path_to_transcript[root + "/angry/" + line.split("|")[0] + ".wav"] = ( line.split("|")[1] ) path_to_transcript[ root + "/disgusted/" + line.split("|")[0] + ".wav" ] = line.split("|")[1] path_to_transcript[root + "/neutral/" + line.split("|")[0] + ".wav"] = ( line.split("|")[1] ) path_to_transcript[root + "/sleepy/" + line.split("|")[0] + ".wav"] = ( line.split("|")[1] ) path_to_transcript[ root + "/surprised/" + line.split("|")[0] + ".wav" ] = line.split("|")[1] torch.save(path_to_transcript, cache_path) return torch.load(cache_path) # FRENCH def build_path_to_transcript_dict_mls_french(re_cache=False): lang = "french" root = f"/mount/resources/speech/corpora/MultiLingLibriSpeech/mls_{lang}/train" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = ( build_path_to_transcript_dict_multi_ling_librispeech_template(root=root) ) torch.save(path_to_transcript, cache_path) return torch.load(cache_path) def build_path_to_transcript_dict_blizzard2023_ad_silence_removed(re_cache=False): root = "/mount/resources/speech/corpora/Blizzard2023/AD_silence_removed" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = dict() with open(os.path.join(root, "transcript.tsv"), "r", encoding="utf8") as file: lookup = file.read() for line in lookup.split("\n"): if line.strip() != "": norm_transcript = line.split("\t")[1] wav_path = os.path.join(root, line.split("\t")[0].split("/")[-1]) if os.path.exists(wav_path): path_to_transcript[wav_path] = ( norm_transcript.replace("§", "") .replace("#", "") .replace("~", "") .replace(" »", '"') .replace("« ", '"') .replace("»", '"') .replace("«", '"') ) torch.save(path_to_transcript, cache_path) return torch.load(cache_path) def build_path_to_transcript_dict_blizzard2023_neb_silence_removed(re_cache=False): root = "/mount/resources/speech/corpora/Blizzard2023/NEB_silence_removed" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = dict() with open(os.path.join(root, "transcript.tsv"), "r", encoding="utf8") as file: lookup = file.read() for line in lookup.split("\n"): if line.strip() != "": norm_transcript = line.split("\t")[1] wav_path = os.path.join(root, line.split("\t")[0].split("/")[-1]) if os.path.exists(wav_path): path_to_transcript[wav_path] = ( norm_transcript.replace("§", "") .replace("#", "") .replace("~", "") .replace(" »", '"') .replace("« ", '"') .replace("»", '"') .replace("«", '"') ) torch.save(path_to_transcript, cache_path) return torch.load(cache_path) def build_path_to_transcript_dict_blizzard2023_neb_e_silence_removed(re_cache=False): root = "/mount/resources/speech/corpora/Blizzard2023/enhanced_NEB_subset_silence_removed" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = dict() with open(os.path.join(root, "transcript.tsv"), "r", encoding="utf8") as file: lookup = file.read() for line in lookup.split("\n"): if line.strip() != "": norm_transcript = line.split("\t")[1] wav_path = os.path.join(root, line.split("\t")[0].split("/")[-1]) if os.path.exists(wav_path): path_to_transcript[wav_path] = ( norm_transcript.replace("§", "") .replace("#", "") .replace("~", "") .replace(" »", '"') .replace("« ", '"') .replace("»", '"') .replace("«", '"') ) torch.save(path_to_transcript, cache_path) return torch.load(cache_path) def build_path_to_transcript_dict_synpaflex_norm_subset(re_cache=False): """ Contributed by https://github.com/tomschelsen """ root = "/mount/resources/speech/corpora/synpaflex-corpus/5/v0.1/" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = dict() for text_path in glob.iglob( os.path.join(root, "**/*_norm.txt"), recursive=True ): with open(text_path, "r", encoding="utf8") as file: norm_transcript = file.read() path_obj = Path(text_path) wav_path = str( (path_obj.parent.parent / path_obj.name[:-9]).with_suffix(".wav") ) if Path(wav_path).exists(): path_to_transcript[wav_path] = norm_transcript torch.save(path_to_transcript, cache_path) return torch.load(cache_path) def build_path_to_transcript_dict_siwis_subset(re_cache=False): """ Contributed by https://github.com/tomschelsen """ root = "/mount/resources/speech/corpora/SiwisFrenchSpeechSynthesisDatabase/" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: # part4 and part5 are not segmented sub_dirs = ["part1", "part2", "part3"] path_to_transcript = dict() for sd in sub_dirs: for text_path in glob.iglob(os.path.join(root, "text", sd, "*.txt")): with open(text_path, "r", encoding="utf8") as file: norm_transcript = file.read() path_obj = Path(text_path) wav_path = str( ( path_obj.parent.parent.parent / "wavs" / sd / path_obj.stem ).with_suffix(".wav") ) if Path(wav_path).exists(): path_to_transcript[wav_path] = norm_transcript torch.save(path_to_transcript, cache_path) return torch.load(cache_path) def build_path_to_transcript_dict_css10fr(re_cache=False): language = "french" root = f"/mount/resources/speech/corpora/CSS10/{language}" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = dict() with open( f"/mount/resources/speech/corpora/CSS10/{language}/transcript.txt", encoding="utf8", ) as f: transcriptions = f.read() trans_lines = transcriptions.split("\n") for line in trans_lines: if line.strip() != "": path_to_transcript[ f"/mount/resources/speech/corpora/CSS10/{language}/{line.split('|')[0]}" ] = line.split("|")[2] torch.save(path_to_transcript, cache_path) return torch.load(cache_path) # SPANISH def build_path_to_transcript_dict_mls_spanish(re_cache=False): lang = "spanish" root = f"/mount/resources/speech/corpora/MultiLingLibriSpeech/mls_{lang}/train" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = ( build_path_to_transcript_dict_multi_ling_librispeech_template(root=root) ) torch.save(path_to_transcript, cache_path) return torch.load(cache_path) def build_path_to_transcript_dict_css10es(re_cache=False): language = "spanish" root = f"/mount/resources/speech/corpora/CSS10/{language}" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = dict() with open( f"/mount/resources/speech/corpora/CSS10/{language}/transcript.txt", encoding="utf8", ) as f: transcriptions = f.read() trans_lines = transcriptions.split("\n") for line in trans_lines: if line.strip() != "": path_to_transcript[ f"/mount/resources/speech/corpora/CSS10/{language}/{line.split('|')[0]}" ] = line.split("|")[2] torch.save(path_to_transcript, cache_path) return torch.load(cache_path) def build_path_to_transcript_dict_spanish_blizzard_train(re_cache=False): root = "/mount/resources/speech/corpora/Blizzard2021/spanish_blizzard_release_2021_v2/hub" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = dict() with open(os.path.join(root, "train_text.txt"), "r", encoding="utf8") as file: lookup = file.read() for line in lookup.split("\n"): if line.strip() != "": norm_transcript = line.split("\t")[1] wav_path = os.path.join(root, "train_wav", line.split("\t")[0] + ".wav") if os.path.exists(wav_path): path_to_transcript[wav_path] = norm_transcript torch.save(path_to_transcript, cache_path) return torch.load(cache_path) # PORTUGUESE def build_path_to_transcript_dict_mls_portuguese(re_cache=False): lang = "portuguese" root = f"/mount/resources/speech/corpora/MultiLingLibriSpeech/mls_{lang}/train" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = ( build_path_to_transcript_dict_multi_ling_librispeech_template(root=root) ) torch.save(path_to_transcript, cache_path) return torch.load(cache_path) # POLISH def build_path_to_transcript_dict_mls_polish(re_cache=False): lang = "polish" root = f"/mount/resources/speech/corpora/MultiLingLibriSpeech/mls_{lang}/train" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = ( build_path_to_transcript_dict_multi_ling_librispeech_template(root=root) ) torch.save(path_to_transcript, cache_path) return torch.load(cache_path) # ITALIAN def build_path_to_transcript_dict_mls_italian(re_cache=False): lang = "italian" root = f"/mount/resources/speech/corpora/MultiLingLibriSpeech/mls_{lang}/train" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = ( build_path_to_transcript_dict_multi_ling_librispeech_template(root=root) ) torch.save(path_to_transcript, cache_path) return torch.load(cache_path) # DUTCH def build_path_to_transcript_dict_mls_dutch(re_cache=False): lang = "dutch" root = f"/mount/resources/speech/corpora/MultiLingLibriSpeech/mls_{lang}/train" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = ( build_path_to_transcript_dict_multi_ling_librispeech_template(root=root) ) torch.save(path_to_transcript, cache_path) return torch.load(cache_path) def build_path_to_transcript_dict_css10nl(re_cache=False): language = "dutch" root = f"/mount/resources/speech/corpora/CSS10/{language}" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = dict() with open( f"/mount/resources/speech/corpora/CSS10/{language}/transcript.txt", encoding="utf8", ) as f: transcriptions = f.read() trans_lines = transcriptions.split("\n") for line in trans_lines: if line.strip() != "": path_to_transcript[ f"/mount/resources/speech/corpora/CSS10/{language}/{line.split('|')[0]}" ] = line.split("|")[2] torch.save(path_to_transcript, cache_path) return torch.load(cache_path) # GREEK def build_path_to_transcript_dict_css10el(re_cache=False): language = "greek" root = f"/mount/resources/speech/corpora/CSS10/{language}" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = dict() with open( f"/mount/resources/speech/corpora/CSS10/{language}/transcript.txt", encoding="utf8", ) as f: transcriptions = f.read() trans_lines = transcriptions.split("\n") for line in trans_lines: if line.strip() != "": path_to_transcript[ f"/mount/resources/speech/corpora/CSS10/{language}/{line.split('|')[0]}" ] = line.split("|")[2] torch.save(path_to_transcript, cache_path) return torch.load(cache_path) # FINNISH def build_path_to_transcript_dict_css10fi(re_cache=False): language = "finnish" root = f"/mount/resources/speech/corpora/CSS10/{language}" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = dict() with open( f"/mount/resources/speech/corpora/CSS10/{language}/transcript.txt", encoding="utf8", ) as f: transcriptions = f.read() trans_lines = transcriptions.split("\n") for line in trans_lines: if line.strip() != "": path_to_transcript[ f"/mount/resources/speech/corpora/CSS10/{language}/{line.split('|')[0]}" ] = line.split("|")[2] torch.save(path_to_transcript, cache_path) return torch.load(cache_path) # VIETNAMESE def build_path_to_transcript_dict_VIVOS_viet(re_cache=False): root = "/mount/resources/speech/corpora/VIVOS_vietnamese/train" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript_dict = dict() with open(root + "/prompts.txt", mode="r", encoding="utf8") as f: transcripts = f.read().split("\n") for transcript in transcripts: if transcript.strip() != "": parsed_line = transcript.split(" ") audio_file = f"{root}/waves/{parsed_line[0][:10]}/{parsed_line[0]}.wav" path_to_transcript_dict[audio_file] = " ".join(parsed_line[1:]).lower() torch.save(path_to_transcript_dict, cache_path) return torch.load(cache_path) def build_path_to_transcript_dict_vietTTS(re_cache=False): root = "/mount/resources/speech/corpora/VietTTS" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = dict() with open(root + "/meta_data.tsv", encoding="utf8") as f: transcriptions = f.read() for line in transcriptions.split("\n"): if line.strip() != "": parsed_line = line.split(".wav") audio_path = parsed_line[0] transcript = parsed_line[1] path_to_transcript[os.path.join(root, audio_path + ".wav")] = ( transcript.strip() ) torch.save(path_to_transcript, cache_path) return torch.load(cache_path) # CHINESE def build_path_to_transcript_dict_aishell3(re_cache=False): root = "/mount/resources/speech/corpora/aishell3/train" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript_dict = dict() with open(root + "/label_train-set.txt", mode="r", encoding="utf8") as f: transcripts = f.read().replace("$", "").replace("%", " ").split("\n") for transcript in transcripts: if transcript.strip() != "" and not transcript.startswith("#"): parsed_line = transcript.split("|") audio_file = f"{root}/wav/{parsed_line[0][:7]}/{parsed_line[0]}.wav" kanji = parsed_line[2] path_to_transcript_dict[audio_file] = kanji torch.save(path_to_transcript_dict, cache_path) return torch.load(cache_path) def build_path_to_transcript_dict_css10cmn(re_cache=False): language = "chinese" root = f"/mount/resources/speech/corpora/CSS10/{language}" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = dict() with open( "/mount/resources/speech/corpora/CSS10/chinese/transcript.txt", encoding="utf8", ) as f: transcriptions = f.read() trans_lines = transcriptions.split("\n") for line in trans_lines: if line.strip() != "": path_to_transcript[ "/mount/resources/speech/corpora/CSS10/chinese/" + line.split("|")[0] ] = line.split("|")[2] torch.save(path_to_transcript, cache_path) return torch.load(cache_path) # RUSSIAN def build_path_to_transcript_dict_css10ru(re_cache=False): language = "russian" root = f"/mount/resources/speech/corpora/CSS10/{language}" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = dict() with open( f"/mount/resources/speech/corpora/CSS10/{language}/transcript.txt", encoding="utf8", ) as f: transcriptions = f.read() trans_lines = transcriptions.split("\n") for line in trans_lines: if line.strip() != "": path_to_transcript[ f"/mount/resources/speech/corpora/CSS10/{language}/{line.split('|')[0]}" ] = line.split("|")[2] torch.save(path_to_transcript, cache_path) return torch.load(cache_path) # HUNGARIAN def build_path_to_transcript_dict_css10hu(re_cache=False): language = "hungarian" root = f"/mount/resources/speech/corpora/CSS10/{language}" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: path_to_transcript = dict() language = "hungarian" with open( f"/mount/resources/speech/corpora/CSS10/{language}/transcript.txt", encoding="utf8", ) as f: transcriptions = f.read() trans_lines = transcriptions.split("\n") for line in trans_lines: if line.strip() != "": path_to_transcript[ f"/mount/resources/speech/corpora/CSS10/{language}/{line.split('|')[0]}" ] = line.split("|")[2] torch.save(path_to_transcript, cache_path) return torch.load(cache_path) # OTHER def build_file_list_singing_voice_audio_database(re_cache=False): root = "/mount/resources/speech/corpora/singing_voice_audio_dataset/monophonic" cache_path = os.path.join(root, "pttd_cache.pt") if not os.path.exists(cache_path) or re_cache: file_list = list() for corw in os.listdir(root): for singer in os.listdir(os.path.join(root, corw)): for audio in os.listdir(os.path.join(root, corw, singer)): file_list.append(os.path.join(root, corw, singer, audio)) torch.save(file_list, cache_path) return torch.load(cache_path) from pathlib import Path import xml.etree.ElementTree as ET from csv import DictReader import json def build_path_to_transcript_dict_nst_norwegian(): root = "/resources/speech/corpora/NST_norwegian/pcm/cs" path_to_transcript = dict() audio_paths = sorted(list(Path(root).glob("*.pcm"))) i = 0 with open(Path(root, "SCRIPTS/CTTS_core"), encoding="latin-1") as f: for line in f: transcript = line.strip().replace("\xad", "") path = str(audio_paths[i].absolute()) path_to_transcript[path] = transcript i += 1 return path_to_transcript def build_path_to_transcript_dict_nst_swedish(): root = "/resources/speech/corpora/NST_swedish/sw_pcms" path_to_transcript = dict() audio_paths = sorted(list(Path(root, "mf").glob("*.pcm"))) audio_paths.insert(4154, None) audio_paths.insert(5144, None) i = 0 with open(Path(root, "scripts/mf/sw_all"), encoding="latin-1") as f: for line in f: if i == 4154 or i == 5144: i += 1 continue transcript = line.strip().replace("\xad", "") path = str(audio_paths[i].absolute()) path_to_transcript[path] = transcript i += 1 return path_to_transcript def build_path_to_transcript_dict_nchlt_afr(): root = "/resources/speech/corpora/nchlt_afr" return build_path_to_transcript_dict_nchlt_template(root, lang_code="afr") def build_path_to_transcript_dict_nchlt_nbl(): root = "/resources/speech/corpora/nchlt_nbl" return build_path_to_transcript_dict_nchlt_template(root, lang_code="nbl") def build_path_to_transcript_dict_nchlt_nso(): root = "/resources/speech/corpora/nchlt_nso" return build_path_to_transcript_dict_nchlt_template(root, lang_code="nso") def build_path_to_transcript_dict_nchlt_sot(): root = "/resources/speech/corpora/nchlt_sot" return build_path_to_transcript_dict_nchlt_template(root, lang_code="sot") def build_path_to_transcript_dict_nchlt_ssw(): root = "/resources/speech/corpora/nchlt_ssw" return build_path_to_transcript_dict_nchlt_template(root, lang_code="ssw") def build_path_to_transcript_dict_nchlt_tsn(): root = "/resources/speech/corpora/nchlt_tsn" return build_path_to_transcript_dict_nchlt_template(root, lang_code="tsn") def build_path_to_transcript_dict_nchlt_tso(): root = "/resources/speech/corpora/nchlt_tso" return build_path_to_transcript_dict_nchlt_template(root, lang_code="tso") def build_path_to_transcript_dict_nchlt_ven(): root = "/resources/speech/corpora/nchlt_ven" return build_path_to_transcript_dict_nchlt_template(root, lang_code="ven") def build_path_to_transcript_dict_nchlt_xho(): root = "/resources/speech/corpora/nchlt_xho" return build_path_to_transcript_dict_nchlt_template(root, lang_code="xho") def build_path_to_transcript_dict_nchlt_zul(): root = "/resources/speech/corpora/nchlt_zul" return build_path_to_transcript_dict_nchlt_template(root, lang_code="zul") def build_path_to_transcript_dict_nchlt_template(root, lang_code): path_to_transcript = dict() base_dir = Path(root).parent for split in ["trn", "tst"]: tree = ET.parse(f"{root}/transcriptions/nchlt_{lang_code}.{split}.xml") tree_root = tree.getroot() for rec in tree_root.iter("recording"): transcript = rec.find("orth").text if "[s]" in transcript: continue path = str(base_dir / rec.get("audio")) path_to_transcript[path] = transcript return path_to_transcript def build_path_to_transcript_dict_bibletts_akuapem_twi(): path_to_transcript = dict() root = "/resources/speech/corpora/BibleTTS/akuapem-twi" for split in ["train", "dev", "test"]: for book in Path(root, split).glob("*"): for textfile in book.glob("*.txt"): with open(textfile, "r", encoding="utf-8") as f: text = " ".join( [line.strip() for line in f] ) # should usually be only one line anyway path_to_transcript[textfile.with_suffix(".flac")] = text return path_to_transcript def build_path_to_transcript_dict_bembaspeech(): root = "/resources/speech/corpora/BembaSpeech/bem" path_to_transcript = dict() for split in ["train", "dev", "test"]: with open(Path(root, f"{split}.tsv"), "r", encoding="utf-8") as f: reader = DictReader(f, delimiter="\t") for row in reader: path_to_transcript[str(Path(root, "audio", row["audio"]))] = row[ "sentence" ] return path_to_transcript def build_path_to_transcript_dict_alffa_sw(): root = "/resources/speech/corpora/ALFFA/data_broadcastnews_sw/data" path_to_transcript = build_path_to_transcript_dict_kaldi_template( root=root, split="train", replace_in_path=("asr_swahili/data/", "") ) path_to_transcript.update( build_path_to_transcript_dict_kaldi_template( root=root, split="test", replace_in_path=("/my_dir/wav", "test/wav5") ) ) return path_to_transcript def build_path_to_transcript_dict_alffa_am(): root = "/resources/speech/corpora/ALFFA/data_readspeech_am/data" path_to_transcript = build_path_to_transcript_dict_kaldi_template( root=root, split="train", replace_in_path=("/home/melese/kaldi/data/", "") ) path_to_transcript.update( build_path_to_transcript_dict_kaldi_template( root=root, split="test", replace_in_path=("/home/melese/kaldi/data/", "") ) ) return path_to_transcript def build_path_to_transcript_dict_alffa_wo(): root = "/resources/speech/corpora/ALFFA/data_readspeech_wo/data" path_to_transcript = dict() for split in ["train", "dev", "test"]: with open(Path(root, split, "text"), "r", encoding="utf-8") as f: for line in f: line = line.strip().split() file = line[0] text = " ".join(line[1:]) number = file.split("_")[1] path_to_transcript[str(Path(root, split, number, f"{file}.wav"))] = text return path_to_transcript def build_path_to_transcript_dict_malayalam(): root = "/resources/speech/corpora/malayalam" path_to_transcript = dict() for gender in ["female", "male"]: with open(Path(root, f"line_index_{gender}.tsv"), "r", encoding="utf-8") as f: for line in f: file, text = line.strip().split("\t") path_to_transcript[str(Path(root, gender, f"{file}.wav"))] = text return path_to_transcript def build_path_to_transcript_dict_msc(): root = "/resources/speech/corpora/msc_reviewed_speech" path_to_transcript = dict() with open(Path(root, f"metadata.tsv"), "r", encoding="utf-8") as f: reader = DictReader(f, delimiter="\t") for row in reader: path_to_transcript[str(Path(root, row["speechpath"]))] = row["transcript"] return path_to_transcript def build_path_to_transcript_dict_chuvash(): root = "/resources/speech/corpora/chuvash" path_to_transcript = dict() for textfile in Path(root, "transcripts", "txt").glob("*.txt"): with open(textfile, "r", encoding="utf-8") as f: for line in f: line = line.strip().split() text = " ".join(line[1:]).replace("«", "").replace("»", "") path = Path( root, "audio", "split", f"trim_clean_{textfile.stem}.{line[0]}.flac" ) if path.exists(): path_to_transcript[str(path)] = text return path_to_transcript def build_path_to_transcript_dict_iban(): root = "/resources/speech/corpora/iban/data" path_to_transcript = build_path_to_transcript_dict_kaldi_template( root, "train", replace_in_path=("asr_iban/data/", "") ) path_to_transcript.update( build_path_to_transcript_dict_kaldi_template( root, "dev", replace_in_path=("asr_iban/data/", "") ) ) return path_to_transcript def build_path_to_transcript_dict_kaldi_template(root, split, replace_in_path=None): path_to_transcript = dict() wav_scp = {} with open(Path(root, split, "wav.scp"), "r") as f: for line in f: wav_id, wav_path = line.split() if replace_in_path: wav_path = wav_path.replace(replace_in_path[0], replace_in_path[1]) wav_scp[wav_id] = str(Path(root, wav_path)) with open(Path(root, split, "text"), "r", encoding="utf-8") as f: for line in f: line = line.split() wav_id = line[0] text = " ".join(line[1:]) if "<" in text: # ignore all utterance etc. continue path_to_transcript[wav_scp[wav_id]] = text return path_to_transcript def build_path_to_transcript_dict_sundanese_speech(): root = "/resources/speech/corpora/sundanese_speech/asr_sundanese" return build_path_to_transcript_dict_south_asian_languages_template(root) def build_path_to_transcript_dict_sinhala_speech(): root = "/resources/speech/corpora/sinhala_speech/asr_sinhala" return build_path_to_transcript_dict_south_asian_languages_template(root) def build_path_to_transcript_dict_bengali_speech(): root = "/resources/speech/corpora/bengali_speech/asr_bengali" return build_path_to_transcript_dict_south_asian_languages_template(root) def build_path_to_transcript_dict_nepali_speech(): root = "/resources/speech/corpora/nepali_speech/asr_nepali" return build_path_to_transcript_dict_south_asian_languages_template(root) def build_path_to_transcript_dict_javanese_speech(): root = "/resources/speech/corpora/javanese_speech/asr_javanese" return build_path_to_transcript_dict_south_asian_languages_template(root) def build_path_to_transcript_dict_south_asian_languages_template(root): path_to_transcript = dict() with open(Path(root, "utt_spk_text.tsv"), "r", encoding="utf-8") as f: for line in f: utt, spk, text = line.strip().split("\t") dir_tag = utt[:2] path_to_transcript[str(Path(root, "data", dir_tag, f"{utt}.flac"))] = text return path_to_transcript def build_path_to_transcript_dict_african_voices_kenyan_afv(): root = "/resources/speech/corpora/AfricanVoices/afv_enke" return build_path_to_transcript_dict_african_voices_template(root) def build_path_to_transcript_dict_african_voices_fon_alf(): root = "/resources/speech/corpora/AfricanVoices/fon_alf" return build_path_to_transcript_dict_african_voices_template(root) def build_path_to_transcript_dict_african_voices_hausa_cmv(): main_root = "/resources/speech/corpora/AfricanVoices" path_to_transcript = build_path_to_transcript_dict_african_voices_template( f"{main_root}/hau_cmv_f" ) path_to_transcript.update( build_path_to_transcript_dict_african_voices_template(f"{main_root}/hau_cmv_m") ) return path_to_transcript def build_path_to_transcript_dict_african_voices_ibibio_lst(): root = "/resources/speech/corpora/AfricanVoices/ibb_lst" return build_path_to_transcript_dict_african_voices_template(root) def build_path_to_transcript_dict_african_voices_kikuyu_opb(): root = "/resources/speech/corpora/AfricanVoices/kik_opb" return build_path_to_transcript_dict_african_voices_template(root) def build_path_to_transcript_dict_african_voices_lingala_opb(): root = "/resources/speech/corpora/AfricanVoices/lin_opb" return build_path_to_transcript_dict_african_voices_template(root) def build_path_to_transcript_dict_african_voices_ganda_cmv(): root = "/resources/speech/corpora/AfricanVoices/lug_cmv" return build_path_to_transcript_dict_african_voices_template(root) def build_path_to_transcript_dict_african_voices_luo_afv(): root = "/resources/speech/corpora/AfricanVoices/luo_afv" return build_path_to_transcript_dict_african_voices_template(root) def build_path_to_transcript_dict_african_voices_luo_opb(): root = "/resources/speech/corpora/AfricanVoices/luo_opb" return build_path_to_transcript_dict_african_voices_template(root) def build_path_to_transcript_dict_african_voices_swahili_llsti(): root = "/resources/speech/corpora/AfricanVoices/swa_llsti" return build_path_to_transcript_dict_african_voices_template(root) def build_path_to_transcript_dict_african_voices_suba_afv(): root = "/resources/speech/corpora/AfricanVoices/sxb_afv" return build_path_to_transcript_dict_african_voices_template(root) def build_path_to_transcript_dict_african_voices_wolof_alf(): root = "/resources/speech/corpora/AfricanVoices/wol_alf" return build_path_to_transcript_dict_african_voices_template(root) def build_path_to_transcript_dict_african_voices_yoruba_opb(): root = "/resources/speech/corpora/AfricanVoices/yor_opb" return build_path_to_transcript_dict_african_voices_template(root) def build_path_to_transcript_dict_african_voices_template(root): path_to_transcript = dict() with open(Path(root, "txt.done.data"), "r", encoding="utf-8") as f: for line in f: line = line.replace('\\"', "'").split('"') text = line[1] file = line[0].split()[-1] path_to_transcript[str(Path(root, "wav", f"{file}.wav"))] = text return path_to_transcript def build_path_to_transcript_dict_zambezi_voice_nyanja(): root = "/resources/speech/corpora/ZambeziVoice/nyanja/nya" return build_path_to_transcript_dict_zambezi_voice_template(root) def build_path_to_transcript_dict_zambezi_voice_lozi(): root = "/resources/speech/corpora/ZambeziVoice/lozi/loz" return build_path_to_transcript_dict_zambezi_voice_template(root) def build_path_to_transcript_dict_zambezi_voice_tonga(): root = "/resources/speech/corpora/ZambeziVoice/tonga/toi" return build_path_to_transcript_dict_zambezi_voice_template(root) def build_path_to_transcript_dict_zambezi_voice_template(root): path_to_transcript = dict() for split in ["train", "dev", "test"]: with open(Path(root, f"{split}.tsv"), "r", encoding="utf-8") as f: reader = DictReader(f, delimiter="\t") for row in reader: path_to_transcript[str(Path(root, "audio", row["audio_id"]))] = row[ "sentence" ].strip() return path_to_transcript def build_path_to_transcript_dict_fleurs_template(root): path_to_transcript = dict() for split in ["train", "dev", "test"]: with open(Path(root, f"{split}.tsv"), "r", encoding="utf-8") as f: reader = DictReader( f, delimiter="\t", fieldnames=[ "id", "filename", "transcription_raw", "transcription", "words", "speaker", "gender", ], ) for row in reader: path_to_transcript[str(Path(root, "audio", split, row["filename"]))] = ( row["transcription_raw"].strip() ) return path_to_transcript def build_path_to_transcript_dict_fleurs_afrikaans(): root = "/resources/speech/corpora/fleurs/af_za" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_amharic(): root = "/resources/speech/corpora/fleurs/am_et" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_arabic(): root = "/resources/speech/corpora/fleurs/ar_eg" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_assamese(): root = "/resources/speech/corpora/fleurs/as_in" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_asturian(): root = "/resources/speech/corpora/fleurs/ast_es" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_azerbaijani(): root = "/resources/speech/corpora/fleurs/az_az" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_belarusian(): root = "/resources/speech/corpora/fleurs/be_by" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_bulgarian(): root = "/resources/speech/corpora/fleurs/bg_bg" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_bengali(): root = "/resources/speech/corpora/fleurs/bn_in" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_bosnian(): root = "/resources/speech/corpora/fleurs/bs_ba" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_catalan(): root = "/resources/speech/corpora/fleurs/ca_es" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_cebuano(): root = "/resources/speech/corpora/fleurs/ceb_ph" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_sorani_kurdish(): root = "/resources/speech/corpora/fleurs/ckb_iq" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_mandarin(): root = "/resources/speech/corpora/fleurs/cmn_hans_cn" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_czech(): root = "/resources/speech/corpora/fleurs/cs_cz" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_welsh(): root = "/resources/speech/corpora/fleurs/cy_gb" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_danish(): root = "/resources/speech/corpora/fleurs/da_dk" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_german(): root = "/resources/speech/corpora/fleurs/de_de" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_greek(): root = "/resources/speech/corpora/fleurs/el_gr" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_english(): root = "/resources/speech/corpora/fleurs/en_us" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_spanish(): root = "/resources/speech/corpora/fleurs/es_419" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_estonian(): root = "/resources/speech/corpora/fleurs/et_ee" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_persian(): root = "/resources/speech/corpora/fleurs/fa_ir" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_fula(): root = "/resources/speech/corpora/fleurs/ff_sn" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_finnish(): root = "/resources/speech/corpora/fleurs/fi_fi" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_filipino(): root = "/resources/speech/corpora/fleurs/fil_ph" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_french(): root = "/resources/speech/corpora/fleurs/fr_fr" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_irish(): root = "/resources/speech/corpora/fleurs/ga_ie" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_galician(): root = "/resources/speech/corpora/fleurs/gl_es" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_gujarati(): root = "/resources/speech/corpora/fleurs/gu_in" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_hausa(): root = "/resources/speech/corpora/fleurs/ha_ng" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_hebrew(): root = "/resources/speech/corpora/fleurs/he_il" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_hindi(): root = "/resources/speech/corpora/fleurs/hi_in" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_croatian(): root = "/resources/speech/corpora/fleurs/hr_hr" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_hungarian(): root = "/resources/speech/corpora/fleurs/hu_hu" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_armenian(): root = "/resources/speech/corpora/fleurs/hy_am" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_indonesian(): root = "/resources/speech/corpora/fleurs/id_id" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_igbo(): root = "/resources/speech/corpora/fleurs/ig_ng" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_icelandic(): root = "/resources/speech/corpora/fleurs/is_is" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_italian(): root = "/resources/speech/corpora/fleurs/it_it" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_japanese(): root = "/resources/speech/corpora/fleurs/ja_jp" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_javanese(): root = "/resources/speech/corpora/fleurs/jv_id" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_georgian(): root = "/resources/speech/corpora/fleurs/ka_ge" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_kamba(): root = "/resources/speech/corpora/fleurs/kam_ke" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_kabuverdianu(): root = "/resources/speech/corpora/fleurs/kea_cv" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_kazakh(): root = "/resources/speech/corpora/fleurs/kk_kz" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_khmer(): root = "/resources/speech/corpora/fleurs/km_kh" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_kannada(): root = "/resources/speech/corpora/fleurs/kn_in" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_korean(): root = "/resources/speech/corpora/fleurs/ko_kr" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_kyrgyz(): root = "/resources/speech/corpora/fleurs/ky_kg" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_luxembourgish(): root = "/resources/speech/corpora/fleurs/lb_lu" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_ganda(): root = "/resources/speech/corpora/fleurs/lg_ug" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_lingala(): root = "/resources/speech/corpora/fleurs/ln_cd" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_lao(): root = "/resources/speech/corpora/fleurs/lo_la" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_lithuanian(): root = "/resources/speech/corpora/fleurs/lt_lt" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_luo(): root = "/resources/speech/corpora/fleurs/luo_ke" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_latvian(): root = "/resources/speech/corpora/fleurs/lv_lv" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_maori(): root = "/resources/speech/corpora/fleurs/mi_nz" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_macedonian(): root = "/resources/speech/corpora/fleurs/mk_mk" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_malayalam(): root = "/resources/speech/corpora/fleurs/ml_in" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_mongolian(): root = "/resources/speech/corpora/fleurs/mn_mn" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_marathi(): root = "/resources/speech/corpora/fleurs/mr_in" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_malay(): root = "/resources/speech/corpora/fleurs/ms_my" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_maltese(): root = "/resources/speech/corpora/fleurs/mt_mt" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_burmese(): root = "/resources/speech/corpora/fleurs/my_mm" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_norwegian(): root = "/resources/speech/corpora/fleurs/nb_no" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_nepali(): root = "/resources/speech/corpora/fleurs/ne_np" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_dutch(): root = "/resources/speech/corpora/fleurs/nl_nl" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_northern_sotho(): root = "/resources/speech/corpora/fleurs/nso_za" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_nyanja(): root = "/resources/speech/corpora/fleurs/ny_mw" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_occitan(): root = "/resources/speech/corpora/fleurs/oc_fr" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_oroma(): root = "/resources/speech/corpora/fleurs/om_et" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_oriya(): root = "/resources/speech/corpora/fleurs/or_in" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_punjabi(): root = "/resources/speech/corpora/fleurs/pa_in" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_polish(): root = "/resources/speech/corpora/fleurs/pl_pl" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_pashto(): root = "/resources/speech/corpora/fleurs/ps_af" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_portuguese(): root = "/resources/speech/corpora/fleurs/pt_br" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_romanian(): root = "/resources/speech/corpora/fleurs/ro_ro" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_russian(): root = "/resources/speech/corpora/fleurs/ru_ru" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_sindhi(): root = "/resources/speech/corpora/fleurs/sd_in" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_slovak(): root = "/resources/speech/corpora/fleurs/sk_sk" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_slovenian(): root = "/resources/speech/corpora/fleurs/sl_si" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_shona(): root = "/resources/speech/corpora/fleurs/sn_zw" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_somali(): root = "/resources/speech/corpora/fleurs/so_so" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_serbian(): root = "/resources/speech/corpora/fleurs/sr_rs" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_swedish(): root = "/resources/speech/corpora/fleurs/sv_se" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_swahili(): root = "/resources/speech/corpora/fleurs/sw_ke" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_tamil(): root = "/resources/speech/corpora/fleurs/ta_in" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_telugu(): root = "/resources/speech/corpora/fleurs/te_in" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_tajik(): root = "/resources/speech/corpora/fleurs/tg_tj" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_thai(): root = "/resources/speech/corpora/fleurs/th_th" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_turkish(): root = "/resources/speech/corpora/fleurs/tr_tr" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_ukrainian(): root = "/resources/speech/corpora/fleurs/uk_ua" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_umbundu(): root = "/resources/speech/corpora/fleurs/umb_ao" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_urdu(): root = "/resources/speech/corpora/fleurs/ur_pk" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_uzbek(): root = "/resources/speech/corpora/fleurs/uz_uz" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_vietnamese(): root = "/resources/speech/corpora/fleurs/vi_vn" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_wolof(): root = "/resources/speech/corpora/fleurs/wo_sn" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_xhosa(): root = "/resources/speech/corpora/fleurs/xh_za" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_yoruba(): root = "/resources/speech/corpora/fleurs/yo_ng" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_cantonese(): root = "/resources/speech/corpora/fleurs/yue_hant_hk" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_fleurs_zulu(): root = "/resources/speech/corpora/fleurs/zu_za" return build_path_to_transcript_dict_fleurs_template(root) def build_path_to_transcript_dict_living_audio_dataset_template(root): path_to_transcript = dict() tree = ET.parse(f"{root}/text.xml") tree_root = tree.getroot() for rec in tree_root.iter("recording_script"): for file in rec.iter("fileid"): path_to_transcript[ str(Path(root, "48000_orig", f'{file.get("id")}.wav')) ] = file.text.strip() return path_to_transcript def build_path_to_transcript_dict_living_audio_dataset_irish(): root = "/resources/speech/corpora/LivingAudioDataset/ga" return build_path_to_transcript_dict_living_audio_dataset_template(root) def build_path_to_transcript_dict_living_audio_dataset_dutch(): root = "/resources/speech/corpora/LivingAudioDataset/nl" return build_path_to_transcript_dict_living_audio_dataset_template(root) def build_path_to_transcript_dict_living_audio_dataset_russian(): root = "/resources/speech/corpora/LivingAudioDataset/ru" return build_path_to_transcript_dict_living_audio_dataset_template(root) def build_path_to_transcript_dict_romanian_db(): root = "/resources/speech/corpora/RomanianDB" path_to_transcript = dict() for split in ["training", "testing", "elena", "georgiana"]: for transcript in Path(root, split, "text").glob("*.txt"): subset = transcript.stem with open(transcript, "r", encoding="utf-8") as f: for line in f: fileid = line.strip()[:2] if len(fileid) == 2: fileid = "0" + fileid text = line.strip()[5:] if split == "elena": path = f"ele_{subset}_{fileid}.wav" elif split == "georgiana": path = f"geo_{subset}_{fileid}.wav" else: path = f"adr_{subset}_{fileid}.wav" path_to_transcript[str(Path(root, split, "wav", subset, path))] = ( text ) return path_to_transcript def build_path_to_transcript_dict_shemo(): root = "/resources/speech/corpora/ShEMO" path_to_transcript = dict() with open("/resources/speech/corpora/ShEMO/shemo.json", "r", encoding="utf-8") as f: data = json.load(f) for fileid, file_info in data.items(): path = Path(root, file_info["gender"], f"{fileid}.wav") if path.exists(): path_to_transcript[str(path)] = file_info["transcript"] return path_to_transcript def build_path_to_transcript_dict_mslt_template(root, lang="en"): path_to_transcript = dict() for split in Path(root).glob("*"): if split.is_dir(): for audio_file in split.glob("*.wav"): text_file = str(audio_file).replace(f"T0.{lang}.wav", f"T1.{lang}.snt") with open(text_file, "r", encoding="utf-16") as f: for line in f: text = line.strip() # should have only one line if "<" in text or "[" in text: # ignore all utterances with special parts like [laughter] or continue path_to_transcript[str(audio_file)] = text break return path_to_transcript def build_path_to_transcript_dict_mslt_english(): root = "/resources/speech/corpora/MSLT/Data/EN" return build_path_to_transcript_dict_mslt_template(root, lang="en") def build_path_to_transcript_dict_mslt_japanese(): root = "/resources/speech/corpora/MSLT/Data/JA" return build_path_to_transcript_dict_mslt_template(root, lang="jp") def build_path_to_transcript_dict_mslt_chinese(): root = "/resources/speech/corpora/MSLT/Data/ZH" return build_path_to_transcript_dict_mslt_template(root, lang="ch") def build_path_to_transcript_dict_rajasthani_hindi_speech(): root = "/resources/speech/corpora/Rajasthani_Hindi_Speech/Hindi-Speech-Data" path_to_transcript = dict() for audio_file in Path(root).glob("*.3gp"): with open(audio_file.with_suffix(".txt"), "r", encoding="utf-8") as f: for line in f: # should only be one line text = line.strip() path_to_transcript[str(audio_file)] = text return path_to_transcript def build_path_to_transcript_dict_cmu_arctic(): root = "/resources/speech/corpora/cmu_arctic" path_to_transcript = dict() for speaker_dir in Path(root).glob("*"): if speaker_dir.is_dir(): with open( Path(speaker_dir, "etc", "txt.done.data"), "r", encoding="utf-8" ) as f: for line in f: line = line.replace('\\"', "'").split('"') text = line[1] file = line[0].split()[-1] path_to_transcript[str(Path(speaker_dir, "wav", f"{file}.wav"))] = ( text ) return path_to_transcript def build_path_to_transcript_dict_sevil_tatar(): root = "/resources/speech/corpora/sevil_tatar/sevil" path_to_transcript = dict() with open(Path(root, "metadata.jsonl"), "r", encoding="utf-8") as f: for line in f: meta = json.loads(line) path_to_transcript[str(Path(root, meta["file"]))] = ( meta["orig_text"].strip().replace("\xad", "") ) return path_to_transcript def build_path_to_transcript_dict_clartts(): root = "/resources/speech/corpora/ClArTTS" path_to_transcript = dict() with open(Path(root, "training.txt"), "r", encoding="utf-16") as f: for line in f: fileid, transcript = line.strip().split("|") path_to_transcript[str(Path(root, "wav", "train", f"{fileid}.wav"))] = ( transcript ) with open(Path(root, "validation.txt"), "r", encoding="utf-16") as f: for line in f: fileid, transcript = line.strip().split("|") path_to_transcript[str(Path(root, "wav", "val", f"{fileid}.wav"))] = ( transcript ) return path_to_transcript def build_path_to_transcript_dict_snow_mountain_template(root, lang): path_to_transcript = dict() for split in ["train_full", "val_full", "test_common"]: with open( Path(root, "experiments", lang, f"{split}.csv"), "r", encoding="utf-8" ) as f: reader = DictReader(f, delimiter=",") for row in reader: path = row["path"].replace("data/", f"{root}/") path_to_transcript[path] = row["sentence"].strip() return path_to_transcript def build_path_to_transcript_dict_snow_mountain_bhadrawahi(): root = "/resources/speech/corpora/snow_mountain" language = "bhadrawahi" return build_path_to_transcript_dict_snow_mountain_template(root, language) def build_path_to_transcript_dict_snow_mountain_bilaspuri(): root = "/resources/speech/corpora/snow_mountain" language = "bilaspuri" return build_path_to_transcript_dict_snow_mountain_template(root, language) def build_path_to_transcript_dict_snow_mountain_dogri(): root = "/resources/speech/corpora/snow_mountain" language = "dogri" return build_path_to_transcript_dict_snow_mountain_template(root, language) def build_path_to_transcript_dict_snow_mountain_gaddi(): root = "/resources/speech/corpora/snow_mountain" language = "gaddi" return build_path_to_transcript_dict_snow_mountain_template(root, language) def build_path_to_transcript_dict_snow_mountain_haryanvi(): root = "/resources/speech/corpora/snow_mountain" language = "haryanvi" return build_path_to_transcript_dict_snow_mountain_template(root, language) def build_path_to_transcript_dict_snow_mountain_hindi(): root = "/resources/speech/corpora/snow_mountain" language = "hindi" return build_path_to_transcript_dict_snow_mountain_template(root, language) def build_path_to_transcript_dict_snow_mountain_kangri(): root = "/resources/speech/corpora/snow_mountain" language = "kangri" return build_path_to_transcript_dict_snow_mountain_template(root, language) def build_path_to_transcript_dict_snow_mountain_kannada(): root = "/resources/speech/corpora/snow_mountain" language = "kannada" return build_path_to_transcript_dict_snow_mountain_template(root, language) def build_path_to_transcript_dict_snow_mountain_kulvi(): root = "/resources/speech/corpora/snow_mountain" language = "kulvi" return build_path_to_transcript_dict_snow_mountain_template(root, language) def build_path_to_transcript_dict_snow_mountain_kulvi_outer_seraji(): root = "/resources/speech/corpora/snow_mountain" language = "kulvi_outer_seraji" return build_path_to_transcript_dict_snow_mountain_template(root, language) def build_path_to_transcript_dict_snow_mountain_malayalam(): root = "/resources/speech/corpora/snow_mountain" language = "malayalam" return build_path_to_transcript_dict_snow_mountain_template(root, language) def build_path_to_transcript_dict_snow_mountain_mandeali(): root = "/resources/speech/corpora/snow_mountain" language = "mandeali" return build_path_to_transcript_dict_snow_mountain_template(root, language) def build_path_to_transcript_dict_snow_mountain_pahari_mahasui(): root = "/resources/speech/corpora/snow_mountain" language = "pahari_mahasui" return build_path_to_transcript_dict_snow_mountain_template(root, language) def build_path_to_transcript_dict_snow_mountain_tamil(): root = "/resources/speech/corpora/snow_mountain" language = "tamil" return build_path_to_transcript_dict_snow_mountain_template(root, language) def build_path_to_transcript_dict_snow_mountain_telugu(): root = "/resources/speech/corpora/snow_mountain" language = "telugu" return build_path_to_transcript_dict_snow_mountain_template(root, language) def build_path_to_transcript_dict_ukrainian_lada(): root = "/resources/speech/corpora/ukrainian_lada/dataset_lada/accept" path_to_transcript = dict() with open(Path(root, "metadata.jsonl"), "r", encoding="utf-8") as f: for line in f: meta = json.loads(line) path_to_transcript[str(Path(root, meta["file"]).with_suffix(".wav"))] = ( meta["orig_text"].strip().replace("\xad", "") ) return path_to_transcript def build_path_to_transcript_dict_m_ailabs_template(root): path_to_transcript = dict() for gender_dir in Path(root).glob("*"): if not gender_dir.is_dir(): continue for speaker_dir in gender_dir.glob("*"): if not speaker_dir.is_dir(): continue if (speaker_dir / "wavs").exists(): with open( Path(speaker_dir, "metadata.csv"), "r", encoding="utf-8" ) as f: for line in f: fileid, text, text_norm = line.strip().split("|") path = Path(speaker_dir, "wavs", f"{fileid}.wav") if path.exists(): path_to_transcript[str(path)] = text_norm else: for session_dir in speaker_dir.glob("*"): if not session_dir.is_dir(): continue with open( Path(session_dir, "metadata.csv"), "r", encoding="utf-8" ) as f: for line in f: fileid, text, text_norm = line.strip().split("|") path = Path(session_dir, "wavs", f"{fileid}.wav") if path.exists(): path_to_transcript[str(path)] = text_norm return path_to_transcript def build_path_to_transcript_dict_m_ailabs_german(): root = "/resources/speech/corpora/m-ailabs-speech/de_DE" return build_path_to_transcript_dict_m_ailabs_template(root) def build_path_to_transcript_dict_m_ailabs_uk_english(): root = "/resources/speech/corpora/m-ailabs-speech/en_UK" return build_path_to_transcript_dict_m_ailabs_template(root) def build_path_to_transcript_dict_m_ailabs_us_english(): root = "/resources/speech/corpora/m-ailabs-speech/en_US" return build_path_to_transcript_dict_m_ailabs_template(root) def build_path_to_transcript_dict_m_ailabs_spanish(): root = "/resources/speech/corpora/m-ailabs-speech/es_ES" return build_path_to_transcript_dict_m_ailabs_template(root) def build_path_to_transcript_dict_m_ailabs_french(): root = "/resources/speech/corpora/m-ailabs-speech/fr_FR" return build_path_to_transcript_dict_m_ailabs_template(root) def build_path_to_transcript_dict_m_ailabs_italian(): root = "/resources/speech/corpora/m-ailabs-speech/it_IT" return build_path_to_transcript_dict_m_ailabs_template(root) def build_path_to_transcript_dict_m_ailabs_polish(): root = "/resources/speech/corpora/m-ailabs-speech/pl_PL" return build_path_to_transcript_dict_m_ailabs_template(root) def build_path_to_transcript_dict_m_ailabs_russian(): root = "/resources/speech/corpora/m-ailabs-speech/ru_RU" return build_path_to_transcript_dict_m_ailabs_template(root) def build_path_to_transcript_dict_m_ailabs_ukrainian(): root = "/resources/speech/corpora/m-ailabs-speech/uk_UK" return build_path_to_transcript_dict_m_ailabs_template(root) def build_path_to_transcript_dict_cml_tts_template(root): path_to_transcript = dict() for split in ["train", "dev", "test"]: with open(Path(root, f"{split}.csv"), "r", encoding="utf-8") as f: reader = DictReader(f, delimiter="|") for row in reader: path_to_transcript[str(Path(root, row["wav_filename"]))] = row[ "transcript" ].strip() return path_to_transcript def build_path_to_transcript_dict_cml_tts_dutch(): root = "/resources/speech/corpora/cml_tts/cml_tts_dataset_dutch_v0.1" return build_path_to_transcript_dict_cml_tts_template(root) def build_path_to_transcript_dict_cml_tts_french(): root = "/resources/speech/corpora/cml_tts/cml_tts_dataset_french_v0.1" return build_path_to_transcript_dict_cml_tts_template(root) def build_path_to_transcript_dict_cml_tts_german(): root = "/resources/speech/corpora/cml_tts/cml_tts_dataset_german_v0.1" return build_path_to_transcript_dict_cml_tts_template(root) def build_path_to_transcript_dict_cml_tts_italian(): root = "/resources/speech/corpora/cml_tts/cml_tts_dataset_italian_v0.1" return build_path_to_transcript_dict_cml_tts_template(root) def build_path_to_transcript_dict_cml_tts_polish(): root = "/resources/speech/corpora/cml_tts/cml_tts_dataset_polish_v0.1" return build_path_to_transcript_dict_cml_tts_template(root) def build_path_to_transcript_dict_cml_tts_portuguese(): root = "/resources/speech/corpora/cml_tts/cml_tts_dataset_portuguese_v0.1" return build_path_to_transcript_dict_cml_tts_template(root) def build_path_to_transcript_dict_cml_tts_spanish(): root = "/resources/speech/corpora/cml_tts/cml_tts_dataset_spanish_v0.1" return build_path_to_transcript_dict_cml_tts_template(root) def build_path_to_transcript_dict_mms_template( lang, root="/resources/speech/corpora/mms_synthesized_bible_speech" ): path_to_transcript = dict() i = 0 with open(Path(root, "bible_texts", f"{lang}.txt"), "r", encoding="utf-8") as f: for line in f: path = Path(root, "bible_audios", lang, f"{i}.wav") if path.exists(): path_to_transcript[str(path)] = line.strip() i += 1 return path_to_transcript def build_path_to_transcript_dict_shan(): root = "D:\\Work\\Developer\\ShanTTS\Datasets\\asr-dataset" path_to_transcript_dict = dict() with open(Path(root, "metadata.csv"), mode="r", encoding="utf-8") as f: reader = DictReader( f, delimiter=",", fieldnames=[ "file_name", "transcription", ], ) for row in reader: path_to_transcript_dict[str(Path(root, row["file_name"]))] = row[ "transcription" ].strip() return path_to_transcript_dict if __name__ == "__main__": pass