from argparse import ArgumentParser from pathlib import Path import numpy as np from scipy.io import wavfile from textgrid import TextGrid from tqdm.auto import tqdm from .config import FLAGS parser = ArgumentParser() parser.add_argument("-o", "--output-dir", type=Path, required=True) args = parser.parse_args() files = sorted(FLAGS.data_dir.glob("*.TextGrid")) for fn in tqdm(files): tg = TextGrid.fromFile(str(fn.resolve())) wav_fn = FLAGS.data_dir / f"{fn.stem}.wav" sr, y = wavfile.read(wav_fn) y = np.copy(y) for phone in tg[1]: mark = phone.mark.strip().lower() if len(mark) == 0: mark = "sil" if mark in FLAGS.special_phonemes: l = int(phone.minTime * sr) r = int(phone.maxTime * sr) y[l:r] = 0 out_file = args.output_dir / f"{fn.stem}.wav" wavfile.write(out_file, sr, y)