同步两个音乐曲目

信息处理 声音的 音乐 同步
2022-02-23 07:06:24

我想同步两个不同的音乐曲目(并保持同步),就像 DJ 使用两张唱片一样。

到目前为止,我已经为每首歌曲映射了节拍,因此我能够调整它们的速率并相应地调整它们的时间。但我发现,有许多样本曲目,由于歌曲的节奏不保持恒定,这两个曲目会在一段时间后不同步。我已经尝试通过定期检查歌曲的节奏并重新调整它们的速率来补偿这一点,以便它们在下一个小节开始时再次同步。

是否有同步两个音乐曲目的通用(或更好)方法?

3个回答

我建议您仔细查看此出版物:

MATCH:音乐对齐工具箱

使用在线时间扭曲实时跟踪音乐表演

简而言之,算法如下:

  • 提取信号的时间特征(Audio Spectral Flatness、MFCC's、Onset 等)。
  • 使用带有一些约束的动态时间规整,即路径必须单调递增并且有界。
  • 将翘曲应用于信号,您就完成了。

该算法可能有点矫枉过正,因为它主要用于同步不同艺术家播放的两首相同歌曲。尽管您可以成功地使用它(在我的情况下工作)来执行轨道之间的时间对齐。

部分实现请参考:

比赛下载

Vamp 插件- 您可能需要安装Sonic Visualizer

好吧,这取决于两个轨道的音频信号有多相似。我不知道这两条轨道是否相同,在一定程度的误差或噪音内,以及在一定程度的时间对齐内,但不知何故,以对你的模型或你的问题很重要的方式,你必须有一个措施的东西在两个信号对齐。

所以让

ax(t)=f{x(t)}

ay(t)=f{y(t)}

定义您要同步的内容的东西。所以你想找到一个延迟偏移,最大化τax(t)ay(t)

Rxy(τ)=+ax(t+τ2)ay(tτ2)w(t) dt

使用您最喜欢的任何窗口函数找到最大化w(t)0τRxy(τ)

所以我不会告诉你如何使用离散时间代码来做到这一点。你要弄清楚这一点。

您可能需要找出最小的公分母,不仅是速度,还有和弦进行和旋律。您可以对从中提取的两个轨迹向量进行互相关。