Мне нужно найти энергию пиков с помощью Librosa, чтобы я мог обнаружить первую долю каждого такта.
Я использую Librosa для обнаружения звуковых битов в треке кликов. Это работает хорошо, но теперь я хочу обнаружить первую долю каждого такта. Я считаю, что лучший способ сделать это — определить энергию или высоту каждого удара.
В настоящее время я записываю все удары в массив. Как определить первую долю каждого такта?
def findPeaks(inputFile):
print(">>> Finding peaks...\n")
y, sr = librosa.load(inputFile)
onset_env = librosa.onset.onset_strength(
y=y, sr=sr, hop_length=512, aggregate=np.median
)
global inputTrackPeaks # array of peaks
inputTrackPeaks = librosa.util.peak_pick(onset_env, 3, 3, 3, 5, 0.5, 10)
inputTrackPeaks = librosa.frames_to_time(inputTrackPeaks, sr=sr)
inputTrackPeaks = inputTrackPeaks * 1000 # convert array to milliseconds
print("Peak positions (ms): \n", inputTrackPeaks)