如何使用C++获取音乐BPM(音乐节奏分析)?

我需要在我的C++程序中内置BPM识别的功能,需要读取ogg文件。 在反复查询Google和Github后,我发现了Python的librora和au…
关注者
8
被浏览
999

5 个回答

librosa和aubio底层都是用ffmpeg来读取压缩音频文件的。

SoundTouch 库可以检测 BPM。传送门: SoundTouch Sound Processing Library

SoundTouch 可以改变速度(tempo)、音高(pitch)、回放速度(playback rate)。音乐以拍每分钟(beats per minute,简写为 BPM)作为速度的单位。频率高、波长短,则音"高";反之,频率低、波长长,则音"低"。

SoundTouch 主要提供了 WAV 未压缩的音频格式处理和节奏检测,是 ogg 文件的话用 libogg 解码处理。

  1. 重新设定歌曲的 BPM 改变歌曲速度,不改变音高。
  2. 改变歌曲的音高,但不改变速度。
  3. 直接加速或者减速使得音高和速度同时改变。比如以2倍速播放音乐。音高变高,且播放时间变短。
  4. 检测歌曲的 BPM 值。提供命令行去修改。