我想实现一种同步两个音频轨道的算法。

两个轨道非常相似;您可以想象它们是来自同一房间中两个麦克风的两个声音录音(不一定是音乐)。这意味着它们表现为通过两个不同(线性)通道并具有不同加性噪声的信号。

我知道第一个想法可能是寻找它们的互相关峰值,但是我在寻找有关该主题的文献时特别有趣,但是我能找到的所有论文都是同步两个音乐曲目(使用基于色度的音频功能),或者将音频与乐谱同步。他们还假设可能存在时间扭曲,这对我而言是不必要的假设。

#1 楼

当要对齐的音轨是使用不同乐器的同一材料的两种演奏时,将使用基于色度的方法-在这种情况下,您需要找到“最低公分母”,即和声,旋律,和弦进行等。色度适合那-他们完全抽象了音色,录音技术。但是您不需要这种情况。

您已经猜到了,原始音频的互相关将是1 /对噪声不是很稳健,2 /对换能器差异不是很稳健(两个麦克风的响应可能有很大不同)3 /如果要听几分钟的音频,则成本会非常高。来自两个信号的MFCC向量。这样一来,您将具有较低的尺寸,并且对噪声和换能器中的差异更具鲁棒性。
可选地对MFCC进行归一化(“按设计”系数0比系数1的方差更大,依此类推...) ...理想情况下,您希望MFCC矩阵的每一行都具有方差1。
计算沿时间轴获得的两个矩阵的互相关(也就是说,计算2D互相关并保留时间轴的数据。)


评论


$ \ begingroup $
有趣的方法。您可以从MFCC分析中获得哪种时间分辨率?这受光谱分辨率的限制吗?
$ \ endgroup $
–希尔马
2012年2月12日在1:04

$ \ begingroup $
海报没有说他期望哪个分辨率。这种方法仅限于MFCC分析的分辨率,通常以每秒50到100帧的速度完成。这对于涉及语音和“日常音频”的应用程序就足够了(例如,在视频编辑中来自多个非TCed摄像机的对准);可能不是音乐。为了获得更高的分辨率,我建议使用MFCC进行“粗粒度”对齐,以在+/- 10ms(FFT帧的持续时间)处获得对齐;然后每10s左右从两个来源采集100ms的音频块;并使用它们进行详尽的匹配。
$ \ endgroup $
–小食
2012年12月12日4:33



$ \ begingroup $
实际上,互相关方法通常对噪声不敏感。声音的非噪声部分的互相关将在互相关中产生尖峰。另一方面,由于噪声是随机的,因此一个记录中的噪声不太可能以任何特定的方式与另一记录中的任何内容相关,因此只会在互相关中产生更多的噪声。与尖峰相比,此噪声非常微弱,因此定位尖峰时的精度几乎不受影响。
$ \ endgroup $
–你好再见
16年1月1日在10:11

$ \ begingroup $
我对此是否有所不同持怀疑态度;您可能仍然会在互相关中获得尖峰,尽管可能会稍微平移,但在这种情况下,这可能是由换能器之一的延迟引起的。但是,如果您有这样的延迟,我看不出MFCC在此方面有何改进。
$ \ endgroup $
–你好再见
16年2月1日在10:23

$ \ begingroup $
最后,即使您有几分钟的音频,使用FFT也可以非常有效地计算互相关。我怀疑从两个信号中提取MFCC向量序列会花费更长的时间。
$ \ endgroup $
–你好再见
16年1月1日在10:27