コード例 #1
0
ファイル: slide_syncer.py プロジェクト: izacus/slidesync
    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)
コード例 #2
0
ファイル: sync_test.py プロジェクト: izacus/slidesync
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
コード例 #3
0
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