通过librosa分析音乐获取节拍的时间轴数据,代码如下:
import librosa
import numpy as np
# 加载音频文件
y, sr = librosa.load('music.mp3')
# 检测节拍
tempo, beat_frames = librosa.beat.beat_track(y=y, sr=sr)
# 将帧转换为时间
#beat_times = librosa.frames_to_time(beat_frames, sr=sr)
beat_times = np.round(librosa.frames_to_time(beat_frames, sr=sr), decimals=2)
print(f"Estimated tempo: {tempo}")
print("Beat times:")
print(beat_times)
# 检测音乐起始点
onset_env = librosa.onset.onset_strength(y=y, sr=sr)
onset_frames = librosa.onset.onset_detect(onset_envelope=onset_env, sr=sr)
onset_times = librosa.frames_to_time(onset_frames, sr=sr)
print("Onset times:")
print(onset_times)
网友回复


