跳转至

音乐节拍检测

什么是节拍

节拍(beat)是音乐在时间上的基本单位,它指强拍和弱拍的组合规律。如每隔一个弱拍出现一个强拍时是一种节拍,每隔两个弱拍出现一个强拍时是另一种节拍。当我们在听一首歌时,总会不自觉的摇头晃脑,或跟着节奏抖腿,或击掌打拍子,这些动作的时刻点,对应到音乐的时间里,就是节拍了。

应用方向

  • 音频可视化:如根据音频的节拍变换切换视频场景

  • 游戏方向:如节奏大师、beatmaps

  • 音乐风格化:如QQ音乐的超嗨DJ

节拍检测算法

  • Onset检测

音符起始点检测(onset detection)是音乐信号处理中非常重要的一个算法。节拍和速度(tempo)的检测都会基于音符起始点的检测。Onset一般发生在 能量/音高/音色 改变的时刻,一般情况下也是能量变大的时刻。这块主要涉及到的方法有:时域分析,计算能量函数,通过计算波形文件的能量累积,找到突变点。但是多声部曲子因为有多个乐器演奏很难通过能量函数突变来找到起始点。

  • 动态规划

通过构建动态规划模型,求解后获得音频节拍。例如开源的librosa采用节拍检测算法librosa.beat.beat_track,就是基于动态规划算法实现的。

  • 深度学习

越来越多的深度学习已经在节拍检测上表现出更大的优势,通过训练深度学习模型,对节拍(beat)和重拍(downbeat)进行了检测。

能力介绍

芒果自研音乐节拍检测算法先使用MIR技术计算歌曲的特征信息,包括BPM、Beat、DownBeat、Chord、TimeSignature以及副歌时间点,然后以此信息为基础,设定混音规则和选取混音采样,通过规则和采样的不同组合得到几个不同的混音模板;在歌曲的播放过程中,先对原始歌曲进行变速处理,再通过设定的模板以及歌曲beat信息实时生成需要进行混音的各Loop音轨数据,然后通过一定的调制方式将生成的音轨数据与原始数据进行混合;最后针对混合的数据进行全局调制得到最后输出的电音歌曲。

功能特性

  • 支持对节拍(beat)和重拍(downbeat)的完美探测
  • 人声较强节拍弱的音频部分也有很好的表现

参数说明

参数名称 参数标识 参数类型 参数说明
输入音频 inputAudio 字符串 string 输入音频的路径
算法类型 algorithm 字符串 string 节拍探测算法
节拍文件 rhythm 字符串 string 节拍数据文件

使用方法

注意事项

参考文献

  1. Ellis, Daniel PW. “Beat tracking by dynamic programming.” Journal of New Music Research 36.1 (2007): 51-60
  2. QQ音乐超嗨DJ之节拍检测算法