我有一个工具,它逐帧比较两个音频 wav 文件并返回一个等级,该等级给出了两个文件之间的相似度。
我有一个原始的 wav 文件和一个 wav 文件的录音,因为这两个文件几乎相似,所以我应该得到很高的相似度,但我得到的分数很差,主要是由于录制的文件前导有非常轻微的延迟帧不匹配
我的问题是 - 我如何使用 MATLAB 准确对齐两个音频文件,以便可以进行有效的帧到帧比较。
您应该运行一系列比较,及时移动一个帧并计算两者之间的相关性。相关性的最高值将为您提供波浪之间的时间偏移。
我认为你可以使用xcorr
来实现这一点。
遇到同样的问题,但没有成功找到一个简单的工具来自动同步视频/音频录制的开始,我决定做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