首页 > 解决方案 > 比较 2 个相同的音频文件以在 python 中找到它们之间的延迟

问题描述

我正在尝试比较包含大约相同音频(来自 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 个图:

图片

如您所见,这两个样本非常相似但不一样(正如预期的那样,因为硬件限制和与我的声音的实际距离)。

所以现在,我需要获取这些数组,并以某种方式比较它们以找到它们之间的延迟。我想我知道它是如何完成的,但我的首要任务是找出如何使两个图表具有相同的比例。因为第一个数组值从 -3 跳到 3(y 轴),而第二个数组值从 -1.5 跳到 1.5(y 轴),如果它们不在同一个比例范围内,我该如何比较它们?

那么,我应该如何进行呢?

谢谢你。

标签: pythonarraysaudiowavmicrophone

解决方案


推荐阅读