我有一个工具可以逐帧比较两个音频wav文件,并返回一个等级,给出两个文件之间的相似程度。
我有一个原始的wav文件和wav文件的录音,因为这两个文件几乎相似,我应该得到高分相似,但我得分很差,主要是由于记录的一个非常小的延迟文件导致帧不匹配
我的问题是 - 如何使用MATLAB精确对齐两个音频文件,以便进行有效的帧到帧比较。
答案 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