精确对齐两个wav文件

时间:2011-11-22 04:17:43

标签: matlab audio wav waveform

我有一个工具可以逐帧比较两个音频wav文件,并返回一个等级,给出两个文件之间的相似程度。

我有一个原始的wav文件和wav文件的录音,因为这两个文件几乎相似,我应该得到高分相似,但我得分很差,主要是由于记录的一个非常小的延迟文件导致帧不匹配

我的问题是 - 如何使用MATLAB精确对齐两个音频文件,以便进行有效的帧到帧比较。

2 个答案:

答案 0 :(得分:5)

您应该进行一系列比较,及时移动其中一个帧并计算两者之间的相关性。最高的相关值将为您提供波浪之间的时间转换。

我认为您可以使用xcorr来实现此目标。

答案 1 :(得分:0)

遇到同样的问题并且没有成功找到一个简单的工具来自动同步视频/音频录制的开始, 我决定制作syncstart (github)。

它是一个基于 python 的命令行工具,用于计算使录音同步所需的剪切。

它使用基于 fft 的开始相关性。

基本代码应该很容易转换为matlab:

corr = fft.ifft(fft.fft(s1pad)*np.conj(fft.fft(s2pad)))
ca = np.absolute(corr)
xmax = np.argmax(ca)
if xmax > padsize // 2:
    offset = (padsize-xmax)/fs
    #second signal (s2) to cut
else:
    offset = xmax/fs
    #first signal (s1) to cut