def load_labeled_intervals(filename, delimiter=r'\s+'): ''' overwrites https://github.com/craffel/mir_eval/blob/master/mir_eval/io.py#L208 ends of intervals are not used later in evaluation, vut are needed for sanity check ''' # Use our universal function to load in the events starts, ends, labels = load_delimited_variants(filename, delimiter) if ends is None: # add ends filename_base = remove_extension(filename); filename_wav = filename_base + '.wav' if not os.path.isfile(filename_wav): dir = '' while not os.path.isfile(filename_wav): dir = raw_input('cannot find {} \n Please enter folder where the wav file is:'.format(filename_wav)) filename_wav = os.path.join(dir, os.path.basename(filename_wav)) duration = get_duration_audio(filename_wav) # generate end timestamps from following start timestamps # duration = starts[-1] + 1 # fake last word to be 1 sec long ends = starts[1:]; ends = np.append(ends, duration) starts, ends, labels = remove_dot_tokens(starts, ends, labels) # special words '.' are discarded # Stack into an interval matrix intervals = np.array([starts, ends]).T # Validate them, but throw a warning in place of an error try: util.validate_intervals(intervals) except ValueError as error: warnings.warn(error.args[0]) return intervals, labels
def load_labeled_intervals(filename, delimiter=r'\s+'): ''' overwrites https://github.com/craffel/mir_eval/blob/master/mir_eval/io.py#L208 in order to be able to change the converters arguments of load_delimieted to handle , instead of . in floating point vals ''' # Use our universal function to load in the events converter_comma = lambda val: float(val.replace(',', '.')) # replace ',' by '.' try: # start times and end times given starts, ends, labels = load_delimited(filename, [converter_comma, converter_comma, str], delimiter) except Exception as e: # only start times given starts, labels = load_delimited(filename, [converter_comma, str], delimiter) filename_wav = filename[:-9] + '.wav' # remove .refs.lab and replace it with .wav. TODO make this logic clearer if os.path.isfile(filename_wav): duration = get_duration_audio(filename_wav) # generate end timestamps from following start timestamps else: duration = starts[-1] + 1 # fake last word to be 1 sec long ends = starts[1:]; ends.append(duration) # Stack into an interval matrix intervals = np.array([starts, ends]).T # Validate them, but throw a warning in place of an error try: util.validate_intervals(intervals) except ValueError as error: warnings.warn(error.args[0]) return intervals, labels
def load_labeled_intervals(filename, delimiter=r'\s+'): ''' overwrites https://github.com/craffel/mir_eval/blob/master/mir_eval/io.py#L208 ends of intervals are not used later in evaluation, vut are needed for sanity check ''' # Use our universal function to load in the events starts, ends, labels = load_delimited_variants(filename, delimiter) if ends is None: # add ends filename_base = remove_extension(filename) filename_wav = filename_base + '.wav' if not os.path.isfile(filename_wav): dir = '' while not os.path.isfile(filename_wav): dir = raw_input( 'cannot find {} \n Please enter folder where the wav file is:' .format(filename_wav)) filename_wav = os.path.join(dir, os.path.basename(filename_wav)) duration = get_duration_audio( filename_wav ) # generate end timestamps from following start timestamps # duration = starts[-1] + 1 # fake last word to be 1 sec long ends = starts[1:] ends = np.append(ends, duration) starts, ends, labels = remove_dot_tokens( starts, ends, labels) # special words '.' are discarded # Stack into an interval matrix intervals = np.array([starts, ends]).T # Validate them, but throw a warning in place of an error try: util.validate_intervals(intervals) except ValueError as error: warnings.warn(error.args[0]) return intervals, labels