Trước khi ai đó hét vào mặt tôi, tôi hoàn toàn nhận ra rằng câu hỏi này đã được hỏi rất nhiều lần. Tôi đảm bảo với bạn rằng tôi đã đọc qua các câu hỏi và câu trả lời hiện có nhưng tôi vẫn bối rối về một phần của vấn đề.
Tôi có một nguồn âm thanh phát nhạc (A) trong môi trường kín. Tôi có mic mà tôi đang sử dụng để ghi A. Tôi còn lại hai tệp wav có cùng đặc điểm và độ dài (số lượng mẫu).
Mục tiêu của tôi là tính thời gian để A đạt mic.
Tôi đang cố gắng thực hiện tính toán bằng cách sử dụng tương quan chéo (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))
Tôi luôn đạt được các giá trị trong phạm vi 300.000 cm. Khoảng cách giữa loa và mic là khoảng 2 feet.
Đây là tất cả khá mới đối với tôi vì vậy tôi chắc chắn rằng tôi đang thiếu một cái gì đó rõ ràng.
Cảm ơn trước.
numpy.correlate
thay vìnumpy.convolve
? Để ước tính độ trễ, bạn muốn tương quan chéo các tín hiệu của mình, không kết hợp chúng. Bạn có thể sẽ kết thúc với một độ trễ lớn hơn nhiều bằng cách kết hợp.