def _pick_seeds_cqt(self, cqt, cqt_freqs, samples):
"""Compute a CQT.
Parameters
----------
cqt : np.array [n_samples, n_freqs]
Log amplitude CQT.
freqs : np.array [n_freqs]
CQT frequencies.
samples : np.array [n_samples]
CQT time stamps.
Returns
-------
seeds : np.array [n_seeds, 2]
Array of time, frequency seeds
"""
seeds = []
for i, freq in enumerate(cqt_freqs):
freq_band = cqt[i, :]
freq_band_smooth = self._moving_average(freq_band)
peak_locs = librosa.util.peak_pick(
freq_band_smooth, self.pre_max, self.post_max, self.pre_avg,
self.post_avg, self.delta, self.wait
)
if len(peak_locs) > 0:
peak_locs = peak_locs[
(freq_band[peak_locs] > self.peak_thresh)
]
for peak_loc in peak_locs:
sample = samples[peak_loc]
seeds.append([sample, freq])
seeds = np.array(seeds)
return seeds
评论列表
文章目录