def get_audio_analysis(song_url):
if(song_url is None):
return None, None, None, None, None
urlretrieve(song_url, "current.mp3")
y, sr = librosa.load("./current.mp3")
# Tempo = beats/minute
tempo, beats = librosa.beat.beat_track(y=y, sr=sr)
# pitch = Frequency
pitches, magnitudes = librosa.piptrack(y=y, sr=sr,
fmax=1000, hop_length=1000)
pitches, magnitudes = extract_max(pitches, magnitudes, pitches.shape)
y[abs(y) < 10**-2] = 0
y = np.trim_zeros(y)
json = {
'sound_wave': np.array(y[:len(pitches)]).tolist(),
'pitch': pitches
}
y_harm, y_per = librosa.effects.hpss(y)
harm, perc = audio_fingerprint(y_harm), audio_fingerprint(y_per)
pitch_ave = np.average(pitches)
return float(tempo), float(pitch_ave), float(harm), float(perc), json
评论列表
文章目录