는 내가이 타임 스탬프의 두 배열 사이의 오프셋을 찾고 싶어요. 두 개의 오디오 트랙에서 경고음이 발생한다고 가정 해 보겠습니다.타임 스탬프 배열에 상호 상관을 사용하는 것이 합리적입니까?
참고 : 두 트랙 중 하나에 여분 또는 부족한 온셋이있을 수 있습니다.
나는 유망 보았다 상호 상관 (예를 들어, https://dsp.stackexchange.com/questions/736/how-do-i-implement-cross-correlation-to-prove-two-audio-files-are-similar)에 대한 정보를 발견했다.I는 각 오디오 트랙의 지속 기간 10 초라고 가정하고, 44.1 kHz의 샘플링 속도는 "구형파"의 피크와 경고음 온셋을 표현 :
import numpy as np
rfft = np.fft.rfft
irfft = np.fft.irfft
track_1 = np.array([..., 5.2, 5.5, 7.0, ...])
# The onset in track_2 at 8.0 is "extra," it has no
# corresponding onset in track_1
track_2 = np.array([..., 7.2, 7.45, 8.0, 9.0, ...])
frequency = 44100
num_samples = 10 * frequency
wave_1 = np.zeros(num_samples)
wave_1[(track_1 * frequency).astype(int)] = 1
wave_2 = np.zeros(num_samples)
wave_2[(track_2 * frequency).astype(int)] = 1
xcor = irfft(rfft(wave_1) * np.conj(rfft(wave_2)))
offset = xcor.argmax()
이 방법은 아니다 특히 빠르지 만 상당히 낮은 주파수에서도 상당히 일관된 결과를 얻을 수있었습니다. 그러나 ... 나는 이것이 좋은 생각인지 전혀 모른다! 상호 상관보다이 오프셋을 찾는 더 좋은 방법이 있습니까?
편집는 : 누락 추가 온셋에 대한 메모를 추가했다.
당신은'track_1'하고 불규칙한 간격, 다음 frequency''곱해'track_2'을 보여줍니다. 당신이 상관 관계를 위해 노력하고 타임 스탬프 있어야'track_1'와'track_2'가, 아니면 그들은 경고음이 추가없이 오디오 파형 있어야된다? 또는 그들이 "삐"의 발병시기입니까? – Brian
'track_1'과'track_2'는 각 경고음의 시작 시간입니다. 'wave_1'과'wave_2'는 교차 상관 관계를 찾는 목적으로 Dirac 델타 함수를 합한 것입니다. – user1475412