누군가 나에게 소리 치기 전에이 질문이 여러 번 요청되었다는 것을 완전히 알고 있습니다. 기존 질문과 답변을 읽었지만 문제의 일부에 대해 여전히 혼란 스럽습니다.
닫힌 환경에서 음악 (A)을 재생하는 음원이 있습니다. A를 녹음하는 데 사용하는 마이크가 있습니다. 동일한 특성과 길이 (샘플 수)를 공유하는 두 개의 wav 파일이 남아 있습니다.
내 목표는 A가 마이크에 도달하는 데 걸린 시간을 계산하는 것입니다.
교차 상관 (numpy)을 사용하여 계산을 수행하려고합니다.
# Delay estimation
corr = numpy.convolve(original_audio, recorded_audio, 'full')
delay = int(len(corr)/2) - numpy.argmax(corr)
distance = delay / sample_rate * 343 # sample_rate == 22050, m/s = speed of sound
print("Distance full: %.2f cm" % (distance * 100))
300,000 cm 범위의 값을 일관되게 얻습니다. 스피커와 마이크 사이의 거리는 약 2 피트입니다.
이것은 나에게 아주 새로운 것이므로 분명한 것이 빠져 있다고 확신합니다.
미리 감사드립니다.
PeterK가 올바른 것 같습니다. 입력 중 하나를 먼저 시간 역전시키고 활용함으로써 컨볼 루션을 통해 상관 관계를 구현할 수 있습니다. 이를 통해 상관 관계 분석에 빠른 컨볼 루션 알고리즘 (예 : 오버랩 저장)을 사용할 수 있습니다.
—
Jason R
numpy.correlate
대신에 사용해서는 안numpy.convolve
됩니까? 지연을 추정하려면 신호를 상호 연관시키지 말고 상호 상관 시키십시오. 당신은 아마도 더 큰 지연으로 끝날 것입니다.