通过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)
网友回复