Я пытаюсь сравнить 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 графика каждого массива:
Как вы можете видеть, 2 сэмпла очень похожи, но не одинаковы (как и следовало ожидать из-за аппаратных ограничений и фактического расстояния до моего голоса).
так что теперь мне нужно возьмите эти массивы и сравните их как-нибудь, чтобы найти задержку между ними. Я думаю, я знаю, как это делается, но моя первая задача - выяснить, как сделать оба графика одинаковыми по масштабу. потому что первый массив значения переходят от -3 до 3 (ось y), а для второго значения переходят от -1,5 до 1,5 (ось y), если они не в одном и том же масштабе, как я могу их сравнить?
Итак, как мне действовать?
Спасибо.