Сравнение 2 одинаковых аудиофайлов для определения задержки между ними в python - PullRequest
0 голосов
/ 19 марта 2020

Я пытаюсь сравнить 2 аудиофайла, которые содержат примерно одинаковые аудиозаписи (с 2 разных микрофонов), и пытаюсь найти задержку между ними. Вот мой поток программ:

t1 = threading.Thread(target=audio_to_wav, args=(wav1, 1, _rec_time_,))
t2 = threading.Thread(target=audio_to_wav, args=(wav2, 2, _rec_time_,))
t1.start()
t2.start()
t1.join()
t2.join()

Во-первых, я записываю один и тот же звук с 2 разных микрофонов и сохраняю его в 2 файлах wav. (потому что это 2 разных микрофона и аппаратное обеспечение не одинаковое, а расстояние между микрофонами и мной не одинаково, я ожидаю некоторой задержки от одного микрофона по сравнению с другим.

 arr1, smp1 = wav_to_arr(wav1)
 arr2, smp2 = wav_to_arr(wav2)

 def wav_to_arr(file):
 samplerate, sound = wavfile.read(file)
 arr = numpy.array(separate_array(sound), dtype=numpy.float64)
 return arr, samplerate

затем я конвертирую каждый wav-файл в массив. (частота дискретизации фиксирована: 44100)

здесь 2 графика каждого массива:

image

Как вы можете видеть, 2 сэмпла очень похожи, но не одинаковы (как и следовало ожидать из-за аппаратных ограничений и фактического расстояния до моего голоса).

так что теперь мне нужно возьмите эти массивы и сравните их как-нибудь, чтобы найти задержку между ними. Я думаю, я знаю, как это делается, но моя первая задача - выяснить, как сделать оба графика одинаковыми по масштабу. потому что первый массив значения переходят от -3 до 3 (ось y), а для второго значения переходят от -1,5 до 1,5 (ось y), если они не в одном и том же масштабе, как я могу их сравнить?

Итак, как мне действовать?

Спасибо.

...