2016-09-05 34 views
1

我一直在尋找到處,但還沒有找到任何關於 audio featureSpotify API的文檔,以加深我對這個問題的理解。Spotify - 尋找沉默在軌道

就我而言,它學習到segments音頻,barsbeatssample ratesfade ins and outskeystimbremodetime_signaturetempo

我至今是:

def analysis_url(track_ids): 

    names = [] 
    tids = [] 

    for id_ in track_ids: 
     track_id = sp.track(id_)['uri'] 
     tids.append(track_id) 
     track_name = sp.track(id_)['name'] 
     names.append(track_name) 

    features = sp.audio_features(tids) 

    urls = [x['analysis_url'] for x in features if x] 

    for url in urls: 
     analysis = sp._get(url) 

我想要做的是找到沉默在一個軌道,如電子音樂'下降'。

我該怎麼做,使用analysis_url

回答

0

分析來自一家名爲EchoNest的公司,該公司前段時間被Spotify收購。你可以找到分析文件here

段包括loudness_max值,它指示該特定音樂部分的相對響度(以db爲單位)。標準化在歌曲的價值,並尋找具有低相對響度段:

def normalize_loudness(filename): 
    d = json.load(open(filename, 'r')) 
    x = [_['start'] for _ in d['segments']] 
    l = [_['loudness_max'] for _ in d['segments']] 
    min_l = min(l) 
    max_l = max(l) 
    norm_l = [(_ - min_l)/(max_l - min_l) for _ in l] 
    return (x, norm_l) 

恐慌的歌曲「傑克遜小姐」使用這個!在迪斯科,我們就可以繪製歸一化的響度值:

import json 
from matplotlib import pyplot as pp 

x, norm_l = normalize_loudness('msJackson.json') 
pp.plot(x, norm_l, 'o') 
pp.show() 
exit() 

產量:

Miss Jackson

有了,你可以很容易地找到在音樂的低點:

print([x[i] for i in range(len(x)) if norm_l[i] < .1]) 
[0.0, 165.86036] 
+0

驚人。謝謝。 –