name:
src/python/clips.py
-rw-r--r--
1261
1import warnings
2import glob
3warnings.filterwarnings("ignore")
4from fingerprinter.reader import read_single
5from etc.util import get_args_for_input_output_directories, get_file_name
6from random import randint
7from scipy.io.wavfile import write
8
9
10DESCRIPTION = """
11Pull random 1-second clips from every .wav file in a given directory (-d), and output them to another directory (-o).
12All filenames will be in the format "{episode}.{play_head}.wav", e.g. "s01e01.555.wav"
13"""
14CLIP_LENGTH_SECONDS = 16
15
16
17if __name__ == "__main__":
18 args = get_args_for_input_output_directories(DESCRIPTION)
19 print("Loading cutting clips from .wav files in directory {}".format(args.directory))
20 working_directory = args.directory
21 output_directory = args.output
22 for filename in glob.glob(working_directory + "*.wav"):
23 print("Cutting clip for {}".format(filename))
24 episode_name = get_file_name(filename)
25 channel, frame_rate = read_single(filename)
26 index_of_clip = randint(0, len(channel) - frame_rate)
27 one_second_clip = channel[index_of_clip:index_of_clip + (CLIP_LENGTH_SECONDS * frame_rate)]
28 output_file_path = "{}/{}.{}.wav".format(output_directory, episode_name, (index_of_clip / frame_rate))
29 write(output_file_path, frame_rate, one_second_clip)