Antes de que alguien me grite, me doy cuenta de que esta pregunta se ha hecho en numerosas ocasiones. Le aseguro que he leído las preguntas y respuestas existentes, pero todavía estoy confundido acerca de parte del problema.
Tengo una fuente de sonido que reproduce música (A) en un entorno cerrado. Tengo un micrófono que estoy usando para grabar A. Me quedan dos archivos wav que comparten las mismas características y longitud (número de muestras).
Mi objetivo es calcular el tiempo que le tomó a A alcanzar el micrófono.
Estoy tratando de realizar el cálculo usando correlación cruzada (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))
Constantemente obtengo valores en el rango de 300,000 cm. La distancia entre el altavoz y el micrófono es de aproximadamente 2 pies.
Todo esto es bastante nuevo para mí, así que estoy seguro de que me falta algo obvio.
Gracias por adelantado.
fuente
numpy.correlate
lugar denumpy.convolve
? Para estimar el retraso, desea hacer una correlación cruzada de sus señales, no convolucionarlas. Posiblemente terminará con un retraso mucho mayor por convolucionarse.Respuestas:
¿Estás seguro de que no deberías estar usando en
numpy.correlate
lugar denumpy.convolve
? Para estimar el retraso, desea hacer una correlación cruzada de sus señales, no convolucionarlas. Posiblemente terminará con un retraso mucho mayor por convolucionarse.Intentando algo simple:
fuente