1

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

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

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

4

2 回答 2

5

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

我认为你可以使用xcorr来实现这一点。

于 2011-11-22T04:25:57.187 回答
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
于 2021-02-19T22:11:59.563 回答