Spaces:
Running
on
Zero
Running
on
Zero
import argparse | |
import json | |
import os | |
import soundfile as sf | |
from tqdm import tqdm | |
def get_mouth_path(in_mouth_dir, wav_file, spk, data_type): | |
wav_file = wav_file.replace(".wav", "").split("_") | |
if spk == "s1": | |
file_path = os.path.join( | |
in_mouth_dir, "{}_{}.npz".format(wav_file[0], wav_file[1]) | |
) | |
else: | |
file_path = os.path.join( | |
in_mouth_dir, "{}_{}.npz".format(wav_file[3], wav_file[4]) | |
) | |
return file_path | |
def preprocess_one_dir(in_data_dir, out_dir, data_type, spk): | |
"""Create .json file for one condition.""" | |
file_infos = [] | |
in_dir = os.path.abspath(os.path.join(in_data_dir, data_type, spk)) | |
wav_list = os.listdir(in_dir) | |
wav_list.sort() | |
for wav_file in tqdm(wav_list): | |
if not wav_file.endswith(".wav"): | |
continue | |
wav_path = os.path.join(in_dir, wav_file) | |
samples = sf.SoundFile(wav_path) | |
if spk == "mix": | |
file_infos.append((wav_path, len(samples))) | |
else: | |
file_infos.append( | |
( | |
wav_path, | |
# get_mouth_path(os.path.join(in_data_dir, data_type, 'mouths'), wav_file, spk, data_type), | |
len(samples), | |
) | |
) | |
if not os.path.exists(os.path.join(out_dir, data_type)): | |
os.makedirs(os.path.join(out_dir, data_type)) | |
with open(os.path.join(out_dir, data_type, spk + ".json"), "w") as f: | |
json.dump(file_infos, f, indent=4) | |
def preprocess_lrs2_audio(inp_args): | |
"""Create .json files for all conditions.""" | |
speaker_list = ["mix", "s1", "s2"] | |
for data_type in ["tr", "cv", "tt"]: | |
for spk in speaker_list: | |
preprocess_one_dir( | |
inp_args.in_dir, inp_args.out_dir, data_type, spk, | |
) | |
if __name__ == "__main__": | |
parser = argparse.ArgumentParser("LRS2 audio data preprocessing") | |
parser.add_argument( | |
"--in_dir", | |
type=str, | |
default=None, | |
help="Directory path of audio including tr, cv and tt", | |
) | |
parser.add_argument( | |
"--out_dir", type=str, default=None, help="Directory path to put output files" | |
) | |
args = parser.parse_args() | |
print(args) | |
preprocess_lrs2_audio(args) | |