def _get_synced_timings_global(self, slide_data, original_audio, slide_audio, samplerate): global_offset = correlate.get_offset(original_audio, slide_audio, samplerate) logger.info("Found offset %s", global_offset) updated_slides = [] for slide_time, slide_name in slide_data.items(): slide_time = slide_time - global_offset updated_slides.append((slide_time, slide_name)) return sorted(updated_slides)
def work(f1, f2): print "Loading first audio..." file1_audio, file1_orig_sr = utils.get_audio_from_file(f1) print "Preprocessing first audio..." file1_audio, file1_sr = sync.preprocess_audio(file1_audio, file1_orig_sr, bandpass=False) print "Loading second audio..." file2_audio, file2_orig_sr = utils.get_audio_from_file(f2) print "Preprocessing second audio..." file2_audio, file2_sr = sync.preprocess_audio(file2_audio, file2_orig_sr, bandpass=False) print file1_sr, " - ", file2_sr global_offset = correlate.get_offset(file1_audio, file2_audio, file1_sr) print "Found offset", global_offset
def find_offset(target, source, source_offset): """ Finds piece of source file around source_offset in target file target - File in which to match the piece (file path or (numpy array, samplerate) tuple of preprocessed samples) source - File to extract piece of file from (file path or (numpy array, samplerate) tuple of preprocessed samples) source_offset - offset of piece of interest in source file (in seconds) Returns offset in target file in seconds """ if isinstance(target, basestring): logger.debug("Target file passed as filepath, loading...") target_audio, target_samplerate = utils.get_audio_from_file(target) target_audio, target_samplerate = preprocess_audio( target_audio, target_samplerate) logger.debug("Loaded.") else: target_audio, target_samplerate = target if isinstance(source, basestring): logger.debug("Source file passed as filepath, loading...") source_audio, source_samplerate = utils.get_audio_from_file(source) source_audio, source_samplerate = preprocess_audio( source_audio, source_samplerate) logger.debug("Done.") else: source_audio, source_samplerate = source assert target_samplerate == source_samplerate # Take 20 second stretch of audio to look for correlation start_index = max(0, (source_offset * source_samplerate) - ((WINDOW_SIZE * source_samplerate) / 2)) end_index = min( len(source_audio) - 1, (source_offset * source_samplerate) + ((WINDOW_SIZE * source_samplerate) / 2)) source_slice = source_audio[start_index:end_index] offset, correlation = correlate.get_offset(source_slice, target_audio, source_samplerate) return offset