ก่อนที่ทุกคนจะตะโกนใส่ฉันฉันก็ตระหนักว่าคำถามนี้ถูกถามมาหลายครั้งแล้ว ฉันรับรองว่าฉันได้อ่านคำถามและคำตอบที่มีอยู่แล้ว แต่ฉันยังสับสนเกี่ยวกับปัญหา
ฉันมีแหล่งกำเนิดเสียงที่เล่นเพลง (A) ในสภาพแวดล้อมที่ปิด ฉันมีไมโครโฟนที่ฉันใช้บันทึก A. ฉันเหลือไฟล์ wav สองไฟล์ซึ่งมีลักษณะและความยาวเท่ากัน (จำนวนตัวอย่าง)
เป้าหมายของฉันคือคำนวณเวลาที่ใช้ในการเข้าถึงไมโครโฟน
ฉันพยายามคำนวณโดยใช้ความสัมพันธ์ข้าม (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 ซม. ระยะห่างระหว่างลำโพงและไมโครโฟนประมาณ 2 ฟุต
ทั้งหมดนี้เป็นเรื่องใหม่สำหรับฉันดังนั้นฉันแน่ใจว่าฉันขาดอะไรบางอย่างที่ชัดเจน
ขอบคุณล่วงหน้า.
numpy.correlate
แทนnumpy.convolve
? ในการประมาณความล่าช้าคุณต้องการเชื่อมโยงสัญญาณของคุณไม่ใช่เชื่อมโยงสัญญาณเหล่านั้น คุณจะจบลงด้วยความล่าช้าที่มากขึ้นโดยการชักจูง